-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
slice.js
115 lines (107 loc) · 2.73 KB
/
slice.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { createSlice } from '@reduxjs/toolkit';
const slice = createSlice({
name: 'GUI',
initialState: {
isMigrating: false,
origin: {
name: '',
accessId: '',
secretKey: '',
accountId: '',
service: '',
},
destination: {
render: false,
name: '',
secretKey: '',
accessId: '',
accountId: '',
service: '',
},
},
reducers: {
migrationStatusChange: (state, action) => {
state.isMigrating = action.payload;
},
updateRemoteCredentials: (state, action) => {
state.origin = action.payload.origin;
state.destination = action.payload.destination;
},
},
});
export default slice.reducer;
export const { migrationStatusChange, updateRemoteCredentials } = slice.actions;
export const checkInputCredentials = (accessId, secretKey) => {
const isAmazonAccessId = /(?<![A-Z0-9])[A-Z0-9]{20}(?![A-Z0-9])/.test(
accessId
);
const isAmazonSecretKey =
/(?<![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])/.test(secretKey);
const isCloudflareAccessId = /^[a-z0-9]{32}$/.test(accessId);
const isCloudflareSecretKey = /^[a-z0-9]{64}$/.test(secretKey);
if (isAmazonAccessId && isAmazonSecretKey) {
return 'Amazon';
} else if (isCloudflareAccessId && isCloudflareSecretKey) {
return 'CloudFlare';
} else {
return false;
}
};
//modify data for state with a func?...
export const formatState = (
input,
accessId,
secretKey,
accountId,
currentOrigin,
currentDestination
) => {
if (currentOrigin.name) {
const updatedDestination = Object.assign({}, currentDestination);
updatedDestination.accessId = accessId;
updatedDestination.secretKey = secretKey;
updatedDestination.accountId = accountId;
return { origin: {...currentOrigin}, destination: {...updatedDestination} };
}
if (input === 'Amazon') {
return {
origin: {
name: input,
accessId: accessId,
secretKey: secretKey,
accountId: null,
service: 'S3',
},
destination: {
render: true,
name: 'CloudFlare',
secretKey: null,
accessId: null,
accountId: null,
service: 'R2',
},
};
} else {
return {
origin: {
name: 'CloudFlare',
accessId: accessId,
secretKey: secretKey,
accountId: null,
service: 'R2',
},
destination: {
render: true,
name: input,
secretKey: null,
accessId: null,
accountId: null,
service: 'S3',
},
};
}
};
//update destination.render
//populate destination name with cf and render accountId field
//amazon populate service field in state and render on page
//populate name field and render on page