@@ -19,22 +19,19 @@ import TableRow from '@mui/material/TableRow';
19
19
import Tooltip from '@mui/material/Tooltip' ;
20
20
import Typography from '@mui/material/Typography' ;
21
21
22
- import TagIcon from '@mui/icons-material/LocalOffer' ;
22
+ import Ending from '../../../components/Ending' ;
23
+ import { groupBy , displayUserName } from '../../../helpers' ;
24
+ import { isAccessAdmin , isAppOwnerGroupOwner } from '../../../authorization' ;
25
+ import { useGetAppById } from '../../../api/apiComponents' ;
26
+ import { App , OktaUserGroupMember } from '../../../api/apiSchemas' ;
23
27
24
- import { grey } from '@mui/material/colors' ;
25
-
26
- import Ending from '../../components/Ending' ;
27
- import { groupBy , displayUserName } from '../../helpers' ;
28
- import { isAccessAdmin , isAppOwnerGroupOwner } from '../../authorization' ;
29
- import { useGetAppById } from '../../api/apiComponents' ;
30
- import { App , OktaUserGroupMember } from '../../api/apiSchemas' ;
31
-
32
- import { useCurrentUser } from '../../authentication' ;
33
- import CreateUpdateGroup from '../groups/CreateUpdate' ;
34
- import CreateUpdateApp from './CreateUpdate' ;
35
- import DeleteApp from './Delete' ;
36
- import NotFound from '../NotFound' ;
37
- import Loading from '../../components/Loading' ;
28
+ import { useCurrentUser } from '../../../authentication' ;
29
+ import CreateUpdateGroup from '../../groups/CreateUpdate' ;
30
+ import CreateUpdateApp from '../CreateUpdate' ;
31
+ import DeleteApp from '../Delete' ;
32
+ import NotFound from '../../NotFound' ;
33
+ import Loading from '../../../components/Loading' ;
34
+ import AppHeader from './app_header' ;
38
35
39
36
function sortGroupMembers (
40
37
[ aUserId , aUsers ] : [ string , Array < OktaUserGroupMember > ] ,
@@ -51,7 +48,16 @@ function groupMemberships(
51
48
return groupBy ( memberships ?? [ ] , 'active_user.id' ) ;
52
49
}
53
50
54
- export default function ReadApp ( ) {
51
+ export type Modifier = {
52
+ name : string ;
53
+ options : { } ;
54
+ } ;
55
+
56
+ export type MoveTooltip = {
57
+ modifiers : Modifier [ ] ;
58
+ } ;
59
+
60
+ export const ReadApp = ( ) => {
55
61
const currentUser = useCurrentUser ( ) ;
56
62
57
63
const { id} = useParams ( ) ;
@@ -71,61 +77,13 @@ export default function ReadApp() {
71
77
72
78
const app = data ?? ( { } as App ) ;
73
79
74
- const moveTooltip = { modifiers : [ { name : 'offset' , options : { offset : [ 0 , - 10 ] } } ] } ;
80
+ const moveTooltip : MoveTooltip = { modifiers : [ { name : 'offset' , options : { offset : [ 0 , - 10 ] } } ] } ;
75
81
76
82
return (
77
83
< React . Fragment >
78
84
< Container maxWidth = "lg" sx = { { mt : 4 , mb : 4 } } >
79
85
< Grid container spacing = { 3 } >
80
- < Grid item xs = { 12 } >
81
- < Paper
82
- sx = { {
83
- p : 2 ,
84
- height : 240 ,
85
- display : 'flex' ,
86
- flexDirection : 'column' ,
87
- justifyContent : 'center' ,
88
- textAlign : 'center' ,
89
- position : 'relative' ,
90
- } } >
91
- < Typography variant = "h3" sx = { { margin : '5px 40px 0px 10px' } } >
92
- { app . name }
93
- </ Typography >
94
- < Typography variant = "h5" sx = { { margin : '5px 40px 0px 10px' } } >
95
- { app . description }
96
- </ Typography >
97
- { app . active_app_tags ? (
98
- < Box >
99
- { app . active_app_tags . map ( ( tagMap ) => (
100
- < Chip
101
- key = { 'tag' + tagMap . active_tag ! . id }
102
- label = { tagMap . active_tag ! . name }
103
- color = "primary"
104
- onClick = { ( ) => navigate ( `/tags/${ tagMap . active_tag ! . name } ` ) }
105
- icon = { < TagIcon /> }
106
- sx = { {
107
- margin : '2px' ,
108
- marginTop : '5px' ,
109
- bgcolor : tagMap . active_tag ! . enabled ? 'primary' : grey [ 500 ] ,
110
- } }
111
- />
112
- ) ) }
113
- </ Box >
114
- ) : null }
115
- < Stack style = { { position : 'absolute' , right : '10px' } } >
116
- < Tooltip title = "Edit" placement = "right" PopperProps = { moveTooltip } >
117
- < div >
118
- < CreateUpdateApp currentUser = { currentUser } app = { app } />
119
- </ div >
120
- </ Tooltip >
121
- < Tooltip title = "Delete" placement = "right" PopperProps = { moveTooltip } >
122
- < div >
123
- < DeleteApp currentUser = { currentUser } app = { app } />
124
- </ div >
125
- </ Tooltip >
126
- </ Stack >
127
- </ Paper >
128
- </ Grid >
86
+ < AppHeader app = { app } moveTooltip = { moveTooltip } />
129
87
{ isAccessAdmin ( currentUser ) || isAppOwnerGroupOwner ( currentUser , app . id ?? '' ) ? (
130
88
< Grid item xs = { 12 } >
131
89
< Paper
@@ -513,4 +471,4 @@ export default function ReadApp() {
513
471
</ Container >
514
472
</ React . Fragment >
515
473
) ;
516
- }
474
+ } ;
0 commit comments