diff --git a/scm-ui/ui-webapp/public/locales/de/repos.json b/scm-ui/ui-webapp/public/locales/de/repos.json index e425f54eb9..04cb77f025 100644 --- a/scm-ui/ui-webapp/public/locales/de/repos.json +++ b/scm-ui/ui-webapp/public/locales/de/repos.json @@ -49,13 +49,17 @@ }, "create": { "title": "Repository hinzufügen", - "createSubtitle": "Neues Repository erstellen", - "importSubtitle": "Bestehendes Repository importieren", - "importUrl": "Remote repository url", + "subtitle": "Neues Repository erstellen" + }, + "import": { + "subtitle": "Bestehendes Repository importieren", + "importUrl": "Remote Repository URL", "username": "Benutzername", "password": "Passwort", - "createButton": "Neues Repository erstellen", - "importButton": "Repository importieren" + "pending": { + "subtitle": "Repository wird importiert...", + "infoText": "Ihr Repository wird gerade importiert. Dies kann einen Moment dauern. Sie werden weitergeleitet, sobald der Import abgeschlossen ist. Wenn Sie diese Seite verlassen, können Sie nicht zurückkehren, um den Import-Status zu erfahren." + } }, "branches": { "overview": { @@ -167,7 +171,9 @@ "submitCreate": "Speichern", "submitImport": "Importieren", "initializeRepository": "Repository initiieren", - "dangerZone": "Umbenennen und Löschen" + "dangerZone": "Umbenennen und Löschen", + "createButton": "Neues Repository erstellen", + "importButton": "Repository importieren" }, "sources": { "fileTree": { diff --git a/scm-ui/ui-webapp/public/locales/en/repos.json b/scm-ui/ui-webapp/public/locales/en/repos.json index 362a5e7241..835eceaff1 100644 --- a/scm-ui/ui-webapp/public/locales/en/repos.json +++ b/scm-ui/ui-webapp/public/locales/en/repos.json @@ -45,17 +45,22 @@ "title": "Repositories", "subtitle": "Overview of available repositories", "noRepositories": "No repositories found.", - "createButton": "Add Repository" + "createButton": "Add repository" }, "create": { "title": "Add Repository", - "createSubtitle": "Create a new repository", - "importSubtitle": "Import existing repository", + "subtitle": "Create a new repository", + "createButton": "Create new repository" + }, + "import": { + "subtitle": "Import existing repository", "importUrl": "Remote repository url", "username": "Username", "password": "Password", - "createButton": "Create new repository", - "importButton": "Import repository" + "pending": { + "subtitle": "Importing Repository...", + "infoText": "Your repository is currently being imported. This may take a moment. You will be forwarded as soon as the import is finished. If you leave this page you cannot return to find out the import status." + } }, "branches": { "overview": { @@ -167,7 +172,9 @@ "submitCreate": "Save", "submitImport": "Import", "initializeRepository": "Initialize repository", - "dangerZone": "Rename and delete" + "dangerZone": "Rename and delete", + "createButton": "Create Repository", + "importButton": "Import repository" }, "sources": { "fileTree": { diff --git a/scm-ui/ui-webapp/src/repos/components/form/RepositoryForm.tsx b/scm-ui/ui-webapp/src/repos/components/form/RepositoryForm.tsx index 4bbe2bf374..55375768db 100644 --- a/scm-ui/ui-webapp/src/repos/components/form/RepositoryForm.tsx +++ b/scm-ui/ui-webapp/src/repos/components/form/RepositoryForm.tsx @@ -204,7 +204,7 @@ const RepositoryForm: FC = ({ = ({ = ({ = ({ repository, createMode }) => { if (repository) { subtitle = "repositoryForm.subtitle"; } else if (isImportMode()) { - subtitle = "create.importSubtitle"; + subtitle = "create.subtitle"; } else { - subtitle = "create.createSubtitle"; + subtitle = "import.subtitle"; } return ; @@ -73,13 +73,13 @@ const RepositoryFormSwitcher: FC = ({ repository, createMode }) => { right={ { const { pageLoading, createLoading, + importLoading, repositoryTypes, namespaceStrategies, createRepo, @@ -109,18 +113,26 @@ class AddRepository extends React.Component { return ( - { - createRepo(repoLink, repo, initRepository, (repo: Repository) => this.repoCreated(repo)); - }} - importRepository={repo => { - importRepoFromUrl(repoLink, repo, (repo: Repository) => this.repoCreated(repo)); - }} - indexResources={indexResources} - /> + {importLoading ? ( + <> + + {t("import.pending.infoText")} + + + ) : ( + { + createRepo(repoLink, repo, initRepository, (repo: Repository) => this.repoCreated(repo)); + }} + importRepository={repo => { + importRepoFromUrl(repoLink, repo, (repo: Repository) => this.repoCreated(repo)); + }} + indexResources={indexResources} + /> + )} ); } @@ -131,8 +143,12 @@ const mapStateToProps = (state: any) => { const namespaceStrategies = getNamespaceStrategies(state); const pageLoading = isFetchRepositoryTypesPending(state) || isFetchNamespaceStrategiesPending(state); const createLoading = isCreateRepoPending(state); + const importLoading = isImportRepoPending(state); const error = - getFetchRepositoryTypesFailure(state) || getCreateRepoFailure(state) || getFetchNamespaceStrategiesFailure(state); + getFetchRepositoryTypesFailure(state) || + getCreateRepoFailure(state) || + getFetchNamespaceStrategiesFailure(state) || + getImportRepoFailure(state); const repoLink = getRepositoriesLink(state); const indexResources = state?.indexResources; @@ -141,6 +157,7 @@ const mapStateToProps = (state: any) => { namespaceStrategies, pageLoading, createLoading, + importLoading, error, repoLink, indexResources diff --git a/scm-ui/ui-webapp/src/repos/modules/repos.ts b/scm-ui/ui-webapp/src/repos/modules/repos.ts index 5c2f7e8633..10ff216558 100644 --- a/scm-ui/ui-webapp/src/repos/modules/repos.ts +++ b/scm-ui/ui-webapp/src/repos/modules/repos.ts @@ -268,19 +268,19 @@ export function importRepoFromUrl(link: string, repository: RepositoryImport, ca export function importRepoPending(): Action { return { - type: CREATE_REPO_PENDING + type: IMPORT_REPO_PENDING }; } export function importRepoSuccess(): Action { return { - type: CREATE_REPO_SUCCESS + type: IMPORT_REPO_SUCCESS }; } export function importRepoFailure(err: Error): Action { return { - type: CREATE_REPO_FAILURE, + type: IMPORT_REPO_FAILURE, payload: err }; } @@ -643,6 +643,14 @@ export function isAbleToCreateRepos(state: object) { return !!(state.repos && state.repos.list && state.repos.list._links && state.repos.list._links.create); } +export function isImportRepoPending(state: object) { + return isPending(state, IMPORT_REPO); +} + +export function getImportRepoFailure(state: object) { + return getFailure(state, IMPORT_REPO); +} + export function isCreateRepoPending(state: object) { return isPending(state, CREATE_REPO); }