This commit is contained in:
Mohamed Karray
2018-10-26 16:38:28 +02:00
95 changed files with 3785 additions and 1338 deletions

View File

@@ -16,9 +16,12 @@ import Permissions from "../permissions/containers/Permissions";
import type {History} from "history";
import EditNavLink from "../components/EditNavLink";
import BranchRoot from "./BranchRoot";
import BranchRoot from "./ChangesetsRoot";
import ChangesetView from "./ChangesetView";
import PermissionsNavLink from "../components/PermissionsNavLink";
import Sources from "../sources/containers/Sources";
import RepositoryNavLink from "../components/RepositoryNavLink";
import { getRepositoriesLink } from "../../modules/indexResource";
type Props = {
namespace: string,
@@ -26,9 +29,10 @@ type Props = {
repository: Repository,
loading: boolean,
error: Error,
repoLink: string,
// dispatch functions
fetchRepo: (namespace: string, name: string) => void,
fetchRepo: (link: string, namespace: string, name: string) => void,
deleteRepo: (repository: Repository, () => void) => void,
// context props
@@ -39,9 +43,9 @@ type Props = {
class RepositoryRoot extends React.Component<Props> {
componentDidMount() {
const { fetchRepo, namespace, name } = this.props;
const { fetchRepo, namespace, name, repoLink } = this.props;
fetchRepo(namespace, name);
fetchRepo(repoLink, namespace, name);
}
stripEndingSlash = (url: string) => {
@@ -115,6 +119,19 @@ class RepositoryRoot extends React.Component<Props> {
path={`${url}/changeset/:id`}
render={() => <ChangesetView repository={repository} />}
/>
<Route
path={`${url}/sources`}
exact={true}
render={() => (
<Sources repository={repository} baseUrl={`${url}/sources`} />
)}
/>
<Route
path={`${url}/sources/:revision/:path*`}
render={() => (
<Sources repository={repository} baseUrl={`${url}/sources`} />
)}
/>
<Route
path={`${url}/changesets`}
render={() => (
@@ -141,11 +158,20 @@ class RepositoryRoot extends React.Component<Props> {
<Navigation>
<Section label={t("repository-root.navigation-label")}>
<NavLink to={url} label={t("repository-root.information")} />
<NavLink
activeOnlyWhenExact={false}
<RepositoryNavLink
repository={repository}
linkName="changesets"
to={`${url}/changesets/`}
label={t("repository-root.history")}
activeWhenMatch={this.matches}
activeOnlyWhenExact={false}
/>
<RepositoryNavLink
repository={repository}
linkName="sources"
to={`${url}/sources`}
label={t("repository-root.sources")}
activeOnlyWhenExact={false}
/>
<EditNavLink repository={repository} editUrl={`${url}/edit`} />
<PermissionsNavLink
@@ -170,19 +196,21 @@ const mapStateToProps = (state, ownProps) => {
const repository = getRepository(state, namespace, name);
const loading = isFetchRepoPending(state, namespace, name);
const error = getFetchRepoFailure(state, namespace, name);
const repoLink = getRepositoriesLink(state);
return {
namespace,
name,
repository,
loading,
error
error,
repoLink
};
};
const mapDispatchToProps = dispatch => {
return {
fetchRepo: (namespace: string, name: string) => {
dispatch(fetchRepo(namespace, name));
fetchRepo: (link: string, namespace: string, name: string) => {
dispatch(fetchRepo(link, namespace, name));
},
deleteRepo: (repository: Repository, callback: () => void) => {
dispatch(deleteRepo(repository, callback));