Skip to content

Commit 1d8faef

Browse files
committed
ui+connect: Custom permissions page
1 parent 1c3f33a commit 1d8faef

File tree

3 files changed

+378
-31
lines changed

3 files changed

+378
-31
lines changed

app/src/AppRoutes.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ const LazyHistoryPage = React.lazy(() => import('components/history/HistoryPage'
99
const LazyPoolPage = React.lazy(() => import('components/pool/PoolPage'));
1010
const LazySettingsPage = React.lazy(() => import('components/settings/SettingsPage'));
1111
const LazyConnectPage = React.lazy(() => import('components/connect/ConnectPage'));
12+
const LazyCustomSessionPage = React.lazy(
13+
() => import('components/connect/CustomSessionPage'),
14+
);
1215

1316
const AppRoutes: React.FC = () => {
1417
return (
@@ -63,6 +66,14 @@ const AppRoutes: React.FC = () => {
6366
</Layout>
6467
}
6568
/>
69+
<Route
70+
path="connect/custom"
71+
element={
72+
<Layout>
73+
<LazyCustomSessionPage />
74+
</Layout>
75+
}
76+
/>
6677
</Route>
6778
</Routes>
6879
);

app/src/components/connect/AddSession.tsx

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import React, { useCallback, useState } from 'react';
1+
import React from 'react';
22
import { observer } from 'mobx-react-lite';
3-
import * as LIT from 'types/generated/lit-sessions_pb';
43
import styled from '@emotion/styled';
54
import { usePrefixedTranslation } from 'hooks';
6-
import { MAX_DATE } from 'util/constants';
75
import { useStore } from 'store';
86
import { Button, Column, HeaderFour, Row } from 'components/base';
97
import FormField from 'components/common/FormField';
@@ -42,31 +40,11 @@ interface Props {
4240

4341
const AddSession: React.FC<Props> = ({ primary }) => {
4442
const { l } = usePrefixedTranslation('cmps.connect.AddSession');
45-
const { sessionStore } = useStore();
46-
47-
const [label, setLabel] = useState('');
48-
const [permissions, setPermissions] = useState('admin');
49-
const [editing, setEditing] = useState(false);
50-
51-
const toggleEditing = useCallback(() => setEditing(e => !e), []);
52-
const handleSubmit = useCallback(async () => {
53-
const sessionType =
54-
permissions === 'admin'
55-
? LIT.SessionType.TYPE_MACAROON_ADMIN
56-
: LIT.SessionType.TYPE_MACAROON_READONLY;
57-
58-
const session = await sessionStore.addSession(label, sessionType, MAX_DATE, true);
59-
60-
if (session) {
61-
setLabel('');
62-
setEditing(false);
63-
}
64-
}, [label, permissions]);
65-
43+
const { addSessionView } = useStore();
6644
const { Wrapper, FormHeader, FormInput, FormSelect } = Styled;
67-
if (!editing) {
45+
if (!addSessionView.editing) {
6846
return (
69-
<PurpleButton tertiary={!primary} onClick={toggleEditing}>
47+
<PurpleButton tertiary={!primary} onClick={addSessionView.toggleEditing}>
7048
{l('create')}
7149
</PurpleButton>
7250
);
@@ -85,24 +63,33 @@ const AddSession: React.FC<Props> = ({ primary }) => {
8563
<Row>
8664
<Column cols={6}>
8765
<FormField>
88-
<FormInput value={label} onChange={setLabel} placeholder={l('labelHint')} />
66+
<FormInput
67+
value={addSessionView.label}
68+
onChange={addSessionView.setLabel}
69+
placeholder={l('labelHint')}
70+
/>
8971
</FormField>
9072
</Column>
9173
<Column>
9274
<FormField>
9375
<FormSelect
94-
value={permissions}
95-
onChange={setPermissions}
76+
value={addSessionView.permissionType}
77+
onChange={addSessionView.setPermissionType}
9678
options={[
9779
{ label: 'Admin', value: 'admin' },
9880
{ label: 'Read Only', value: 'read-only' },
81+
{ label: 'Custom', value: 'custom' },
9982
]}
10083
/>
10184
</FormField>
10285
</Column>
10386
<Column>
104-
<PurpleButton onClick={handleSubmit}>{l('common.submit')}</PurpleButton>
105-
<Button ghost borderless onClick={toggleEditing}>
87+
<PurpleButton onClick={addSessionView.handleSubmit}>
88+
{addSessionView.permissionType === 'custom'
89+
? l('common.next')
90+
: l('common.submit')}
91+
</PurpleButton>
92+
<Button ghost borderless onClick={addSessionView.toggleEditing}>
10693
{l('common.cancel')}
10794
</Button>
10895
</Column>

0 commit comments

Comments
 (0)