@@ -5,6 +5,10 @@ import { ServerContext } from '@/state/server';
55import Spinner from '@/components/elements/Spinner' ;
66import { Subuser } from '@/state/server/subusers' ;
77import { CSSTransition } from 'react-transition-group' ;
8+ import classNames from 'classnames' ;
9+ import PermissionEditor from '@/components/server/users/PermissionEditor' ;
10+ import { Actions , useStoreActions , useStoreState } from 'easy-peasy' ;
11+ import { ApplicationStore } from '@/state' ;
812
913export default ( ) => {
1014 const [ loading , setLoading ] = useState ( true ) ;
@@ -14,6 +18,15 @@ export default () => {
1418 const subusers = ServerContext . useStoreState ( state => state . subusers . data ) ;
1519 const getSubusers = ServerContext . useStoreActions ( actions => actions . subusers . getSubusers ) ;
1620
21+ const permissions = useStoreState ( ( state : ApplicationStore ) => state . permissions . data ) ;
22+ const getPermissions = useStoreActions ( ( actions : Actions < ApplicationStore > ) => actions . permissions . getPermissions ) ;
23+
24+ useEffect ( ( ) => {
25+ if ( ! permissions . length ) {
26+ getPermissions ( ) . catch ( error => console . error ( error ) ) ;
27+ }
28+ } , [ permissions , getPermissions ] ) ;
29+
1730 useEffect ( ( ) => {
1831 getSubusers ( uuid )
1932 . then ( ( ) => setLoading ( false ) )
@@ -32,8 +45,11 @@ export default () => {
3245 < div className = { 'flex my-10' } >
3346 < div className = { 'w-1/2' } >
3447 < h2 className = { 'text-neutral-300 mb-4' } > Subusers</ h2 >
35- < div className = { 'border-t-4 border-primary-400 grey-box mt-0' } >
36- { loading ?
48+ < div className = { classNames ( 'border-t-4 grey-box mt-0' , {
49+ 'border-cyan-400' : editSubuser === null ,
50+ 'border-neutral-400' : editSubuser !== null ,
51+ } ) } >
52+ { ( loading || ! permissions . length ) ?
3753 < div className = { 'w-full' } >
3854 < Spinner centered = { true } />
3955 </ div >
@@ -78,8 +94,10 @@ export default () => {
7894 < CSSTransition timeout = { 250 } classNames = { 'fade' } appear = { true } in = { true } >
7995 < div className = { 'flex-1 ml-6' } >
8096 < h2 className = { 'text-neutral-300 mb-4' } > Edit { editSubuser . email } </ h2 >
81- < div className = { 'border-t-4 border-primary-400 grey-box mt-0' } >
82- < p > Edit permissions here.</ p >
97+ < div className = { 'border-t-4 border-cyan-400 grey-box mt-0' } >
98+ < PermissionEditor
99+ defaultPermissions = { editSubuser . permissions }
100+ />
83101 </ div >
84102 </ div >
85103 </ CSSTransition >
0 commit comments