@@ -88,6 +88,29 @@ export function PermittedAppsPage({
8888
8989 const emptyState = getEmptyStateMessage ( ) ;
9090
91+ // Separate active and deleted apps for display purposes (only for permitted/unpermitted views)
92+ const activeApps = apps . filter ( ( app ) => {
93+ const permission =
94+ permittedPkps . find ( ( p ) => p . appId === app . appId ) ||
95+ unpermittedPkps . find ( ( p ) => p . appId === app . appId ) ;
96+ return ! permission ?. isDeleted ;
97+ } ) ;
98+
99+ const deletedApps = apps . filter ( ( app ) => {
100+ const permission =
101+ permittedPkps . find ( ( p ) => p . appId === app . appId ) ||
102+ unpermittedPkps . find ( ( p ) => p . appId === app . appId ) ;
103+ return permission ?. isDeleted ;
104+ } ) ;
105+
106+ // Determine if we should show the deleted section separately
107+ const shouldShowDeletedSection =
108+ ( filterState === 'permitted' || filterState === 'unpermitted' ) && deletedApps . length > 0 ;
109+
110+ // Apps to display in the main grid (active apps for permitted/unpermitted, all apps for deleted/all)
111+ const mainGridApps =
112+ filterState === 'permitted' || filterState === 'unpermitted' ? activeApps : apps ;
113+
91114 return (
92115 < motion . div
93116 initial = { { opacity : 0 } }
@@ -228,26 +251,76 @@ export function PermittedAppsPage({
228251 </ div >
229252 </ div >
230253 ) : (
231- < div className = "w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6" >
232- { apps . map ( ( app , index ) => {
233- const permittedPermission = permittedPkps . find ( ( p ) => p . appId === app . appId ) ;
234- const unpermittedPermission = unpermittedPkps . find ( ( p ) => p . appId === app . appId ) ;
235- const permission = permittedPermission || unpermittedPermission ;
236- const isUnpermitted = ! ! unpermittedPermission && ! permittedPermission ;
237- const isDeleted = permission ?. isDeleted ?? false ;
238- return (
239- < PermittedAppCard
240- key = { app . appId }
241- app = { app }
242- permission = { permission }
243- isUnpermitted = { isUnpermitted }
244- isDeleted = { isDeleted }
245- index = { index }
246- appVersionsMap = { appVersionsMap }
247- />
248- ) ;
249- } ) }
250- </ div >
254+ < >
255+ { /* Main grid - active apps for permitted/unpermitted, all apps for deleted/all */ }
256+ < div className = "w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6" >
257+ { mainGridApps . map ( ( app , index ) => {
258+ const permittedPermission = permittedPkps . find ( ( p ) => p . appId === app . appId ) ;
259+ const unpermittedPermission = unpermittedPkps . find ( ( p ) => p . appId === app . appId ) ;
260+ const permission = permittedPermission || unpermittedPermission ;
261+ const isUnpermitted = ! ! unpermittedPermission && ! permittedPermission ;
262+ const isDeleted = permission ?. isDeleted ?? false ;
263+ return (
264+ < PermittedAppCard
265+ key = { app . appId }
266+ app = { app }
267+ permission = { permission }
268+ isUnpermitted = { isUnpermitted }
269+ isDeleted = { isDeleted }
270+ index = { index }
271+ appVersionsMap = { appVersionsMap }
272+ />
273+ ) ;
274+ } ) }
275+ </ div >
276+
277+ { /* Show deleted apps section for permitted/unpermitted views */ }
278+ { shouldShowDeletedSection && (
279+ < >
280+ { /* Divider */ }
281+ < div className = "my-8 flex items-center gap-4" >
282+ < div className = { `flex-1 border-t ${ theme . cardBorder } ` } />
283+ < div
284+ className = { `px-4 py-2 rounded-lg ${ theme . itemBg } ${ theme . cardBorder } border` }
285+ >
286+ < p
287+ className = { `text-sm font-semibold ${ theme . text } whitespace-nowrap` }
288+ style = { fonts . heading }
289+ >
290+ { filterState === 'permitted'
291+ ? 'Deleted Apps (Still Permitted)'
292+ : 'Deleted Apps (Unpermitted)' }
293+ </ p >
294+ </ div >
295+ < div className = { `flex-1 border-t ${ theme . cardBorder } ` } />
296+ </ div >
297+
298+ { /* Deleted apps grid */ }
299+ < div className = "w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6" >
300+ { deletedApps . map ( ( app , index ) => {
301+ const permittedPermission = permittedPkps . find ( ( p ) => p . appId === app . appId ) ;
302+ const unpermittedPermission = unpermittedPkps . find (
303+ ( p ) => p . appId === app . appId ,
304+ ) ;
305+ const permission = permittedPermission || unpermittedPermission ;
306+ const isUnpermitted = ! ! unpermittedPermission && ! permittedPermission ;
307+ const isDeleted = permission ?. isDeleted ?? false ;
308+ return (
309+ < PermittedAppCard
310+ key = { app . appId }
311+ app = { app }
312+ permission = { permission }
313+ isUnpermitted = { isUnpermitted }
314+ isDeleted = { isDeleted }
315+ index = { index + mainGridApps . length }
316+ appVersionsMap = { appVersionsMap }
317+ />
318+ ) ;
319+ } ) }
320+ </ div >
321+ </ >
322+ ) }
323+ </ >
251324 ) }
252325 </ div >
253326 </ div >
0 commit comments