diff --git a/packages/api/src/controllers/apps.js b/packages/api/src/controllers/apps.js index c6504874e..9594a1afd 100644 --- a/packages/api/src/controllers/apps.js +++ b/packages/api/src/controllers/apps.js @@ -21,6 +21,7 @@ module.exports = { const name = await this.getNewAppFolder({ name: folder }); await fs.mkdir(path.join(appdir(), name)); socket.emitChanged('app-folders-changed'); + this.emitChangedDbApp(folder); return name; }, @@ -93,6 +94,8 @@ module.exports = { if (!folder) throw new Error('Missing folder parameter'); await fs.rmdir(path.join(appdir(), folder), { recursive: true }); socket.emitChanged(`app-folders-changed`); + socket.emitChanged(`app-files-changed-${folder}`); + socket.emitChanged('used-apps-changed'); }, async getNewAppFolder({ name }) { diff --git a/packages/web/src/utility/appTools.ts b/packages/web/src/utility/appTools.ts index 506e1aaa7..376f80402 100644 --- a/packages/web/src/utility/appTools.ts +++ b/packages/web/src/utility/appTools.ts @@ -29,5 +29,5 @@ export async function saveDbToApp(conid: string, database: string, app: string) export function filterAppsForDatabase(connection, database: string, $apps): ApplicationDefinition[] { const db = (connection?.databases || []).find(x => x.name == database); - return $apps.filter(app => db && db[`useApp:${app.name}`]); + return $apps?.filter(app => db && db[`useApp:${app.name}`]); } diff --git a/packages/web/src/utility/dictionaryDescriptionTools.ts b/packages/web/src/utility/dictionaryDescriptionTools.ts index 87cc9557f..c80807314 100644 --- a/packages/web/src/utility/dictionaryDescriptionTools.ts +++ b/packages/web/src/utility/dictionaryDescriptionTools.ts @@ -19,9 +19,18 @@ export function getDictionaryDescription( connections, skipCheckSaved: boolean = false ): DictionaryDescription { - const conn = connections.find(x => x._id == conid); + const conn = connections?.find(x => x._id == conid); + + if (!conn) { + return null; + } + const dbApps = filterAppsForDatabase(conn, database, apps); + if (!dbApps) { + return null; + } + const cached = _.flatten(dbApps.map(x => x.dictionaryDescriptions || [])).find( x => x.pureName == table.pureName && x.schemaName == table.schemaName );