@@ -2,11 +2,13 @@ import React, { useCallback, useState } from 'react';
22import { observer } from 'mobx-react-lite' ;
33import styled from '@emotion/styled' ;
44import { usePrefixedTranslation } from 'hooks' ;
5+ import * as LIT from 'types/generated/lit-sessions_pb' ;
56import { MAX_DATE } from 'util/constants' ;
67import { useStore } from 'store' ;
78import { Button , Column , HeaderFour , Row } from 'components/base' ;
89import FormField from 'components/common/FormField' ;
910import FormInput from 'components/common/FormInput' ;
11+ import FormSelect from 'components/common/FormSelect' ;
1012import PurpleButton from './PurpleButton' ;
1113
1214const Styled = {
@@ -21,6 +23,17 @@ const Styled = {
2123 padding: 12px 16px;
2224 }
2325 ` ,
26+ FormSelect : styled ( FormSelect ) `
27+ .rc-select {
28+ font-family: ${ props => props . theme . fonts . open . regular } ;
29+ font-size: ${ props => props . theme . sizes . m } ;
30+ padding: 12px 40px 8px 0px;
31+ }
32+
33+ .rc-select-selection-item {
34+ padding-left: 14px;
35+ }
36+ ` ,
2437} ;
2538
2639interface Props {
@@ -32,18 +45,25 @@ const AddSession: React.FC<Props> = ({ primary }) => {
3245 const { sessionStore } = useStore ( ) ;
3346
3447 const [ label , setLabel ] = useState ( '' ) ;
48+ const [ permissions , setPermissions ] = useState ( 'admin' ) ;
3549 const [ editing , setEditing ] = useState ( false ) ;
3650
3751 const toggleEditing = useCallback ( ( ) => setEditing ( e => ! e ) , [ ] ) ;
3852 const handleSubmit = useCallback ( async ( ) => {
39- const session = await sessionStore . addSession ( label , MAX_DATE ) ;
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 ) ;
59+
4060 if ( session ) {
4161 setLabel ( '' ) ;
4262 setEditing ( false ) ;
4363 }
44- } , [ label ] ) ;
64+ } , [ label , permissions ] ) ;
4565
46- const { Wrapper, FormHeader, FormInput } = Styled ;
66+ const { Wrapper, FormHeader, FormInput, FormSelect } = Styled ;
4767 if ( ! editing ) {
4868 return (
4969 < PurpleButton tertiary = { ! primary } onClick = { toggleEditing } >
@@ -54,13 +74,32 @@ const AddSession: React.FC<Props> = ({ primary }) => {
5474
5575 return (
5676 < Wrapper >
57- < FormHeader > { l ( 'label' ) } </ FormHeader >
77+ < Row >
78+ < Column >
79+ < FormHeader > { l ( 'label' ) } </ FormHeader >
80+ </ Column >
81+ < Column >
82+ < FormHeader > { l ( 'permissions' ) } </ FormHeader >
83+ </ Column >
84+ </ Row >
5885 < Row >
5986 < Column cols = { 6 } >
6087 < FormField >
6188 < FormInput value = { label } onChange = { setLabel } placeholder = { l ( 'labelHint' ) } />
6289 </ FormField >
6390 </ Column >
91+ < Column >
92+ < FormField >
93+ < FormSelect
94+ value = { permissions }
95+ onChange = { setPermissions }
96+ options = { [
97+ { label : 'Admin' , value : 'admin' } ,
98+ { label : 'Read Only' , value : 'read-only' } ,
99+ ] }
100+ />
101+ </ FormField >
102+ </ Column >
64103 < Column >
65104 < PurpleButton onClick = { handleSubmit } > { l ( 'common.submit' ) } </ PurpleButton >
66105 < Button ghost borderless onClick = { toggleEditing } >
0 commit comments