@@ -25,11 +25,7 @@ import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBo
25
25
import SelectWrapper from "../../Common/FormComponents/SelectWrapper/SelectWrapper" ;
26
26
import { Button , LinearProgress } from "@material-ui/core" ;
27
27
import api from "../../../../common/api" ;
28
- import {
29
- IRemoteBucket ,
30
- IRemoteBucketsResponse ,
31
- } from "../../RemoteBuckets/types" ;
32
- import RemoteBucketsList from "../../RemoteBuckets/RemoteBuckets" ;
28
+ import { IRemoteBucket } from "../types" ;
33
29
34
30
interface IReplicationModal {
35
31
open : boolean ;
@@ -64,66 +60,68 @@ const AddReplicationModal = ({
64
60
bucketName,
65
61
} : IReplicationModal ) => {
66
62
const [ addError , setAddError ] = useState ( "" ) ;
67
- const [ loadingForm , setLoadingForm ] = useState ( true ) ;
68
63
const [ addLoading , setAddLoading ] = useState ( false ) ;
69
- const [ remoteURL , setRemoteURL ] = useState ( "" ) ;
70
- const [ source , setSource ] = useState ( "" ) ;
71
- const [ target , setTarget ] = useState ( "" ) ;
72
- const [ ARN , setARN ] = useState ( "" ) ;
73
- const [ arnValues , setARNValues ] = useState ( [ ] ) ;
74
-
75
- useEffect ( ( ) => {
76
- if ( addLoading ) {
77
- addRecord ( ) ;
78
- }
79
- } , [ addLoading ] ) ;
80
-
81
- useEffect ( ( ) => {
82
- if ( loadingForm ) {
83
- getARNValues ( ) ;
84
- }
85
- } ) ;
64
+ const [ accessKey , setAccessKey ] = useState ( "" ) ;
65
+ const [ secretKey , setSecretKey ] = useState ( "" ) ;
66
+ const [ targetURL , setTargetURL ] = useState ( "" ) ;
67
+ const [ targetBucket , setTargetBucket ] = useState ( "" ) ;
68
+ const [ region , setRegion ] = useState ( "" ) ;
86
69
87
70
const addRecord = ( ) => {
88
- const replicationInfo = {
89
- destination_bucket : target ,
90
- arn : ARN ,
71
+ const remoteBucketInfo = {
72
+ accessKey : accessKey ,
73
+ secretKey : secretKey ,
74
+ sourceBucket : bucketName ,
75
+ targetURL : targetURL ,
76
+ targetBucket : targetBucket ,
77
+ region : region ,
91
78
} ;
92
79
93
80
api
94
- . invoke (
95
- "POST" ,
96
- `/api/v1/buckets/${ bucketName } /replication` ,
97
- replicationInfo
98
- )
99
- . then ( ( res ) => {
100
- setAddLoading ( false ) ;
101
- setAddError ( "" ) ;
102
- closeModalAndRefresh ( ) ;
81
+ . invoke ( "POST" , "/api/v1/remote-buckets" , remoteBucketInfo )
82
+ . then ( ( ) => {
83
+ api
84
+ . invoke ( "GET" , "/api/v1/remote-buckets" )
85
+ . then ( ( res : any ) => {
86
+ const remoteBuckets = get ( res , "buckets" , [ ] ) ;
87
+ const remoteBucket = remoteBuckets . find (
88
+ ( itemRemote : IRemoteBucket ) => {
89
+ return itemRemote . sourceBucket === bucketName ;
90
+ }
91
+ ) ;
92
+ if ( remoteBucket && remoteBucket . remoteARN ) {
93
+ const remoteARN = remoteBucket . remoteARN ;
94
+ const replicationInfo = {
95
+ destination_bucket : targetBucket ,
96
+ arn : remoteARN ,
97
+ } ;
98
+ api
99
+ . invoke (
100
+ "POST" ,
101
+ `/api/v1/buckets/${ bucketName } /replication` ,
102
+ replicationInfo
103
+ )
104
+ . then ( ( ) => {
105
+ setAddLoading ( false ) ;
106
+ setAddError ( "" ) ;
107
+ closeModalAndRefresh ( ) ;
108
+ } )
109
+ . catch ( ( err ) => {
110
+ setAddLoading ( false ) ;
111
+ setAddError ( err ) ;
112
+ } ) ;
113
+ }
114
+ } )
115
+ . catch ( ( err ) => {
116
+ setAddError ( err ) ;
117
+ } ) ;
103
118
} )
104
119
. catch ( ( err ) => {
105
120
setAddLoading ( false ) ;
106
121
setAddError ( err ) ;
107
122
} ) ;
108
123
} ;
109
124
110
- const getARNValues = ( ) => {
111
- api
112
- . invoke ( "GET" , "/api/v1/remote-buckets" )
113
- . then ( ( res : any ) => {
114
- const remoteBuckets = get ( res , "buckets" , [ ] ) ;
115
-
116
- const remoteARNS = remoteBuckets . map ( ( itemRemote : IRemoteBucket ) => {
117
- return { label : itemRemote . remoteARN , value : itemRemote . remoteARN } ;
118
- } ) ;
119
- setLoadingForm ( false ) ;
120
- setARNValues ( remoteARNS ) ;
121
- } )
122
- . catch ( ( err ) => {
123
- setLoadingForm ( false ) ;
124
- } ) ;
125
- } ;
126
-
127
125
return (
128
126
< ModalWrapper
129
127
modalOpen = { open }
@@ -139,71 +137,96 @@ const AddReplicationModal = ({
139
137
onSubmit = { ( e : React . FormEvent < HTMLFormElement > ) => {
140
138
e . preventDefault ( ) ;
141
139
setAddLoading ( true ) ;
140
+ addRecord ( ) ;
142
141
} }
143
142
>
144
- { loadingForm && (
145
- < Grid container >
146
- < Grid item xs = { 12 } >
147
- < LinearProgress />
148
- </ Grid >
149
- </ Grid >
150
- ) }
151
- { ! loadingForm && (
152
- < Grid container >
153
- < Grid item xs = { 12 } className = { classes . formScrollable } >
154
- { addError !== "" && (
155
- < Grid item xs = { 12 } >
156
- < Typography
157
- component = "p"
158
- variant = "body1"
159
- className = { classes . errorBlock }
160
- >
161
- { addError }
162
- </ Typography >
163
- </ Grid >
164
- ) }
165
-
143
+ < Grid container >
144
+ < Grid item xs = { 12 } className = { classes . formScrollable } >
145
+ { addError !== "" && (
166
146
< Grid item xs = { 12 } >
167
- < InputBoxWrapper
168
- id = "target"
169
- name = "target"
170
- onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => {
171
- setTarget ( e . target . value ) ;
172
- } }
173
- label = "Destination Bucket"
174
- value = { target }
175
- />
176
- </ Grid >
177
- < Grid item xs = { 12 } >
178
- < SelectWrapper
179
- onChange = { ( e : React . ChangeEvent < { value : unknown } > ) => {
180
- setARN ( e . target . value as string ) ;
181
- } }
182
- id = "arn"
183
- name = "arn"
184
- label = { "ARN" }
185
- value = { ARN }
186
- options = { arnValues }
187
- />
147
+ < Typography
148
+ component = "p"
149
+ variant = "body1"
150
+ className = { classes . errorBlock }
151
+ >
152
+ { addError }
153
+ </ Typography >
188
154
</ Grid >
155
+ ) }
156
+
157
+ < Grid item xs = { 12 } >
158
+ < InputBoxWrapper
159
+ id = "target"
160
+ name = "target"
161
+ onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => {
162
+ setAccessKey ( e . target . value ) ;
163
+ } }
164
+ label = "Access Key"
165
+ value = { accessKey }
166
+ />
189
167
</ Grid >
190
- < Grid item xs = { 12 } className = { classes . buttonContainer } >
191
- < Button
192
- type = "submit"
193
- variant = "contained"
194
- color = "primary"
195
- disabled = { addLoading }
196
- >
197
- Save
198
- </ Button >
168
+ < Grid item xs = { 12 } >
169
+ < InputBoxWrapper
170
+ id = "target"
171
+ name = "target"
172
+ onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => {
173
+ setSecretKey ( e . target . value ) ;
174
+ } }
175
+ label = "Secret Key"
176
+ value = { secretKey }
177
+ />
178
+ </ Grid >
179
+ < Grid item xs = { 12 } >
180
+ < InputBoxWrapper
181
+ id = "target"
182
+ name = "target"
183
+ onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => {
184
+ setTargetURL ( e . target . value ) ;
185
+ } }
186
+ placeholder = "https://play.min.io:9000"
187
+ label = "Target URL"
188
+ value = { targetURL }
189
+ />
190
+ </ Grid >
191
+ < Grid item xs = { 12 } >
192
+ < InputBoxWrapper
193
+ id = "target"
194
+ name = "target"
195
+ onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => {
196
+ setTargetBucket ( e . target . value ) ;
197
+ } }
198
+ label = "Target Bucket"
199
+ value = { targetBucket }
200
+ />
201
+ </ Grid >
202
+ < Grid item xs = { 12 } >
203
+ < InputBoxWrapper
204
+ id = "target"
205
+ name = "target"
206
+ onChange = { ( e : React . ChangeEvent < HTMLInputElement > ) => {
207
+ setRegion ( e . target . value ) ;
208
+ } }
209
+ label = "Region"
210
+ value = { region }
211
+ />
199
212
</ Grid >
200
- { addLoading && (
201
- < Grid item xs = { 12 } >
202
- < LinearProgress />
203
- </ Grid >
204
- ) }
205
213
</ Grid >
206
- ) }
214
+ < Grid item xs = { 12 } className = { classes . buttonContainer } >
215
+ < Button
216
+ type = "submit"
217
+ variant = "contained"
218
+ color = "primary"
219
+ disabled = { addLoading }
220
+ >
221
+ Save
222
+ </ Button >
223
+ </ Grid >
224
+ { addLoading && (
225
+ < Grid item xs = { 12 } >
226
+ < LinearProgress />
227
+ </ Grid >
228
+ ) }
229
+ </ Grid >
207
230
</ form >
208
231
</ ModalWrapper >
209
232
) ;
0 commit comments