import { Injectable } from '@angular/core'; import { plugins } from '../../../plugins'; import { CommonAppConfig } from '../../site/common/common.config'; import { ModelConstructor, BaseModel } from '../../shared/models/base/base-model'; import { AppConfig } from '../../site/base/app-config'; import { CollectionStringModelMapperService } from './collectionStringModelMapper.service'; import { MediafileAppConfig } from '../../site/mediafiles/mediafile.config'; import { MotionsAppConfig } from '../../site/motions/motions.config'; import { SettingsAppConfig } from '../../site/settings/settings.config'; import { AgendaAppConfig } from '../../site/agenda/agenda.config'; import { AssignmentsAppConfig } from '../../site/assignments/assignments.config'; import { UsersAppConfig } from '../../site/users/users.config'; import { MainMenuService } from './main-menu.service'; /** * A list of all app configurations of all delivered apps. */ const appConfigs: AppConfig[] = [ CommonAppConfig, SettingsAppConfig, AgendaAppConfig, AssignmentsAppConfig, MotionsAppConfig, MediafileAppConfig, UsersAppConfig ]; /** * Handles all incoming and outgoing notify messages via {@link WebsocketService}. */ @Injectable({ providedIn: 'root' }) export class AppLoadService { public constructor( private modelMapper: CollectionStringModelMapperService, private mainMenuService: MainMenuService ) {} public async loadApps(): Promise { if (plugins.length) { console.log('plugins: ', plugins); } /*for (const pluginName of plugins) { const plugin = await import('../../../../../plugins/' + pluginName + '/' + pluginName); plugin.main(); }*/ appConfigs.forEach((config: AppConfig) => { if (config.models) { config.models.forEach(entry => { this.modelMapper.registerCollectionElement(entry.collectionString, entry.model); }); } if (config.mainMenuEntries) { this.mainMenuService.registerEntries(config.mainMenuEntries); } }); } }