From 949b656b3d87a461feef2e7eb99d93596ab5e6f3 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Tue, 12 Feb 2019 21:15:04 +0000
Subject: [PATCH] Redirect after save / remove...

---
 borgbutler-webapp/src/components/views/repos/ConfigureRepoPage.jsx   |   35 +++++++++++++++++++----------------
 borgbutler-webapp/src/components/views/repos/RepoConfigPanel.jsx     |    9 ++++++++-
 borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx |   13 ++++++++++++-
 3 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/borgbutler-webapp/src/components/views/repos/ConfigureRepoPage.jsx b/borgbutler-webapp/src/components/views/repos/ConfigureRepoPage.jsx
index 8e10c2c..bf08fcb 100644
--- a/borgbutler-webapp/src/components/views/repos/ConfigureRepoPage.jsx
+++ b/borgbutler-webapp/src/components/views/repos/ConfigureRepoPage.jsx
@@ -34,13 +34,23 @@
     }
 
     onSave(event) {
-        const response = fetch(getRestServiceUrl("repoConfig"), {
-            method: 'POST',
-            headers: {
-                'Content-Type': 'application/json'
-            },
-            body: JSON.stringify(this.state.repoConfig)
-        });
+        this.setState(
+            {repoConfig: {...this.state.repoConfig, id: this.state.mode == 'initNewRepo' ? 'init' : 'new'}},
+            () => {
+                const response = fetch(getRestServiceUrl("repoConfig"), {
+                    method: 'POST',
+                    headers: {
+                        'Content-Type': 'application/json'
+                    },
+                    body: JSON.stringify(this.state.repoConfig)
+                })
+                    .then(json => {
+                        this.props.history.push('/repos');
+                    })
+                    .catch(() => {
+                    });
+            }
+        )
     }
 
     handleRepoConfigChange = event => {
@@ -63,6 +73,7 @@
 
     render() {
         const repoConfig = this.state.repoConfig;
+        const saveButtonLabel = this.state.mode === 'initNewRepo' ? 'Init and save' : <I18n name={'common.save'}/>;
         return <React.Fragment>
             <PageHeader>
                 Configure repository
@@ -128,20 +139,12 @@
                         <FormButton onClick={this.onSave} bsStyle="primary"
                                     disabled={repoConfig.repo && repoConfig.repo.length > 0
                                     && repoConfig.displayName && repoConfig.displayName.length > 0 ? false : true}
-                                    hintKey="configuration.save.hint"><I18n name={'common.save'}/>
+                                    hintKey="configuration.save.hint">{saveButtonLabel}
                         </FormButton>
                     </FormField>
                 </FormGroup>
                 <RepoConfigTestPanel repoConfig={this.state.repoConfig}/>
             </form>
-            <code>
-                <h2>Todo:</h2>
-                <ul>
-                    <li>Implement 'Save' button ;-)</li>
-                    <li>Add own environment variables.</li>
-                    <li>Remove and clone repo.</li>
-                </ul>
-            </code>
         </React.Fragment>;
     }
 }
diff --git a/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx b/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
index 566a083..6cc440b 100644
--- a/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
+++ b/borgbutler-webapp/src/components/views/repos/RepoArchiveListView.jsx
@@ -75,6 +75,11 @@
         }
     }
 
+    afterRemove() {
+        this.props.history.push('/repos');
+    }
+
+
     render = () => {
         let errorBadge = '';
         let content1 = undefined;
@@ -185,6 +190,8 @@
                     })}
                     </tbody>
                 </Table>;
+            } else {
+                content1 = 'No archives available.';
             }
             content2 = <Table striped bordered hover>
                 <tbody>
@@ -243,7 +250,10 @@
                     {content2}
                 </TabPane>
                 <TabPane tabId={'3'}>
-                    <RepoConfigPanel id={this.state.id} afterCancel={this.afterCancel} afterSave={this.afterSave}
+                    <RepoConfigPanel id={this.state.id}
+                                     afterCancel={this.afterCancel}
+                                     afterSave={this.afterSave}
+                                     afterRemove={this.afterRemove}
                                      repoError={this.state.failed}/>
                 </TabPane>
             </TabContent>
@@ -257,6 +267,7 @@
         this.toggleTab = this.toggleTab.bind(this);
         this.afterCancel = this.afterCancel.bind(this);
         this.afterSave = this.afterSave.bind(this);
+        this.afterRemove = this.afterRemove.bind(this);
     }
 }
 
diff --git a/borgbutler-webapp/src/components/views/repos/RepoConfigPanel.jsx b/borgbutler-webapp/src/components/views/repos/RepoConfigPanel.jsx
index 88ef7e8..20ef8d4 100644
--- a/borgbutler-webapp/src/components/views/repos/RepoConfigPanel.jsx
+++ b/borgbutler-webapp/src/components/views/repos/RepoConfigPanel.jsx
@@ -78,7 +78,7 @@
         })
     }
 
-    onRemove(event) {
+    async onRemove(event) {
         const response = fetch(getRestServiceUrl('repoConfig/remove', {
             id: this.props.id
         }), {
@@ -89,10 +89,17 @@
         })
             .then(response => response.text())
             .then(text => {
+                if (text !== 'OK') {
+                    console.log('Error while removing repo: ' + text);
+                }
             })
             .catch((error) => {
                 console.log("error", error);
             })
+        if (response) await response;
+        if (this.props.afterRemove) {
+            this.props.afterRemove();
+        }
     }
 
     async onSave(event) {

--
Gitblit v1.10.0