forked from EVOgeek/Vmeda.Online
		
	MOBILE-4272 workshop: Decouple services
This commit is contained in:
		
							parent
							
								
									a5cd697012
								
							
						
					
					
						commit
						0d6eb5cb23
					
				| @ -23,27 +23,35 @@ import { CoreCronDelegate } from '@services/cron'; | |||||||
| import { CORE_SITE_SCHEMAS } from '@services/sites'; | import { CORE_SITE_SCHEMAS } from '@services/sites'; | ||||||
| import { AddonModWorkshopAssessmentStrategyModule } from './assessment/assessment.module'; | import { AddonModWorkshopAssessmentStrategyModule } from './assessment/assessment.module'; | ||||||
| import { AddonModWorkshopComponentsModule } from './components/components.module'; | import { AddonModWorkshopComponentsModule } from './components/components.module'; | ||||||
| import { AddonWorkshopAssessmentStrategyDelegateService } from './services/assessment-strategy-delegate'; |  | ||||||
| import { ADDON_MOD_WORKSHOP_OFFLINE_SITE_SCHEMA } from './services/database/workshop'; | import { ADDON_MOD_WORKSHOP_OFFLINE_SITE_SCHEMA } from './services/database/workshop'; | ||||||
| import { AddonModWorkshopIndexLinkHandler } from './services/handlers/index-link'; | import { AddonModWorkshopIndexLinkHandler } from './services/handlers/index-link'; | ||||||
| import { AddonModWorkshopListLinkHandler } from './services/handlers/list-link'; | import { AddonModWorkshopListLinkHandler } from './services/handlers/list-link'; | ||||||
| import { AddonModWorkshopModuleHandler } from './services/handlers/module'; | import { AddonModWorkshopModuleHandler } from './services/handlers/module'; | ||||||
| import { AddonModWorkshopProvider } from './services/workshop'; |  | ||||||
| import { AddonModWorkshopHelperProvider } from './services/workshop-helper'; |  | ||||||
| import { AddonModWorkshopOfflineProvider } from './services/workshop-offline'; |  | ||||||
| import { AddonModWorkshopSyncProvider } from './services/workshop-sync'; |  | ||||||
| import { ADDON_MOD_WORKSHOP_COMPONENT, ADDON_MOD_WORKSHOP_PAGE_NAME } from '@addons/mod/workshop/constants'; | import { ADDON_MOD_WORKSHOP_COMPONENT, ADDON_MOD_WORKSHOP_PAGE_NAME } from '@addons/mod/workshop/constants'; | ||||||
| import { getCronHandlerInstance } from '@addons/mod/workshop/services/handlers/sync-cron'; | import { getCronHandlerInstance } from '@addons/mod/workshop/services/handlers/sync-cron'; | ||||||
| import { getPrefetchHandlerInstance } from '@addons/mod/workshop/services/handlers/prefetch'; | import { getPrefetchHandlerInstance } from '@addons/mod/workshop/services/handlers/prefetch'; | ||||||
| 
 | 
 | ||||||
| // List of providers (without handlers).
 | /** | ||||||
| export const ADDON_MOD_WORKSHOP_SERVICES: Type<unknown>[] = [ |  * Get workshop services. | ||||||
|  |  * | ||||||
|  |  * @returns Workshop services. | ||||||
|  |  */ | ||||||
|  | export async function getWorkshopServices(): Promise<Type<unknown>[]> { | ||||||
|  |     const { AddonModWorkshopProvider } = await import('@addons/mod/workshop/services/workshop'); | ||||||
|  |     const { AddonModWorkshopOfflineProvider } = await import('@addons/mod/workshop/services/workshop-offline'); | ||||||
|  |     const { AddonModWorkshopSyncProvider } = await import('@addons/mod/workshop/services/workshop-sync'); | ||||||
|  |     const { AddonModWorkshopHelperProvider } = await import('@addons/mod/workshop/services/workshop-helper'); | ||||||
|  |     const { AddonWorkshopAssessmentStrategyDelegateService } = | ||||||
|  |         await import('@addons/mod/workshop/services/assessment-strategy-delegate'); | ||||||
|  | 
 | ||||||
|  |     return [ | ||||||
|         AddonModWorkshopProvider, |         AddonModWorkshopProvider, | ||||||
|         AddonModWorkshopOfflineProvider, |         AddonModWorkshopOfflineProvider, | ||||||
|         AddonModWorkshopSyncProvider, |         AddonModWorkshopSyncProvider, | ||||||
|         AddonModWorkshopHelperProvider, |         AddonModWorkshopHelperProvider, | ||||||
|         AddonWorkshopAssessmentStrategyDelegateService, |         AddonWorkshopAssessmentStrategyDelegateService, | ||||||
| ]; |     ]; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| const routes: Routes = [ | const routes: Routes = [ | ||||||
|     { |     { | ||||||
|  | |||||||
| @ -126,11 +126,8 @@ export class CoreCompileHtmlComponent implements OnChanges, OnDestroy, DoCheck { | |||||||
|             this.compiling.emit(true); |             this.compiling.emit(true); | ||||||
| 
 | 
 | ||||||
|             try { |             try { | ||||||
|                 const factory = await CoreCompile.createAndCompileComponent( |                 const componentClass = await this.getComponentClass(); | ||||||
|                     this.text, |                 const factory = await CoreCompile.createAndCompileComponent(this.text, componentClass, this.extraImports); | ||||||
|                     this.getComponentClass(), |  | ||||||
|                     this.extraImports, |  | ||||||
|                 ); |  | ||||||
| 
 | 
 | ||||||
|                 // Destroy previous components.
 |                 // Destroy previous components.
 | ||||||
|                 this.componentRef?.destroy(); |                 this.componentRef?.destroy(); | ||||||
| @ -166,9 +163,10 @@ export class CoreCompileHtmlComponent implements OnChanges, OnDestroy, DoCheck { | |||||||
|      * |      * | ||||||
|      * @returns The component class. |      * @returns The component class. | ||||||
|      */ |      */ | ||||||
|     protected getComponentClass(): Type<unknown> { |     protected async getComponentClass(): Promise<Type<unknown>> { | ||||||
|         // eslint-disable-next-line @typescript-eslint/no-this-alias
 |         // eslint-disable-next-line @typescript-eslint/no-this-alias
 | ||||||
|         const compileInstance = this; |         const compileInstance = this; | ||||||
|  |         const lazyLibraries = await CoreCompile.getLazyLibraries(); | ||||||
| 
 | 
 | ||||||
|         // Create the component, using the text as the template.
 |         // Create the component, using the text as the template.
 | ||||||
|         return class CoreCompileHtmlFakeComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy { |         return class CoreCompileHtmlFakeComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy { | ||||||
| @ -184,7 +182,10 @@ export class CoreCompileHtmlComponent implements OnChanges, OnDestroy, DoCheck { | |||||||
|                 this['dataArray'] = []; |                 this['dataArray'] = []; | ||||||
| 
 | 
 | ||||||
|                 // Inject the libraries.
 |                 // Inject the libraries.
 | ||||||
|                 CoreCompile.injectLibraries(this, compileInstance.extraProviders); |                 CoreCompile.injectLibraries(this, [ | ||||||
|  |                     ...lazyLibraries, | ||||||
|  |                     ...compileInstance.extraProviders, | ||||||
|  |                 ]); | ||||||
| 
 | 
 | ||||||
|                 // Always add these elements, they could be needed on component init (componentObservable).
 |                 // Always add these elements, they could be needed on component init (componentObservable).
 | ||||||
|                 this['ChangeDetectorRef'] = compileInstance.changeDetector; |                 this['ChangeDetectorRef'] = compileInstance.changeDetector; | ||||||
|  | |||||||
| @ -149,7 +149,7 @@ import { ADDON_MOD_SCORM_SERVICES } from '@addons/mod/scorm/scorm.module'; | |||||||
| import { ADDON_MOD_SURVEY_SERVICES } from '@addons/mod/survey/survey.module'; | import { ADDON_MOD_SURVEY_SERVICES } from '@addons/mod/survey/survey.module'; | ||||||
| import { ADDON_MOD_URL_SERVICES } from '@addons/mod/url/url.module'; | import { ADDON_MOD_URL_SERVICES } from '@addons/mod/url/url.module'; | ||||||
| import { ADDON_MOD_WIKI_SERVICES } from '@addons/mod/wiki/wiki.module'; | import { ADDON_MOD_WIKI_SERVICES } from '@addons/mod/wiki/wiki.module'; | ||||||
| import { ADDON_MOD_WORKSHOP_SERVICES } from '@addons/mod/workshop/workshop.module'; | import { getWorkshopServices } from '@addons/mod/workshop/workshop.module'; | ||||||
| import { ADDON_NOTES_SERVICES } from '@addons/notes/notes.module'; | import { ADDON_NOTES_SERVICES } from '@addons/notes/notes.module'; | ||||||
| import { ADDON_NOTIFICATIONS_SERVICES } from '@addons/notifications/notifications.module'; | import { ADDON_NOTIFICATIONS_SERVICES } from '@addons/notifications/notifications.module'; | ||||||
| import { ADDON_PRIVATEFILES_SERVICES } from '@addons/privatefiles/privatefiles.module'; | import { ADDON_PRIVATEFILES_SERVICES } from '@addons/privatefiles/privatefiles.module'; | ||||||
| @ -317,7 +317,6 @@ export class CoreCompileProvider { | |||||||
|             ...ADDON_MOD_SURVEY_SERVICES, |             ...ADDON_MOD_SURVEY_SERVICES, | ||||||
|             ...ADDON_MOD_URL_SERVICES, |             ...ADDON_MOD_URL_SERVICES, | ||||||
|             ...ADDON_MOD_WIKI_SERVICES, |             ...ADDON_MOD_WIKI_SERVICES, | ||||||
|             ...ADDON_MOD_WORKSHOP_SERVICES, |  | ||||||
|             ...ADDON_NOTES_SERVICES, |             ...ADDON_NOTES_SERVICES, | ||||||
|             ...ADDON_NOTIFICATIONS_SERVICES, |             ...ADDON_NOTIFICATIONS_SERVICES, | ||||||
|             ...ADDON_PRIVATEFILES_SERVICES, |             ...ADDON_PRIVATEFILES_SERVICES, | ||||||
| @ -388,6 +387,19 @@ export class CoreCompileProvider { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Get lazy libraries to inject. | ||||||
|  |      * | ||||||
|  |      * @returns Lazy libraries. | ||||||
|  |      */ | ||||||
|  |     async getLazyLibraries(): Promise<Type<unknown>[]> { | ||||||
|  |         const ADDON_MOD_WORKSHOP_SERVICES = await getWorkshopServices(); | ||||||
|  | 
 | ||||||
|  |         return [ | ||||||
|  |             ...ADDON_MOD_WORKSHOP_SERVICES, | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Instantiate a dynamic component. |      * Instantiate a dynamic component. | ||||||
|      * |      * | ||||||
|  | |||||||
| @ -268,11 +268,13 @@ export class CoreSitePluginsHelperProvider { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // Create a "fake" instance to hold all the libraries.
 |         // Create a "fake" instance to hold all the libraries.
 | ||||||
|  |         const lazyLibraries = await CoreCompile.getLazyLibraries(); | ||||||
|         const instance = { |         const instance = { | ||||||
|             // eslint-disable-next-line @typescript-eslint/naming-convention
 |             // eslint-disable-next-line @typescript-eslint/naming-convention
 | ||||||
|             HANDLER_DISABLED: HANDLER_DISABLED, |             HANDLER_DISABLED: HANDLER_DISABLED, | ||||||
|         }; |         }; | ||||||
|         CoreCompile.injectLibraries(instance); | 
 | ||||||
|  |         CoreCompile.injectLibraries(instance, lazyLibraries); | ||||||
| 
 | 
 | ||||||
|         // Add some data of the WS call result.
 |         // Add some data of the WS call result.
 | ||||||
|         const jsData = CoreSitePlugins.createDataForJS(result); |         const jsData = CoreSitePlugins.createDataForJS(result); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user