Skip to content

Commit a751f16

Browse files
committed
refactor: use type for permissionType
1 parent 4e84ada commit a751f16

File tree

3 files changed

+63
-37
lines changed

3 files changed

+63
-37
lines changed

app/src/components/connect/AddSession.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import FormField from 'components/common/FormField';
88
import FormInput from 'components/common/FormInput';
99
import FormSelect from 'components/common/FormSelect';
1010
import PurpleButton from './PurpleButton';
11+
import { PermissionTypeValues } from 'store/views/addSessionView';
1112

1213
const Styled = {
1314
Wrapper: styled.div``,
@@ -50,6 +51,14 @@ const AddSession: React.FC<Props> = ({ primary }) => {
5051
);
5152
}
5253

54+
const validatePermissionType = (v: string) => {
55+
const permissionType = Object.values(PermissionTypeValues).find(value => value === v);
56+
57+
if (!permissionType) return;
58+
59+
addSessionView.setPermissionType(permissionType);
60+
};
61+
5362
return (
5463
<Wrapper>
5564
<Row>
@@ -74,18 +83,18 @@ const AddSession: React.FC<Props> = ({ primary }) => {
7483
<FormField>
7584
<FormSelect
7685
value={addSessionView.permissionType}
77-
onChange={addSessionView.setPermissionType}
86+
onChange={validatePermissionType}
7887
options={[
79-
{ label: l('admin'), value: 'admin' },
80-
{ label: l('readonly'), value: 'read-only' },
81-
{ label: l('custom'), value: 'custom' },
88+
{ label: l('admin'), value: PermissionTypeValues.Admin },
89+
{ label: l('readonly'), value: PermissionTypeValues.ReadOnly },
90+
{ label: l('custom'), value: PermissionTypeValues.Custom },
8291
]}
8392
/>
8493
</FormField>
8594
</Column>
8695
<Column>
8796
<PurpleButton onClick={addSessionView.handleSubmit}>
88-
{addSessionView.permissionType === 'custom'
97+
{addSessionView.permissionType === PermissionTypeValues.Custom
8998
? l('common.next')
9099
: l('common.submit')}
91100
</PurpleButton>

app/src/components/connect/CustomSessionPage.tsx

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import FormSelect from 'components/common/FormSelect';
1414
import FormDate from 'components/common/FormDate';
1515
import FormSwitch from 'components/common/v2/FormSwitch';
1616
import PurpleButton from './PurpleButton';
17+
import { PermissionTypeValues } from 'store/views/addSessionView';
1718

1819
const Styled = {
1920
Wrapper: styled.div`
@@ -108,7 +109,7 @@ const CustomSessionPage: React.FC = () => {
108109
addSessionView.handleCustomSubmit();
109110
}, []);
110111

111-
const setPermissionType = (permissionType: string) => {
112+
const setPermissionType = (permissionType: PermissionTypeValues) => {
112113
return () => {
113114
addSessionView.setPermissionType(permissionType);
114115
};
@@ -175,56 +176,62 @@ const CustomSessionPage: React.FC = () => {
175176

176177
<PermissionTypes>
177178
<PermissionType
178-
active={addSessionView.permissionType === 'admin'}
179-
onClick={setPermissionType('admin')}
179+
active={addSessionView.permissionType === PermissionTypeValues.Admin}
180+
onClick={setPermissionType(PermissionTypeValues.Admin)}
180181
>
181182
<Paragraph bold>{l('admin')}</Paragraph>
182183
<Small>{l('adminDesc')}</Small>
183184
</PermissionType>
184185

185186
<PermissionType
186-
active={addSessionView.permissionType === 'read-only'}
187-
onClick={setPermissionType('read-only')}
187+
active={addSessionView.permissionType === PermissionTypeValues.ReadOnly}
188+
onClick={setPermissionType(PermissionTypeValues.ReadOnly)}
188189
>
189190
<Paragraph bold>{l('readonly')}</Paragraph>
190191
<Small>{l('readonlyDesc')}</Small>
191192
</PermissionType>
192193

193194
<PermissionType
194-
active={addSessionView.permissionType === 'liquidity'}
195-
onClick={setPermissionType('liquidity')}
195+
active={
196+
addSessionView.permissionType === PermissionTypeValues.Liquidity
197+
}
198+
onClick={setPermissionType(PermissionTypeValues.Liquidity)}
196199
>
197200
<Paragraph bold>{l('liquidity')}</Paragraph>
198201
<Small>{l('liquidityDesc')}</Small>
199202
</PermissionType>
200203

201204
<PermissionType
202-
active={addSessionView.permissionType === 'payments'}
203-
onClick={setPermissionType('payments')}
205+
active={addSessionView.permissionType === PermissionTypeValues.Payments}
206+
onClick={setPermissionType(PermissionTypeValues.Payments)}
204207
>
205208
<Paragraph bold>{l('payments')}</Paragraph>
206209
<Small>{l('paymentsDesc')}</Small>
207210
</PermissionType>
208211

209212
<PermissionType
210-
active={addSessionView.permissionType === 'messenger'}
211-
onClick={setPermissionType('messenger')}
213+
active={
214+
addSessionView.permissionType === PermissionTypeValues.Messenger
215+
}
216+
onClick={setPermissionType(PermissionTypeValues.Messenger)}
212217
>
213218
<Paragraph bold>{l('messenger')}</Paragraph>
214219
<Small>{l('messengerDesc')}</Small>
215220
</PermissionType>
216221

217222
<PermissionType
218-
active={addSessionView.permissionType === 'custodial'}
219-
onClick={setPermissionType('custodial')}
223+
active={
224+
addSessionView.permissionType === PermissionTypeValues.Custodial
225+
}
226+
onClick={setPermissionType(PermissionTypeValues.Custodial)}
220227
>
221228
<Paragraph bold>{l('custodial')}</Paragraph>
222229
<Small>{l('custodialDesc')}</Small>
223230
</PermissionType>
224231

225232
<PermissionType
226-
active={addSessionView.permissionType === 'custom'}
227-
onClick={setPermissionType('custom')}
233+
active={addSessionView.permissionType === PermissionTypeValues.Custom}
234+
onClick={setPermissionType(PermissionTypeValues.Custom)}
228235
>
229236
<Paragraph bold>{l('custom')}</Paragraph>
230237
<Small>{l('customDesc')}</Small>
@@ -236,7 +243,7 @@ const CustomSessionPage: React.FC = () => {
236243
<Label semiBold>Permissions</Label>
237244

238245
<Permissions>
239-
{addSessionView.permissionType === 'custodial' && (
246+
{addSessionView.permissionType === PermissionTypeValues.Custodial && (
240247
<FormField>
241248
<Label semiBold space={8}>
242249
{l('addBalance')}

app/src/store/views/addSessionView.ts

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,21 @@ import { Store } from 'store';
33
import * as LIT from 'types/generated/lit-sessions_pb';
44
import { MAX_DATE, PermissionUriMap } from 'util/constants';
55

6+
export enum PermissionTypeValues {
7+
Admin = 'admin',
8+
ReadOnly = 'read-only',
9+
Liquidity = 'liquidity',
10+
Payments = 'payments',
11+
Messenger = 'messenger',
12+
Custodial = 'custodial',
13+
Custom = 'custom',
14+
}
15+
616
export default class AddSessionView {
717
private _store: Store;
818

919
label = '';
10-
permissionType = 'admin'; // Expected values: admin | read-only | custodial | custom | liquidity | payments | messenger
20+
permissionType: PermissionTypeValues = PermissionTypeValues.Admin;
1121
editing = false;
1222
permissions: { [key: string]: boolean } = {
1323
openChannel: false,
@@ -50,11 +60,11 @@ export default class AddSessionView {
5060
//
5161

5262
get sessionType() {
53-
if (this.permissionType === 'admin') {
63+
if (this.permissionType === PermissionTypeValues.Admin) {
5464
return LIT.SessionType.TYPE_MACAROON_ADMIN;
55-
} else if (this.permissionType === 'read-only') {
65+
} else if (this.permissionType === PermissionTypeValues.ReadOnly) {
5666
return LIT.SessionType.TYPE_MACAROON_READONLY;
57-
} else if (this.permissionType === 'custodial') {
67+
} else if (this.permissionType === PermissionTypeValues.Custodial) {
5868
return LIT.SessionType.TYPE_MACAROON_ACCOUNT;
5969
}
6070

@@ -133,52 +143,52 @@ export default class AddSessionView {
133143
this.custodialBalance = balance;
134144
}
135145

136-
setPermissionType(permissionType: string) {
146+
setPermissionType(permissionType: PermissionTypeValues) {
137147
this.permissionType = permissionType;
138148

139149
switch (permissionType) {
140-
case 'admin':
150+
case PermissionTypeValues.Admin:
141151
this.setAllPermissions(true);
142152
break;
143153

144-
case 'read-only':
154+
case PermissionTypeValues.ReadOnly:
145155
this.setAllPermissions(false);
146156
break;
147157

148-
case 'liquidity':
158+
case PermissionTypeValues.Liquidity:
149159
this.setAllPermissions(false);
150160
this.permissions.setFees = true;
151161
this.permissions.loop = true;
152162
this.permissions.pool = true;
153163
break;
154164

155-
case 'payments':
165+
case PermissionTypeValues.Payments:
156166
this.setAllPermissions(false);
157167
this.permissions.send = true;
158168
this.permissions.receive = true;
159169
break;
160170

161-
case 'messenger':
171+
case PermissionTypeValues.Messenger:
162172
this.setAllPermissions(false);
163173
this.permissions.send = true;
164174
this.permissions.receive = true;
165175
this.permissions.sign = true;
166176
break;
167177

168-
case 'custodial':
178+
case PermissionTypeValues.Custodial:
169179
this.setAllPermissions(false);
170180
this.permissions.send = true;
171181
this.permissions.receive = true;
172182
break;
173183

174-
case 'custom':
184+
case PermissionTypeValues.Custom:
175185
// We don't need to change anything, let the user customize permissions how they want
176186
break;
177187
}
178188
}
179189

180190
togglePermission(permission: string) {
181-
this.setPermissionType('custom');
191+
this.setPermissionType(PermissionTypeValues.Custom);
182192
this.permissions[permission] = !this.permissions[permission];
183193
}
184194

@@ -192,7 +202,7 @@ export default class AddSessionView {
192202

193203
cancel() {
194204
this.label = '';
195-
this.permissionType = 'admin';
205+
this.permissionType = PermissionTypeValues.Admin;
196206
this.editing = false;
197207
this.setAllPermissions(false);
198208
this.expiration = 'never';
@@ -205,7 +215,7 @@ export default class AddSessionView {
205215
//
206216

207217
async handleSubmit() {
208-
if (this.permissionType === 'custom') {
218+
if (this.permissionType === PermissionTypeValues.Custom) {
209219
this._store.settingsStore.sidebarVisible = false;
210220
this._store.router.push('/connect/custom');
211221
} else {
@@ -231,7 +241,7 @@ export default class AddSessionView {
231241
label = `My ${this.permissionType} session`;
232242
}
233243

234-
if (this.permissionType === 'custodial') {
244+
if (this.permissionType === PermissionTypeValues.Custodial) {
235245
const custodialAccountId = await this.registerCustodialAccount();
236246

237247
// Return immediately to prevent a session being created when there is an error creating the custodial account

0 commit comments

Comments
 (0)