MOBILE-3620 delegate: Make all delegate singletons
parent
d6123fef1a
commit
29858ea5e7
|
@ -26,8 +26,8 @@ import { AddonFilterActivityNamesHandler } from './services/handlers/activitynam
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterActivityNamesHandler],
|
||||
useFactory: (handler: AddonFilterActivityNamesHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterActivityNamesHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Activity names filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterActivityNamesHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterActivityNamesHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterActivityNamesHandler';
|
||||
filterName = 'activitynames';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterActivityNamesHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterActivityNamesHandler extends makeSingleton(AddonFilterActivityNamesHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterAlgebraHandler } from './services/handlers/algebra';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterAlgebraHandler],
|
||||
useFactory: (handler: AddonFilterAlgebraHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterAlgebraHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Algebra notation filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterAlgebraHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterAlgebraHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterAlgebraHandler';
|
||||
filterName = 'algebra';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterAlgebraHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterAlgebraHandler extends makeSingleton(AddonFilterAlgebraHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterCensorHandler } from './services/handlers/censor';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterCensorHandler],
|
||||
useFactory: (handler: AddonFilterCensorHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterCensorHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Word censorship filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterCensorHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterCensorHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterCensorHandler';
|
||||
filterName = 'censor';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterCensorHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterCensorHandler extends makeSingleton(AddonFilterCensorHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterDataHandler } from './services/handlers/data';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterDataHandler],
|
||||
useFactory: (handler: AddonFilterDataHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterDataHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Database auto-link filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterDataHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterDataHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterDataHandler';
|
||||
filterName = 'data';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterDataHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterDataHandler extends makeSingleton(AddonFilterDataHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterDisplayH5PHandler } from './services/handlers/displayh5p';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterDisplayH5PHandler],
|
||||
useFactory: (handler: AddonFilterDisplayH5PHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterDisplayH5PHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -16,13 +16,14 @@ import { Injectable, ViewContainerRef, ComponentFactoryResolver } from '@angular
|
|||
|
||||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFilter, CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { makeSingleton } from '@singletons';
|
||||
// @todo import { CoreH5PPlayerComponent } from '@core/h5p/components/h5p-player/h5p-player';
|
||||
|
||||
/**
|
||||
* Handler to support the Display H5P filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterDisplayH5PHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterDisplayH5PHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterDisplayH5PHandler';
|
||||
filterName = 'displayh5p';
|
||||
|
@ -108,3 +109,5 @@ export class AddonFilterDisplayH5PHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterDisplayH5PHandler extends makeSingleton(AddonFilterDisplayH5PHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterEmailProtectHandler } from './services/handlers/emailprotect
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterEmailProtectHandler],
|
||||
useFactory: (handler: AddonFilterEmailProtectHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterEmailProtectHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Email protection filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterEmailProtectHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterEmailProtectHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterEmailProtectHandler';
|
||||
filterName = 'emailprotect';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterEmailProtectHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterEmailProtectHandler extends makeSingleton(AddonFilterEmailProtectHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterEmoticonHandler } from './services/handlers/emoticon';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterEmoticonHandler],
|
||||
useFactory: (handler: AddonFilterEmoticonHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterEmoticonHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Emoticon filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterEmoticonHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterEmoticonHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterEmoticonHandler';
|
||||
filterName = 'emoticon';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterEmoticonHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterEmoticonHandler extends makeSingleton(AddonFilterEmoticonHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterGlossaryHandler } from './services/handlers/glossary';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterGlossaryHandler],
|
||||
useFactory: (handler: AddonFilterGlossaryHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterGlossaryHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Glossary auto-link filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterGlossaryHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterGlossaryHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterGlossaryHandler';
|
||||
filterName = 'glossary';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterGlossaryHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterGlossaryHandler extends makeSingleton(AddonFilterGlossaryHandlerService) {}
|
||||
|
|
|
@ -26,11 +26,11 @@ import { AddonFilterMathJaxLoaderHandler } from './services/handlers/mathjaxload
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterMathJaxLoaderHandler],
|
||||
useFactory: (handler: AddonFilterMathJaxLoaderHandler) => async () => {
|
||||
CoreFilterDelegate.instance.registerHandler(handler);
|
||||
deps: [],
|
||||
useFactory: () => async () => {
|
||||
CoreFilterDelegate.instance.registerHandler(AddonFilterMathJaxLoaderHandler.instance);
|
||||
|
||||
await handler.initialize();
|
||||
await AddonFilterMathJaxLoaderHandler.instance.initialize();
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
|
@ -22,12 +22,13 @@ import { CoreTextUtils } from '@services/utils/text';
|
|||
import { CoreUtils } from '@services/utils/utils';
|
||||
import { CoreEvents } from '@singletons/events';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the MathJax filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterMathJaxLoaderHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterMathJaxLoaderHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterMathJaxLoaderHandler';
|
||||
filterName = 'mathjaxloader';
|
||||
|
@ -395,6 +396,8 @@ export class AddonFilterMathJaxLoaderHandler extends CoreFilterDefaultHandler {
|
|||
|
||||
}
|
||||
|
||||
export class AddonFilterMathJaxLoaderHandler extends makeSingleton(AddonFilterMathJaxLoaderHandlerService) {}
|
||||
|
||||
type MathJaxWindow = Window & {
|
||||
MathJax?: any; // eslint-disable-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any
|
||||
M?: { // eslint-disable-line @typescript-eslint/naming-convention
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterMediaPluginHandler } from './services/handlers/mediaplugin';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterMediaPluginHandler],
|
||||
useFactory: (handler: AddonFilterMediaPluginHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterMediaPluginHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -18,12 +18,13 @@ import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/def
|
|||
import { CoreFilterFilter, CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreTextUtils } from '@services/utils/text';
|
||||
import { CoreUrlUtils } from '@services/utils/url';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Multimedia filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterMediaPluginHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterMediaPluginHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterMediaPluginHandler';
|
||||
filterName = 'mediaplugin';
|
||||
|
@ -90,6 +91,8 @@ export class AddonFilterMediaPluginHandler extends CoreFilterDefaultHandler {
|
|||
|
||||
}
|
||||
|
||||
export class AddonFilterMediaPluginHandler extends makeSingleton(AddonFilterMediaPluginHandlerService) {}
|
||||
|
||||
type VideoDataSetup = {
|
||||
techOrder?: string[];
|
||||
sources?: {
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterMultilangHandler } from './services/handlers/multilang';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterMultilangHandler],
|
||||
useFactory: (handler: AddonFilterMultilangHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterMultilangHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -18,12 +18,13 @@ import { CoreLang } from '@services/lang';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFilter, CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the Multilang filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterMultilangHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterMultilangHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterMultilangHandler';
|
||||
filterName = 'multilang';
|
||||
|
@ -82,3 +83,5 @@ export class AddonFilterMultilangHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterMultilangHandler extends makeSingleton(AddonFilterMultilangHandlerService) {}
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the TeX notation filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterTexHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterTexHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterTexHandler';
|
||||
filterName = 'tex';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterTexHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterTexHandler extends makeSingleton(AddonFilterTexHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterTexHandler } from './services/handlers/tex';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterTexHandler],
|
||||
useFactory: (handler: AddonFilterTexHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterTexHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the HTML tidy filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterTidyHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterTidyHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterTidyHandler';
|
||||
filterName = 'tidy';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterTidyHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterTidyHandler extends makeSingleton(AddonFilterTidyHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterTidyHandler } from './services/handlers/tidy';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterTidyHandler],
|
||||
useFactory: (handler: AddonFilterTidyHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterTidyHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -17,12 +17,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreFilterDefaultHandler } from '@features/filter/services/handlers/default-filter';
|
||||
import { CoreFilterFormatTextOptions } from '@features/filter/services/filter';
|
||||
import { CoreSite } from '@classes/site';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to support the URL to link and images filter.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonFilterUrlToLinkHandler extends CoreFilterDefaultHandler {
|
||||
export class AddonFilterUrlToLinkHandlerService extends CoreFilterDefaultHandler {
|
||||
|
||||
name = 'AddonFilterUrlToLinkHandler';
|
||||
filterName = 'urltolink';
|
||||
|
@ -41,3 +42,5 @@ export class AddonFilterUrlToLinkHandler extends CoreFilterDefaultHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonFilterUrlToLinkHandler extends makeSingleton(AddonFilterUrlToLinkHandlerService) {}
|
||||
|
|
|
@ -26,8 +26,8 @@ import { AddonFilterUrlToLinkHandler } from './services/handlers/urltolink';
|
|||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [AddonFilterUrlToLinkHandler],
|
||||
useFactory: (handler: AddonFilterUrlToLinkHandler) => () => CoreFilterDelegate.instance.registerHandler(handler),
|
||||
deps: [],
|
||||
useFactory: () => () => CoreFilterDelegate.instance.registerHandler(AddonFilterUrlToLinkHandler.instance),
|
||||
},
|
||||
],
|
||||
})
|
||||
|
|
|
@ -12,16 +12,16 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { Routes } from '@angular/router';
|
||||
|
||||
import { CoreMainMenuDelegate } from '@features/mainmenu/services/mainmenu-delegate';
|
||||
import { CoreMainMenuRoutingModule } from '@features/mainmenu/mainmenu-routing.module';
|
||||
import { AddonPrivateFilesMainMenuHandler } from './services/handlers/mainmenu';
|
||||
import { AddonPrivateFilesMainMenuHandler, AddonPrivateFilesMainMenuHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: AddonPrivateFilesMainMenuHandler.PAGE_NAME,
|
||||
path: AddonPrivateFilesMainMenuHandlerService.PAGE_NAME,
|
||||
loadChildren: () => import('@/addons/privatefiles/privatefiles-lazy.module').then(m => m.AddonPrivateFilesLazyModule),
|
||||
},
|
||||
];
|
||||
|
@ -30,16 +30,14 @@ const routes: Routes = [
|
|||
imports: [CoreMainMenuRoutingModule.forChild({ children: routes })],
|
||||
exports: [CoreMainMenuRoutingModule],
|
||||
providers: [
|
||||
AddonPrivateFilesMainMenuHandler,
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [],
|
||||
useFactory: () => () => {
|
||||
CoreMainMenuDelegate.instance.registerHandler(AddonPrivateFilesMainMenuHandler.instance);
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
export class AddonPrivateFilesModule {
|
||||
|
||||
constructor(
|
||||
mainMenuDelegate: CoreMainMenuDelegate,
|
||||
mainMenuHandler: AddonPrivateFilesMainMenuHandler,
|
||||
) {
|
||||
mainMenuDelegate.registerHandler(mainMenuHandler);
|
||||
}
|
||||
|
||||
}
|
||||
export class AddonPrivateFilesModule {}
|
||||
|
|
|
@ -16,12 +16,13 @@ import { Injectable } from '@angular/core';
|
|||
|
||||
import { CoreMainMenuHandler, CoreMainMenuHandlerData } from '@features/mainmenu/services/mainmenu-delegate';
|
||||
import { AddonPrivateFiles } from '@/addons/privatefiles/services/privatefiles';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to inject an option into main menu.
|
||||
*/
|
||||
@Injectable()
|
||||
export class AddonPrivateFilesMainMenuHandler implements CoreMainMenuHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AddonPrivateFilesMainMenuHandlerService implements CoreMainMenuHandler {
|
||||
|
||||
static readonly PAGE_NAME = 'private';
|
||||
|
||||
|
@ -46,10 +47,12 @@ export class AddonPrivateFilesMainMenuHandler implements CoreMainMenuHandler {
|
|||
return {
|
||||
icon: 'fas-folder',
|
||||
title: 'addon.privatefiles.files',
|
||||
page: AddonPrivateFilesMainMenuHandler.PAGE_NAME,
|
||||
page: AddonPrivateFilesMainMenuHandlerService.PAGE_NAME,
|
||||
subPage: 'root',
|
||||
class: 'addon-privatefiles-handler',
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class AddonPrivateFilesMainMenuHandler extends makeSingleton(AddonPrivateFilesMainMenuHandlerService) {}
|
||||
|
|
|
@ -60,9 +60,7 @@ export class CoreFileComponent implements OnInit, OnDestroy {
|
|||
protected fileSize?: number;
|
||||
protected observer?: CoreEventObserver;
|
||||
|
||||
constructor(
|
||||
protected pluginFileDelegate: CorePluginFileDelegate,
|
||||
) {
|
||||
constructor() {
|
||||
this.onDelete = new EventEmitter<void>();
|
||||
}
|
||||
|
||||
|
@ -195,7 +193,7 @@ export class CoreFileComponent implements OnInit, OnDestroy {
|
|||
} else {
|
||||
try {
|
||||
// File doesn't need to be opened (it's a prefetch). Show confirm modal if file size is defined and it's big.
|
||||
const size = await this.pluginFileDelegate.getFileSize(this.file, this.siteId);
|
||||
const size = await CorePluginFileDelegate.instance.getFileSize(this.file, this.siteId);
|
||||
|
||||
if (size) {
|
||||
await CoreDomUtils.instance.confirmDownloadSize({ size: size, total: true });
|
||||
|
|
|
@ -18,6 +18,7 @@ import { CoreSites } from '@services/sites';
|
|||
import { CoreUrlUtils } from '@services/utils/url';
|
||||
import { CoreUtils } from '@services/utils/utils';
|
||||
import { Params } from '@angular/router';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Interface that all handlers must implement.
|
||||
|
@ -132,10 +133,8 @@ export interface CoreContentLinksHandlerActions {
|
|||
/**
|
||||
* Delegate to register handlers to handle links.
|
||||
*/
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CoreContentLinksDelegate {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreContentLinksDelegateService {
|
||||
|
||||
protected logger: CoreLogger;
|
||||
protected handlers: { [s: string]: CoreContentLinksHandler } = {}; // All registered handlers.
|
||||
|
@ -307,3 +306,5 @@ export class CoreContentLinksDelegate {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreContentLinksDelegate extends makeSingleton(CoreContentLinksDelegateService) {}
|
||||
|
|
|
@ -33,7 +33,6 @@ import { Params } from '@angular/router';
|
|||
export class CoreContentLinksHelperProvider {
|
||||
|
||||
constructor(
|
||||
protected contentLinksDelegate: CoreContentLinksDelegate,
|
||||
protected navCtrl: NavController,
|
||||
) { }
|
||||
|
||||
|
@ -80,7 +79,7 @@ export class CoreContentLinksHelperProvider {
|
|||
username?: string,
|
||||
data?: unknown,
|
||||
): Promise<CoreContentLinksAction | undefined> {
|
||||
const actions = await this.contentLinksDelegate.getActionsFor(url, courseId, username, data);
|
||||
const actions = await CoreContentLinksDelegate.instance.getActionsFor(url, courseId, username, data);
|
||||
if (!actions) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -12,27 +12,27 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { Routes } from '@angular/router';
|
||||
|
||||
import { CoreMainMenuHomeRoutingModule } from '@features/mainmenu/pages/home/home-routing.module';
|
||||
import { CoreMainMenuHomeDelegate } from '@features/mainmenu/services/home-delegate';
|
||||
|
||||
import { CoreDashboardHomeHandler } from './services/handlers/dashboard-home';
|
||||
import { CoreCoursesMyCoursesHomeHandler } from './services/handlers/my-courses.home';
|
||||
import { CoreDashboardHomeHandler, CoreDashboardHomeHandlerService } from './services/handlers/dashboard-home';
|
||||
import { CoreCoursesMyCoursesHomeHandler, CoreCoursesMyCoursesHomeHandlerService } from './services/handlers/my-courses.home';
|
||||
|
||||
const mainMenuHomeChildrenRoutes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
pathMatch: 'full',
|
||||
redirectTo: CoreDashboardHomeHandler.PAGE_NAME,
|
||||
redirectTo: CoreDashboardHomeHandlerService.PAGE_NAME,
|
||||
},
|
||||
{
|
||||
path: CoreDashboardHomeHandler.PAGE_NAME,
|
||||
path: CoreDashboardHomeHandlerService.PAGE_NAME,
|
||||
loadChildren: () => import('./pages/dashboard/dashboard.module').then(m => m.CoreCoursesDashboardPageModule),
|
||||
},
|
||||
{
|
||||
path: CoreCoursesMyCoursesHomeHandler.PAGE_NAME,
|
||||
path: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME,
|
||||
loadChildren: () => import('./pages/my-courses/my-courses.module').then(m => m.CoreCoursesMyCoursesPageModule),
|
||||
},
|
||||
];
|
||||
|
@ -52,19 +52,15 @@ const mainMenuHomeSiblingRoutes: Routes = [
|
|||
}),
|
||||
],
|
||||
providers: [
|
||||
CoreDashboardHomeHandler,
|
||||
CoreCoursesMyCoursesHomeHandler,
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [],
|
||||
useFactory: () => () => {
|
||||
CoreMainMenuHomeDelegate.instance.registerHandler(CoreDashboardHomeHandler.instance);
|
||||
CoreMainMenuHomeDelegate.instance.registerHandler(CoreCoursesMyCoursesHomeHandler.instance);
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
export class CoreCoursesModule {
|
||||
|
||||
constructor(
|
||||
homeDelegate: CoreMainMenuHomeDelegate,
|
||||
coursesDashboardHandler: CoreDashboardHomeHandler,
|
||||
coursesMyCoursesHandler: CoreCoursesMyCoursesHomeHandler,
|
||||
) {
|
||||
homeDelegate.registerHandler(coursesDashboardHandler);
|
||||
homeDelegate.registerHandler(coursesMyCoursesHandler);
|
||||
}
|
||||
|
||||
}
|
||||
export class CoreCoursesModule {}
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreMainMenuHomeHandler, CoreMainMenuHomeHandlerToDisplay } from '@features/mainmenu/services/home-delegate';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to add dashboard into home page.
|
||||
*/
|
||||
Injectable();
|
||||
export class CoreDashboardHomeHandler implements CoreMainMenuHomeHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreDashboardHomeHandlerService implements CoreMainMenuHomeHandler {
|
||||
|
||||
static readonly PAGE_NAME = 'dashboard';
|
||||
|
||||
|
@ -55,7 +56,7 @@ export class CoreDashboardHomeHandler implements CoreMainMenuHomeHandler {
|
|||
getDisplayData(): CoreMainMenuHomeHandlerToDisplay {
|
||||
return {
|
||||
title: 'core.courses.mymoodle',
|
||||
page: CoreDashboardHomeHandler.PAGE_NAME,
|
||||
page: CoreDashboardHomeHandlerService.PAGE_NAME,
|
||||
class: 'core-courses-dashboard-handler',
|
||||
icon: 'fas-tachometer-alt',
|
||||
selectPriority: 1000,
|
||||
|
@ -63,3 +64,5 @@ export class CoreDashboardHomeHandler implements CoreMainMenuHomeHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreDashboardHomeHandler extends makeSingleton(CoreDashboardHomeHandlerService) {}
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreMainMenuHomeHandler, CoreMainMenuHomeHandlerToDisplay } from '@features/mainmenu/services/home-delegate';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to add my courses into home page.
|
||||
*/
|
||||
Injectable();
|
||||
export class CoreCoursesMyCoursesHomeHandler implements CoreMainMenuHomeHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeHandler {
|
||||
|
||||
static readonly PAGE_NAME = 'courses';
|
||||
|
||||
|
@ -55,7 +56,7 @@ export class CoreCoursesMyCoursesHomeHandler implements CoreMainMenuHomeHandler
|
|||
getDisplayData(): CoreMainMenuHomeHandlerToDisplay {
|
||||
return {
|
||||
title: 'core.courses.mycourses',
|
||||
page: CoreCoursesMyCoursesHomeHandler.PAGE_NAME,
|
||||
page: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME,
|
||||
class: 'core-courses-my-courses-handler',
|
||||
icon: 'fas-graduation-cap',
|
||||
selectPriority: 900,
|
||||
|
@ -63,3 +64,5 @@ export class CoreCoursesMyCoursesHomeHandler implements CoreMainMenuHomeHandler
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreCoursesMyCoursesHomeHandler extends makeSingleton(CoreCoursesMyCoursesHomeHandlerService) {}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
|
||||
import { CoreFileUploaderDelegate } from './services/fileuploader-delegate';
|
||||
import { CoreFileUploaderAlbumHandler } from './services/handlers/album';
|
||||
|
@ -26,28 +26,18 @@ import { CoreFileUploaderVideoHandler } from './services/handlers/video';
|
|||
imports: [],
|
||||
declarations: [],
|
||||
providers: [
|
||||
CoreFileUploaderAlbumHandler,
|
||||
CoreFileUploaderAudioHandler,
|
||||
CoreFileUploaderCameraHandler,
|
||||
CoreFileUploaderFileHandler,
|
||||
CoreFileUploaderVideoHandler,
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [],
|
||||
useFactory: () => () => {
|
||||
CoreFileUploaderDelegate.instance.registerHandler(CoreFileUploaderAlbumHandler.instance);
|
||||
CoreFileUploaderDelegate.instance.registerHandler(CoreFileUploaderAudioHandler.instance);
|
||||
CoreFileUploaderDelegate.instance.registerHandler(CoreFileUploaderCameraHandler.instance);
|
||||
CoreFileUploaderDelegate.instance.registerHandler(CoreFileUploaderVideoHandler.instance);
|
||||
CoreFileUploaderDelegate.instance.registerHandler(CoreFileUploaderFileHandler.instance);
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
export class CoreFileUploaderModule {
|
||||
|
||||
constructor(
|
||||
delegate: CoreFileUploaderDelegate,
|
||||
albumHandler: CoreFileUploaderAlbumHandler,
|
||||
audioHandler: CoreFileUploaderAudioHandler,
|
||||
cameraHandler: CoreFileUploaderCameraHandler,
|
||||
videoHandler: CoreFileUploaderVideoHandler,
|
||||
fileHandler: CoreFileUploaderFileHandler,
|
||||
) {
|
||||
delegate.registerHandler(albumHandler);
|
||||
delegate.registerHandler(audioHandler);
|
||||
delegate.registerHandler(cameraHandler);
|
||||
delegate.registerHandler(videoHandler);
|
||||
delegate.registerHandler(fileHandler);
|
||||
}
|
||||
|
||||
}
|
||||
export class CoreFileUploaderModule {}
|
||||
|
|
|
@ -18,6 +18,7 @@ import { FileEntry } from '@ionic-native/file';
|
|||
import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
|
||||
import { CoreEvents } from '@singletons/events';
|
||||
import { CoreWSUploadFileResult } from '@services/ws';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Interface that all handlers must implement.
|
||||
|
@ -141,7 +142,7 @@ export interface CoreFileUploaderHandlerDataToReturn extends CoreFileUploaderHan
|
|||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CoreFileUploaderDelegate extends CoreDelegate<CoreFileUploaderHandler> {
|
||||
export class CoreFileUploaderDelegateService extends CoreDelegate<CoreFileUploaderHandler> {
|
||||
|
||||
constructor() {
|
||||
super('CoreFileUploaderDelegate', true);
|
||||
|
@ -196,3 +197,5 @@ export class CoreFileUploaderDelegate extends CoreDelegate<CoreFileUploaderHandl
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreFileUploaderDelegate extends makeSingleton(CoreFileUploaderDelegateService) {}
|
||||
|
|
|
@ -47,7 +47,7 @@ export class CoreFileUploaderHelperProvider {
|
|||
protected filePickerDeferred?: PromiseDefer<CoreWSUploadFileResult | FileEntry>;
|
||||
protected actionSheet?: HTMLIonActionSheetElement;
|
||||
|
||||
constructor(protected uploaderDelegate: CoreFileUploaderDelegate) {
|
||||
constructor() {
|
||||
this.logger = CoreLogger.getInstance('CoreFileUploaderHelperProvider');
|
||||
}
|
||||
|
||||
|
@ -351,7 +351,7 @@ export class CoreFileUploaderHelperProvider {
|
|||
this.filePickerClosed();
|
||||
},
|
||||
}];
|
||||
const handlers = this.uploaderDelegate.getHandlers(mimetypes);
|
||||
const handlers = CoreFileUploaderDelegate.instance.getHandlers(mimetypes);
|
||||
|
||||
this.filePickerDeferred = CoreUtils.instance.promiseDefer();
|
||||
|
||||
|
|
|
@ -16,14 +16,15 @@ import { Injectable } from '@angular/core';
|
|||
|
||||
import { CoreApp } from '@services/app';
|
||||
import { CoreUtils } from '@services/utils/utils';
|
||||
import { makeSingleton } from '@singletons';
|
||||
import { CoreFileUploaderHandler, CoreFileUploaderHandlerData, CoreFileUploaderHandlerResult } from '../fileuploader-delegate';
|
||||
import { CoreFileUploaderHelper } from '../fileuploader-helper';
|
||||
|
||||
/**
|
||||
* Handler to upload files from the album.
|
||||
*/
|
||||
@Injectable()
|
||||
export class CoreFileUploaderAlbumHandler implements CoreFileUploaderHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreFileUploaderAlbumHandlerService implements CoreFileUploaderHandler {
|
||||
|
||||
name = 'CoreFileUploaderAlbum';
|
||||
priority = 2000;
|
||||
|
@ -75,3 +76,5 @@ export class CoreFileUploaderAlbumHandler implements CoreFileUploaderHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreFileUploaderAlbumHandler extends makeSingleton(CoreFileUploaderAlbumHandlerService) {}
|
||||
|
|
|
@ -16,13 +16,14 @@ import { Injectable } from '@angular/core';
|
|||
|
||||
import { CoreApp } from '@services/app';
|
||||
import { CoreUtils } from '@services/utils/utils';
|
||||
import { makeSingleton } from '@singletons';
|
||||
import { CoreFileUploaderHandler, CoreFileUploaderHandlerData, CoreFileUploaderHandlerResult } from '../fileuploader-delegate';
|
||||
import { CoreFileUploaderHelper } from '../fileuploader-helper';
|
||||
/**
|
||||
* Handler to record an audio to upload it.
|
||||
*/
|
||||
@Injectable()
|
||||
export class CoreFileUploaderAudioHandler implements CoreFileUploaderHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreFileUploaderAudioHandlerService implements CoreFileUploaderHandler {
|
||||
|
||||
name = 'CoreFileUploaderAudio';
|
||||
priority = 1600;
|
||||
|
@ -90,3 +91,5 @@ export class CoreFileUploaderAudioHandler implements CoreFileUploaderHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreFileUploaderAudioHandler extends makeSingleton(CoreFileUploaderAudioHandlerService) {}
|
|
@ -16,14 +16,15 @@ import { Injectable } from '@angular/core';
|
|||
|
||||
import { CoreApp } from '@services/app';
|
||||
import { CoreUtils } from '@services/utils/utils';
|
||||
import { makeSingleton } from '@singletons';
|
||||
import { CoreFileUploaderHandler, CoreFileUploaderHandlerData, CoreFileUploaderHandlerResult } from '../fileuploader-delegate';
|
||||
import { CoreFileUploaderHelper } from '../fileuploader-helper';
|
||||
|
||||
/**
|
||||
* Handler to take a picture to upload it.
|
||||
*/
|
||||
@Injectable()
|
||||
export class CoreFileUploaderCameraHandler implements CoreFileUploaderHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreFileUploaderCameraHandlerService implements CoreFileUploaderHandler {
|
||||
|
||||
name = 'CoreFileUploaderCamera';
|
||||
priority = 1800;
|
||||
|
@ -75,3 +76,5 @@ export class CoreFileUploaderCameraHandler implements CoreFileUploaderHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreFileUploaderCameraHandler extends makeSingleton(CoreFileUploaderCameraHandlerService) {}
|
||||
|
|
|
@ -19,13 +19,13 @@ import { CoreDomUtils } from '@services/utils/dom';
|
|||
import { CoreFileUploaderHandler, CoreFileUploaderHandlerData, CoreFileUploaderHandlerResult } from '../fileuploader-delegate';
|
||||
import { CoreFileUploaderHelper } from '../fileuploader-helper';
|
||||
import { CoreFileUploader } from '../fileuploader';
|
||||
import { Translate } from '@singletons';
|
||||
import { makeSingleton, Translate } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to upload any type of file.
|
||||
*/
|
||||
@Injectable()
|
||||
export class CoreFileUploaderFileHandler implements CoreFileUploaderHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreFileUploaderFileHandlerService implements CoreFileUploaderHandler {
|
||||
|
||||
name = 'CoreFileUploaderFile';
|
||||
priority = 1200;
|
||||
|
@ -156,3 +156,5 @@ export class CoreFileUploaderFileHandler implements CoreFileUploaderHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreFileUploaderFileHandler extends makeSingleton(CoreFileUploaderFileHandlerService) {}
|
||||
|
|
|
@ -16,13 +16,14 @@ import { Injectable } from '@angular/core';
|
|||
|
||||
import { CoreApp } from '@services/app';
|
||||
import { CoreUtils } from '@services/utils/utils';
|
||||
import { makeSingleton } from '@singletons';
|
||||
import { CoreFileUploaderHandler, CoreFileUploaderHandlerData, CoreFileUploaderHandlerResult } from '../fileuploader-delegate';
|
||||
import { CoreFileUploaderHelper } from '../fileuploader-helper';
|
||||
/**
|
||||
* Handler to record a video to upload it.
|
||||
*/
|
||||
@Injectable()
|
||||
export class CoreFileUploaderVideoHandler implements CoreFileUploaderHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreFileUploaderVideoHandlerService implements CoreFileUploaderHandler {
|
||||
|
||||
name = 'CoreFileUploaderVideo';
|
||||
priority = 1400;
|
||||
|
@ -90,3 +91,5 @@ export class CoreFileUploaderVideoHandler implements CoreFileUploaderHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreFileUploaderVideoHandler extends makeSingleton(CoreFileUploaderVideoHandlerService) {}
|
||||
|
|
|
@ -25,7 +25,7 @@ import { resolveModuleRoutes } from '@/app/app-routing.module';
|
|||
|
||||
import { MAIN_MENU_ROUTES } from './mainmenu-routing.module';
|
||||
import { CoreMainMenuPage } from './pages/menu/menu';
|
||||
import { CoreMainMenuHomeHandler } from './services/handlers/mainmenu';
|
||||
import { CoreMainMenuHomeHandlerService } from './services/handlers/mainmenu';
|
||||
|
||||
function buildRoutes(injector: Injector): Routes {
|
||||
const routes = resolveModuleRoutes(injector, MAIN_MENU_ROUTES);
|
||||
|
@ -38,10 +38,10 @@ function buildRoutes(injector: Injector): Routes {
|
|||
{
|
||||
path: '',
|
||||
pathMatch: 'full',
|
||||
redirectTo: CoreMainMenuHomeHandler.PAGE_NAME,
|
||||
redirectTo: CoreMainMenuHomeHandlerService.PAGE_NAME,
|
||||
},
|
||||
{
|
||||
path: CoreMainMenuHomeHandler.PAGE_NAME,
|
||||
path: CoreMainMenuHomeHandlerService.PAGE_NAME,
|
||||
loadChildren: () => import('./pages/home/home.module').then(m => m.CoreMainMenuHomePageModule),
|
||||
},
|
||||
{
|
||||
|
@ -68,7 +68,6 @@ function buildRoutes(injector: Injector): Routes {
|
|||
CoreMainMenuPage,
|
||||
],
|
||||
providers: [
|
||||
CoreMainMenuHomeHandler,
|
||||
{ provide: ROUTES, multi: true, useFactory: buildRoutes, deps: [Injector] },
|
||||
],
|
||||
})
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { Routes } from '@angular/router';
|
||||
import { AuthGuard } from '@guards/auth';
|
||||
|
||||
|
@ -37,14 +37,15 @@ const appRoutes: Routes = [
|
|||
|
||||
@NgModule({
|
||||
imports: [AppRoutingModule.forChild(appRoutes)],
|
||||
providers: [
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [],
|
||||
useFactory: () => () => {
|
||||
CoreMainMenuDelegate.instance.registerHandler(CoreMainMenuHomeHandler.instance);
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
export class CoreMainMenuModule {
|
||||
|
||||
constructor(
|
||||
mainMenuDelegate: CoreMainMenuDelegate,
|
||||
homeMainMenuHandler: CoreMainMenuHomeHandler,
|
||||
) {
|
||||
mainMenuDelegate.registerHandler(homeMainMenuHandler);
|
||||
}
|
||||
|
||||
}
|
||||
export class CoreMainMenuModule {}
|
||||
|
|
|
@ -40,15 +40,13 @@ export class CoreMainMenuHomePage implements OnInit {
|
|||
protected subscription?: Subscription;
|
||||
protected updateSiteObserver?: CoreEventObserver;
|
||||
|
||||
constructor(protected homeDelegate: CoreMainMenuHomeDelegate) {}
|
||||
|
||||
/**
|
||||
* Initialize the component.
|
||||
*/
|
||||
ngOnInit(): void {
|
||||
this.loadSiteName();
|
||||
|
||||
this.subscription = this.homeDelegate.getHandlersObservable().subscribe((handlers) => {
|
||||
this.subscription = CoreMainMenuHomeDelegate.instance.getHandlersObservable().subscribe((handlers) => {
|
||||
handlers && this.initHandlers(handlers);
|
||||
});
|
||||
|
||||
|
@ -90,7 +88,7 @@ export class CoreMainMenuHomePage implements OnInit {
|
|||
|
||||
this.tabs = newTabs;
|
||||
|
||||
this.loaded = this.homeDelegate.areHandlersLoaded();
|
||||
this.loaded = CoreMainMenuHomeDelegate.instance.areHandlersLoaded();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -57,7 +57,6 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
|
|||
constructor(
|
||||
protected route: ActivatedRoute,
|
||||
protected navCtrl: NavController,
|
||||
protected menuDelegate: CoreMainMenuDelegate,
|
||||
protected changeDetector: ChangeDetectorRef,
|
||||
protected router: Router,
|
||||
) {
|
||||
|
@ -98,7 +97,7 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
|
|||
}
|
||||
});
|
||||
|
||||
this.subscription = this.menuDelegate.getHandlersObservable().subscribe((handlers) => {
|
||||
this.subscription = CoreMainMenuDelegate.instance.getHandlersObservable().subscribe((handlers) => {
|
||||
// Remove the handlers that should only appear in the More menu.
|
||||
this.allHandlers = handlers.filter((handler) => !handler.onlyInMore);
|
||||
|
||||
|
@ -164,7 +163,7 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
|
|||
// Sort them by priority so new handlers are in the right position.
|
||||
this.tabs.sort((a, b) => (b.priority || 0) - (a.priority || 0));
|
||||
|
||||
this.loaded = this.menuDelegate.areHandlersLoaded();
|
||||
this.loaded = CoreMainMenuDelegate.instance.areHandlersLoaded();
|
||||
|
||||
if (this.loaded && this.mainTabs && !this.mainTabs.getSelected()) {
|
||||
// Select the first tab.
|
||||
|
|
|
@ -49,9 +49,7 @@ export class CoreMainMenuMorePage implements OnInit, OnDestroy {
|
|||
protected langObserver: CoreEventObserver;
|
||||
protected updateSiteObserver: CoreEventObserver;
|
||||
|
||||
constructor(
|
||||
protected menuDelegate: CoreMainMenuDelegate,
|
||||
) {
|
||||
constructor() {
|
||||
|
||||
this.langObserver = CoreEvents.on(CoreEvents.LANGUAGE_CHANGED, this.loadSiteInfo.bind(this));
|
||||
this.updateSiteObserver = CoreEvents.on(
|
||||
|
@ -69,7 +67,7 @@ export class CoreMainMenuMorePage implements OnInit, OnDestroy {
|
|||
*/
|
||||
ngOnInit(): void {
|
||||
// Load the handlers.
|
||||
this.subscription = this.menuDelegate.getHandlersObservable().subscribe((handlers) => {
|
||||
this.subscription = CoreMainMenuDelegate.instance.getHandlersObservable().subscribe((handlers) => {
|
||||
this.allHandlers = handlers;
|
||||
|
||||
this.initHandlers();
|
||||
|
@ -104,7 +102,7 @@ export class CoreMainMenuMorePage implements OnInit, OnDestroy {
|
|||
// Get only the handlers that don't appear in the main view.
|
||||
this.handlers = this.allHandlers.filter((handler) => mainHandlers.indexOf(handler) == -1);
|
||||
|
||||
this.handlersLoaded = this.menuDelegate.areHandlersLoaded();
|
||||
this.handlersLoaded = CoreMainMenuDelegate.instance.areHandlersLoaded();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -13,13 +13,14 @@
|
|||
// limitations under the License.
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { makeSingleton } from '@singletons';
|
||||
import { CoreMainMenuHandler, CoreMainMenuHandlerData } from '../mainmenu-delegate';
|
||||
|
||||
/**
|
||||
* Handler to add Home into main menu.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreMainMenuHomeHandler implements CoreMainMenuHandler {
|
||||
export class CoreMainMenuHomeHandlerService implements CoreMainMenuHandler {
|
||||
|
||||
static readonly PAGE_NAME = 'home';
|
||||
|
||||
|
@ -56,10 +57,12 @@ export class CoreMainMenuHomeHandler implements CoreMainMenuHandler {
|
|||
return {
|
||||
icon: 'fa-home',
|
||||
title: 'core.mainmenu.home',
|
||||
page: CoreMainMenuHomeHandler.PAGE_NAME,
|
||||
page: CoreMainMenuHomeHandlerService.PAGE_NAME,
|
||||
// @todo: subPage? The page can change due to core-tabs.
|
||||
class: 'core-home-handler',
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreMainMenuHomeHandler extends makeSingleton(CoreMainMenuHomeHandlerService) {}
|
||||
|
|
|
@ -17,6 +17,7 @@ import { Params } from '@angular/router';
|
|||
|
||||
import { CoreDelegateDisplayHandler, CoreDelegateToDisplay } from '@classes/delegate';
|
||||
import { CoreSortedDelegate } from '@classes/delegate-sorted';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Interface that all home handlers must implement.
|
||||
|
@ -85,7 +86,7 @@ export interface CoreMainMenuHomeHandlerToDisplay extends CoreDelegateToDisplay,
|
|||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CoreMainMenuHomeDelegate extends CoreSortedDelegate<CoreMainMenuHomeHandlerToDisplay, CoreMainMenuHomeHandler> {
|
||||
export class CoreMainMenuHomeDelegateService extends CoreSortedDelegate<CoreMainMenuHomeHandlerToDisplay, CoreMainMenuHomeHandler> {
|
||||
|
||||
protected featurePrefix = 'CoreMainMenuHomeDelegate_';
|
||||
|
||||
|
@ -94,3 +95,5 @@ export class CoreMainMenuHomeDelegate extends CoreSortedDelegate<CoreMainMenuHom
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreMainMenuHomeDelegate extends makeSingleton(CoreMainMenuHomeDelegateService) {}
|
||||
|
|
|
@ -17,6 +17,7 @@ import { Params } from '@angular/router';
|
|||
|
||||
import { CoreDelegateDisplayHandler, CoreDelegateToDisplay } from '@classes/delegate';
|
||||
import { CoreSortedDelegate } from '@classes/delegate-sorted';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Interface that all main menu handlers must implement.
|
||||
|
@ -97,7 +98,7 @@ export interface CoreMainMenuHandlerToDisplay extends CoreDelegateToDisplay, Cor
|
|||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CoreMainMenuDelegate extends CoreSortedDelegate<CoreMainMenuHandlerToDisplay, CoreMainMenuHandler> {
|
||||
export class CoreMainMenuDelegateService extends CoreSortedDelegate<CoreMainMenuHandlerToDisplay, CoreMainMenuHandler> {
|
||||
|
||||
protected featurePrefix = 'CoreMainMenuDelegate_';
|
||||
|
||||
|
@ -106,3 +107,5 @@ export class CoreMainMenuDelegate extends CoreSortedDelegate<CoreMainMenuHandler
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreMainMenuDelegate extends makeSingleton(CoreMainMenuDelegateService) {}
|
||||
|
|
|
@ -35,7 +35,7 @@ export class CoreMainMenuProvider {
|
|||
|
||||
protected tablet = false;
|
||||
|
||||
constructor(protected menuDelegate: CoreMainMenuDelegate) {
|
||||
constructor() {
|
||||
this.tablet = !!(window?.innerWidth && window.innerWidth >= 576 && window.innerHeight >= 576);
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ export class CoreMainMenuProvider {
|
|||
getCurrentMainMenuHandlers(): Promise<CoreMainMenuHandlerToDisplay[]> {
|
||||
const deferred = CoreUtils.instance.promiseDefer<CoreMainMenuHandlerToDisplay[]>();
|
||||
|
||||
const subscription = this.menuDelegate.getHandlersObservable().subscribe((handlers) => {
|
||||
const subscription = CoreMainMenuDelegate.instance.getHandlersObservable().subscribe((handlers) => {
|
||||
subscription?.unsubscribe();
|
||||
|
||||
// Remove the handlers that should only appear in the More menu.
|
||||
|
|
|
@ -57,7 +57,6 @@ export class CoreSitePreferencesPage implements OnInit, OnDestroy {
|
|||
protected isDestroyed = false;
|
||||
|
||||
constructor(
|
||||
protected settingsDelegate: CoreSettingsDelegate,
|
||||
protected route: ActivatedRoute,
|
||||
protected router: Router, // Will be removed when splitview is implemented
|
||||
) {
|
||||
|
@ -97,7 +96,7 @@ export class CoreSitePreferencesPage implements OnInit, OnDestroy {
|
|||
* Fetch Data.
|
||||
*/
|
||||
protected async fetchData(): Promise<void> {
|
||||
this.handlers = this.settingsDelegate.getHandlers();
|
||||
this.handlers = CoreSettingsDelegate.instance.getHandlers();
|
||||
|
||||
const currentSite = CoreSites.instance.getCurrentSite();
|
||||
this.siteInfo = currentSite!.getInfo();
|
||||
|
|
|
@ -17,6 +17,7 @@ import { Params } from '@angular/router';
|
|||
|
||||
import { CoreDelegateDisplayHandler, CoreDelegateToDisplay } from '@classes/delegate';
|
||||
import { CoreSortedDelegate } from '@classes/delegate-sorted';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Interface that all settings handlers must implement.
|
||||
|
@ -65,10 +66,12 @@ export type CoreSettingsHandlerToDisplay = CoreDelegateToDisplay & CoreSettingsH
|
|||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CoreSettingsDelegate extends CoreSortedDelegate<CoreSettingsHandlerToDisplay, CoreSettingsHandler> {
|
||||
export class CoreSettingsDelegateService extends CoreSortedDelegate<CoreSettingsHandlerToDisplay, CoreSettingsHandler> {
|
||||
|
||||
constructor() {
|
||||
super('CoreSettingsDelegate');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreSettingsDelegate extends makeSingleton(CoreSettingsDelegateService) {}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreApp } from '@services/app';
|
||||
import { CoreCron } from '@services/cron';
|
||||
import { CoreCronDelegate } from '@services/cron';
|
||||
import { CoreEvents } from '@singletons/events';
|
||||
import { CoreFilepool } from '@services/filepool';
|
||||
import { CoreSite } from '@classes/site';
|
||||
|
@ -277,7 +277,7 @@ export class CoreSettingsHelperProvider {
|
|||
}
|
||||
|
||||
const site = await CoreSites.instance.getSite(siteId);
|
||||
const hasSyncHandlers = CoreCron.instance.hasManualSyncHandlers();
|
||||
const hasSyncHandlers = CoreCronDelegate.instance.hasManualSyncHandlers();
|
||||
|
||||
if (site.isLoggedOut()) {
|
||||
// Cannot sync logged out sites.
|
||||
|
@ -296,7 +296,7 @@ export class CoreSettingsHelperProvider {
|
|||
site.invalidateWsCache(),
|
||||
this.checkSiteLocalMobile(site),
|
||||
CoreSites.instance.updateSiteInfo(site.getId()),
|
||||
CoreCron.instance.forceSyncExecution(site.getId()),
|
||||
CoreCronDelegate.instance.forceSyncExecution(site.getId()),
|
||||
// eslint-disable-next-line arrow-body-style
|
||||
]).then(() => {
|
||||
return;
|
||||
|
|
|
@ -19,12 +19,13 @@ import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base
|
|||
import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper';
|
||||
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
|
||||
import { CoreSiteHome } from '../sitehome';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to treat links to site home index.
|
||||
*/
|
||||
Injectable();
|
||||
export class CoreSiteHomeIndexLinkHandler extends CoreContentLinksHandlerBase {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreSiteHomeIndexLinkHandlerService extends CoreContentLinksHandlerBase {
|
||||
|
||||
name = 'CoreSiteHomeIndexLinkHandler';
|
||||
featureName = 'CoreMainMenuDelegate_CoreSiteHome';
|
||||
|
@ -73,3 +74,5 @@ export class CoreSiteHomeIndexLinkHandler extends CoreContentLinksHandlerBase {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreSiteHomeIndexLinkHandler extends makeSingleton(CoreSiteHomeIndexLinkHandlerService) {}
|
||||
|
|
|
@ -16,12 +16,13 @@ import { Injectable } from '@angular/core';
|
|||
import { CoreSites } from '@services/sites';
|
||||
import { CoreMainMenuHomeHandler, CoreMainMenuHomeHandlerToDisplay } from '@features/mainmenu/services/home-delegate';
|
||||
import { CoreSiteHome } from '../sitehome';
|
||||
import { makeSingleton } from '@singletons';
|
||||
|
||||
/**
|
||||
* Handler to add site home into home page.
|
||||
*/
|
||||
Injectable();
|
||||
export class CoreSiteHomeHomeHandler implements CoreMainMenuHomeHandler {
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreSiteHomeHomeHandlerService implements CoreMainMenuHomeHandler {
|
||||
|
||||
static readonly PAGE_NAME = 'site';
|
||||
|
||||
|
@ -58,7 +59,7 @@ export class CoreSiteHomeHomeHandler implements CoreMainMenuHomeHandler {
|
|||
|
||||
return {
|
||||
title: 'core.sitehome.sitehome',
|
||||
page: CoreSiteHomeHomeHandler.PAGE_NAME,
|
||||
page: CoreSiteHomeHomeHandlerService.PAGE_NAME,
|
||||
class: 'core-sitehome-dashboard-handler',
|
||||
icon: 'fas-home',
|
||||
selectPriority: displaySiteHome ? 1100 : 900,
|
||||
|
@ -66,3 +67,5 @@ export class CoreSiteHomeHomeHandler implements CoreMainMenuHomeHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export class CoreSiteHomeHomeHandler extends makeSingleton(CoreSiteHomeHomeHandlerService) {}
|
||||
|
|
|
@ -12,18 +12,18 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { Routes } from '@angular/router';
|
||||
|
||||
import { CoreSiteHomeIndexLinkHandler } from './services/handlers/index-link';
|
||||
import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate';
|
||||
import { CoreSiteHomeHomeHandler } from './services/handlers/sitehome-home';
|
||||
import { CoreSiteHomeHomeHandler, CoreSiteHomeHomeHandlerService } from './services/handlers/sitehome-home';
|
||||
import { CoreMainMenuHomeDelegate } from '@features/mainmenu/services/home-delegate';
|
||||
import { CoreMainMenuHomeRoutingModule } from '@features/mainmenu/pages/home/home-routing.module';
|
||||
|
||||
const mainMenuHomeRoutes: Routes = [
|
||||
{
|
||||
path: CoreSiteHomeHomeHandler.PAGE_NAME,
|
||||
path: CoreSiteHomeHomeHandlerService.PAGE_NAME,
|
||||
loadChildren: () => import('./pages/index/index.module').then(m => m.CoreSiteHomeIndexPageModule),
|
||||
},
|
||||
];
|
||||
|
@ -32,20 +32,15 @@ const mainMenuHomeRoutes: Routes = [
|
|||
imports: [CoreMainMenuHomeRoutingModule.forChild({ children: mainMenuHomeRoutes })],
|
||||
exports: [CoreMainMenuHomeRoutingModule],
|
||||
providers: [
|
||||
CoreSiteHomeIndexLinkHandler,
|
||||
CoreSiteHomeHomeHandler,
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
deps: [],
|
||||
useFactory: () => () => {
|
||||
CoreContentLinksDelegate.instance.registerHandler(CoreSiteHomeIndexLinkHandler.instance);
|
||||
CoreMainMenuHomeDelegate.instance.registerHandler(CoreSiteHomeHomeHandler.instance);
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
export class CoreSiteHomeModule {
|
||||
|
||||
constructor(
|
||||
contentLinksDelegate: CoreContentLinksDelegate,
|
||||
homeDelegate: CoreMainMenuHomeDelegate,
|
||||
siteHomeIndexLinkHandler: CoreSiteHomeIndexLinkHandler,
|
||||
siteHomeDashboardHandler: CoreSiteHomeHomeHandler,
|
||||
) {
|
||||
contentLinksDelegate.registerHandler(siteHomeIndexLinkHandler);
|
||||
homeDelegate.registerHandler(siteHomeDashboardHandler);
|
||||
}
|
||||
|
||||
}
|
||||
export class CoreSiteHomeModule {}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
import { CoreApp } from '@services/app';
|
||||
import { CoreConfig } from '@services/config';
|
||||
import { CoreCron } from '@services/cron';
|
||||
import { CoreCronDelegate } from '@services/cron';
|
||||
import { CoreFilepool } from '@services/filepool';
|
||||
import { CoreLocalNotifications } from '@services/local-notifications';
|
||||
import { CoreSites } from '@services/sites';
|
||||
|
@ -23,7 +23,7 @@ export default async function(): Promise<void> {
|
|||
await Promise.all([
|
||||
CoreApp.instance.initialiseDatabase(),
|
||||
CoreConfig.instance.initialiseDatabase(),
|
||||
CoreCron.instance.initialiseDatabase(),
|
||||
CoreCronDelegate.instance.initialiseDatabase(),
|
||||
CoreFilepool.instance.initialiseDatabase(),
|
||||
CoreLocalNotifications.instance.initialiseDatabase(),
|
||||
CoreSites.instance.initialiseDatabase(),
|
||||
|
|
|
@ -14,19 +14,19 @@
|
|||
|
||||
import { ApplicationRef } from '@angular/core';
|
||||
import { CoreApp, CoreAppProvider } from '@services/app';
|
||||
import { CoreCron, CoreCronDelegate } from '@services/cron';
|
||||
import { CoreCronDelegate, CoreCronDelegateService } from '@services/cron';
|
||||
import { Application } from '@singletons';
|
||||
|
||||
type AutomatedTestsWindow = Window & {
|
||||
appRef?: ApplicationRef;
|
||||
appProvider?: CoreAppProvider;
|
||||
cronProvider?: CoreCronDelegate;
|
||||
cronProvider?: CoreCronDelegateService;
|
||||
};
|
||||
|
||||
function initializeAutomatedTestsWindow(window: AutomatedTestsWindow) {
|
||||
window.appRef = Application.instance;
|
||||
window.appProvider = CoreApp.instance;
|
||||
window.cronProvider = CoreCron.instance;
|
||||
window.cronProvider = CoreCronDelegate.instance;
|
||||
}
|
||||
|
||||
export default function(): void {
|
||||
|
|
|
@ -29,7 +29,7 @@ import { APP_SCHEMA, CRON_TABLE_NAME, CronDBEntry } from '@services/database/cro
|
|||
* Service to handle cron processes. The registered processes will be executed every certain time.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CoreCronDelegate {
|
||||
export class CoreCronDelegateService {
|
||||
|
||||
// Constants.
|
||||
static readonly DEFAULT_INTERVAL = 3600000; // Default interval is 1 hour.
|
||||
|
@ -108,7 +108,7 @@ export class CoreCronDelegate {
|
|||
// Cannot execute in this network connection, retry soon.
|
||||
const message = `Cannot execute handler because device is using limited connection: ${name}`;
|
||||
this.logger.debug(message);
|
||||
this.scheduleNextExecution(name, CoreCronDelegate.MIN_INTERVAL);
|
||||
this.scheduleNextExecution(name, CoreCronDelegateService.MIN_INTERVAL);
|
||||
|
||||
throw new CoreError(message);
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ export class CoreCronDelegate {
|
|||
// Handler call failed. Retry soon.
|
||||
const message = `Execution of handler '${name}' failed.`;
|
||||
this.logger.error(message, error);
|
||||
this.scheduleNextExecution(name, CoreCronDelegate.MIN_INTERVAL);
|
||||
this.scheduleNextExecution(name, CoreCronDelegateService.MIN_INTERVAL);
|
||||
|
||||
throw new CoreError(message);
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ export class CoreCronDelegate {
|
|||
// The handler took too long. Resolve because we don't want to retry soon.
|
||||
this.logger.debug(`Resolving execution of handler '${name}' because it took too long.`);
|
||||
resolve();
|
||||
}, CoreCronDelegate.MAX_TIME_PROCESS);
|
||||
}, CoreCronDelegateService.MAX_TIME_PROCESS);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -215,15 +215,15 @@ export class CoreCronDelegate {
|
|||
protected getHandlerInterval(name: string): number {
|
||||
if (!this.handlers[name] || !this.handlers[name].getInterval) {
|
||||
// Invalid, return default.
|
||||
return CoreCronDelegate.DEFAULT_INTERVAL;
|
||||
return CoreCronDelegateService.DEFAULT_INTERVAL;
|
||||
}
|
||||
|
||||
// Don't allow intervals lower than the minimum.
|
||||
const minInterval = CoreCronDelegate.MIN_INTERVAL;
|
||||
const minInterval = CoreCronDelegateService.MIN_INTERVAL;
|
||||
const handlerInterval = this.handlers[name].getInterval!();
|
||||
|
||||
if (!handlerInterval) {
|
||||
return CoreCronDelegate.DEFAULT_INTERVAL;
|
||||
return CoreCronDelegateService.DEFAULT_INTERVAL;
|
||||
} else {
|
||||
return Math.max(minInterval, handlerInterval);
|
||||
}
|
||||
|
@ -476,7 +476,7 @@ export class CoreCronDelegate {
|
|||
|
||||
}
|
||||
|
||||
export class CoreCron extends makeSingleton(CoreCronDelegate) {}
|
||||
export class CoreCronDelegate extends makeSingleton(CoreCronDelegateService) {}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -499,7 +499,7 @@ export interface CoreCronHandler {
|
|||
timeout?: number;
|
||||
|
||||
/**
|
||||
* Returns handler's interval in milliseconds. Defaults to CoreCronDelegate.DEFAULT_INTERVAL.
|
||||
* Returns handler's interval in milliseconds. Defaults to CoreCronDelegateService.DEFAULT_INTERVAL.
|
||||
*
|
||||
* @return Interval time (in milliseconds).
|
||||
*/
|
||||
|
|
|
@ -18,7 +18,7 @@ import { Md5 } from 'ts-md5/dist/md5';
|
|||
import { CoreApp } from '@services/app';
|
||||
import { CoreEvents } from '@singletons/events';
|
||||
import { CoreFile } from '@services/file';
|
||||
import { CorePluginFile } from '@services/plugin-file-delegate';
|
||||
import { CorePluginFileDelegate } from '@services/plugin-file-delegate';
|
||||
import { CoreSites } from '@services/sites';
|
||||
import { CoreWS, CoreWSExternalFile } from '@services/ws';
|
||||
import { CoreDomUtils } from '@services/utils/dom';
|
||||
|
@ -697,7 +697,7 @@ export class CoreFilepoolProvider {
|
|||
|
||||
const entry = await CoreWS.instance.downloadFile(fileUrl, path, addExtension, onProgress);
|
||||
const fileEntry = entry;
|
||||
await CorePluginFile.instance.treatDownloadedFile(fileUrl, fileEntry, siteId, onProgress);
|
||||
await CorePluginFileDelegate.instance.treatDownloadedFile(fileUrl, fileEntry, siteId, onProgress);
|
||||
|
||||
await this.addFileToPool(siteId, fileId, {
|
||||
downloadTime: Date.now(),
|
||||
|
@ -1062,7 +1062,7 @@ export class CoreFilepoolProvider {
|
|||
}
|
||||
|
||||
// Now get other files from plugin file handlers.
|
||||
urls = urls.concat(CorePluginFile.instance.getDownloadableFilesFromHTML(element));
|
||||
urls = urls.concat(CorePluginFileDelegate.instance.getDownloadableFilesFromHTML(element));
|
||||
|
||||
return urls;
|
||||
}
|
||||
|
@ -1159,7 +1159,7 @@ export class CoreFilepoolProvider {
|
|||
* @return Promise resolved with the file data to use.
|
||||
*/
|
||||
protected async fixPluginfileURL(siteId: string, fileUrl: string, timemodified: number = 0): Promise<CoreWSExternalFile> {
|
||||
const file = await CorePluginFile.instance.getDownloadableFile({ fileurl: fileUrl, timemodified });
|
||||
const file = await CorePluginFileDelegate.instance.getDownloadableFile({ fileurl: fileUrl, timemodified });
|
||||
const site = await CoreSites.instance.getSite(siteId);
|
||||
|
||||
file.fileurl = await site.checkAndFixPluginfileURL(file.fileurl);
|
||||
|
@ -1918,7 +1918,7 @@ export class CoreFilepoolProvider {
|
|||
return 0;
|
||||
}
|
||||
|
||||
const revisionRegex = CorePluginFile.instance.getComponentRevisionRegExp(args);
|
||||
const revisionRegex = CorePluginFileDelegate.instance.getComponentRevisionRegExp(args);
|
||||
if (!revisionRegex) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -2662,7 +2662,7 @@ export class CoreFilepoolProvider {
|
|||
this.notifyFileDeleted(siteId, fileId, links);
|
||||
|
||||
if (fileUrl) {
|
||||
await CoreUtils.instance.ignoreErrors(CorePluginFile.instance.fileDeleted(fileUrl, path, siteId));
|
||||
await CoreUtils.instance.ignoreErrors(CorePluginFileDelegate.instance.fileDeleted(fileUrl, path, siteId));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2710,7 +2710,7 @@ export class CoreFilepoolProvider {
|
|||
return url;
|
||||
}
|
||||
|
||||
return CorePluginFile.instance.removeRevisionFromUrl(url, args);
|
||||
return CorePluginFileDelegate.instance.removeRevisionFromUrl(url, args);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -42,7 +42,7 @@ export class CoreSiteInfoCronHandler implements CoreCronHandler {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns handler's interval in milliseconds. Defaults to CoreCronDelegate.DEFAULT_INTERVAL.
|
||||
* Returns handler's interval in milliseconds. Defaults to CoreCronDelegateService.DEFAULT_INTERVAL.
|
||||
*
|
||||
* @return Interval time (in milliseconds).
|
||||
*/
|
||||
|
|
|
@ -25,7 +25,7 @@ import { makeSingleton } from '@singletons';
|
|||
* Delegate to register pluginfile information handlers.
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class CorePluginFileDelegate extends CoreDelegate<CorePluginFileHandler> {
|
||||
export class CorePluginFileDelegateService extends CoreDelegate<CorePluginFileHandler> {
|
||||
|
||||
protected handlerNameProperty = 'component';
|
||||
|
||||
|
@ -288,7 +288,7 @@ export class CorePluginFileDelegate extends CoreDelegate<CorePluginFileHandler>
|
|||
|
||||
}
|
||||
|
||||
export class CorePluginFile extends makeSingleton(CorePluginFileDelegate) {}
|
||||
export class CorePluginFileDelegate extends makeSingleton(CorePluginFileDelegateService) {}
|
||||
|
||||
/**
|
||||
* Interface that all plugin file handlers must implement.
|
||||
|
|
Loading…
Reference in New Issue