@@ -2,12 +2,15 @@ const { HLWrite } = require("../filesystem/hl_operations/hl_write");
22const { LLMkdir } = require ( "../filesystem/ll_operations/ll_mkdir" ) ;
33const { LLRead } = require ( "../filesystem/ll_operations/ll_read" ) ;
44const { NodePathSelector } = require ( "../filesystem/node/selectors" ) ;
5+ const { get_app } = require ( "../helpers" ) ;
56const { Endpoint } = require ( "../util/expressutil" ) ;
67const { buffer_to_stream } = require ( "../util/streamutil" ) ;
78const BaseService = require ( "./BaseService" ) ;
89
910const ICON_SIZES = [ 16 , 32 , 64 , 128 , 256 , 512 ] ;
1011
12+ const DEFAULT_APP_ICON = require ( './default-app-icon.js' ) ;
13+
1114/**
1215 * AppIconService handles icon generation and serving for apps.
1316 *
@@ -51,7 +54,20 @@ class AppIconService extends BaseService {
5154 // Get icon file node
5255 const dir_app_icons = await this . get_app_icons ( ) ;
5356 const node = await dir_app_icons . getChild ( `${ app_uid } -${ size } .png` ) ;
54- await node . fetchEntry ( ) ;
57+ if ( ! await node . exists ( ) ) {
58+ // Use database-stored icon as a fallback
59+ const app = await get_app ( { uid : app_uid } ) ;
60+ if ( ! app . icon ) {
61+ app . icon = DEFAULT_APP_ICON ;
62+ }
63+ const [ metadata , app_icon ] = app . icon . split ( ',' ) ;
64+ console . log ( 'METADATA' , metadata ) ;
65+ const mime = metadata . split ( ';' ) [ 0 ] . split ( ':' ) [ 1 ] ;
66+ const img = Buffer . from ( app_icon , 'base64' ) ;
67+ res . set ( 'Content-Type' , mime ) ;
68+ res . send ( img ) ;
69+ return ;
70+ }
5571
5672 const svc_su = this . services . get ( 'su' ) ;
5773 const ll_read = new LLRead ( ) ;
0 commit comments