Skip to content

Commit 47e5158

Browse files
committed
MOBILE-4166 core: Implement CoreDirectivesRegistry and deprecate old one
1 parent 7341ca2 commit 47e5158

File tree

29 files changed

+392
-178
lines changed

29 files changed

+392
-178
lines changed

src/addons/mod/quiz/pages/player/player.page.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import { CanLeave } from '@guards/can-leave';
4747
import { CoreForms } from '@singletons/form';
4848
import { CoreDom } from '@singletons/dom';
4949
import { CoreTime } from '@singletons/time';
50-
import { CoreComponentsRegistry } from '@singletons/components-registry';
50+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
5151

5252
/**
5353
* Page that allows attempting a quiz.
@@ -690,7 +690,7 @@ export class AddonModQuizPlayerPage implements OnInit, OnDestroy, CanLeave {
690690
*/
691691
protected async scrollToQuestion(slot: number): Promise<void> {
692692
await CoreUtils.nextTick();
693-
await CoreComponentsRegistry.waitComponentsReady(this.elementRef.nativeElement, 'core-question');
693+
await CoreDirectivesRegistry.waitDirectivesReady(this.elementRef.nativeElement, 'core-question');
694694
await CoreDom.scrollToElement(
695695
this.elementRef.nativeElement,
696696
'#addon-mod_quiz-question-' + slot,

src/addons/qtype/ddwtos/classes/ddwtos.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import { CoreFormatTextDirective } from '@directives/format-text';
1616
import { CoreTextUtils } from '@services/utils/text';
1717
import { CoreUtils } from '@services/utils/utils';
18-
import { CoreComponentsRegistry } from '@singletons/components-registry';
18+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
1919
import { CoreCoordinates, CoreDom } from '@singletons/dom';
2020
import { CoreEventObserver } from '@singletons/events';
2121
import { CoreLogger } from '@singletons/logger';
@@ -427,7 +427,7 @@ export class AddonQtypeDdwtosQuestion {
427427
protected async waitForReady(): Promise<void> {
428428
await CoreDom.waitToBeInDOM(this.container);
429429

430-
await CoreComponentsRegistry.waitComponentsReady(this.container, 'core-format-text', CoreFormatTextDirective);
430+
await CoreDirectivesRegistry.waitDirectivesReady(this.container, 'core-format-text', CoreFormatTextDirective);
431431

432432
const drag = Array.from(this.container.querySelectorAll<HTMLElement>(this.selectors.dragHomes()))[0];
433433

src/core/classes/async-component.ts renamed to src/core/classes/async-directive.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
// limitations under the License.
1414

1515
/**
16-
* Component that is not rendered immediately after being mounted.
16+
* Directive that is not rendered immediately after being mounted.
1717
*/
18-
export interface AsyncComponent {
18+
export interface AsyncDirective {
1919

2020
/**
21-
* Wait until the component is fully rendered and ready.
21+
* Wait until the directive is fully rendered and ready.
2222
*/
2323
ready(): Promise<void>;
2424
}

src/core/classes/page-load-watcher.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import { CoreSitesReadingStrategy } from '@services/sites';
1616
import { CoreUtils } from '@services/utils/utils';
1717
import { Subscription } from 'rxjs';
18-
import { AsyncComponent } from './async-component';
18+
import { AsyncDirective } from './async-directive';
1919
import { PageLoadsManager } from './page-loads-manager';
2020
import { CorePromisedValue } from './promised-value';
2121
import { WSObservable } from './site';
@@ -27,7 +27,7 @@ export class PageLoadWatcher {
2727

2828
protected hasChanges = false;
2929
protected ongoingRequests = 0;
30-
protected components = new Set<AsyncComponent>();
30+
protected components = new Set<AsyncDirective>();
3131
protected loadedTimeout?: number;
3232
protected hasChangesPromises: Promise<boolean>[] = [];
3333

@@ -66,7 +66,7 @@ export class PageLoadWatcher {
6666
*
6767
* @param component Component instance.
6868
*/
69-
async watchComponent(component: AsyncComponent): Promise<void> {
69+
async watchComponent(component: AsyncDirective): Promise<void> {
7070
this.components.add(component);
7171
clearTimeout(this.loadedTimeout);
7272

src/core/classes/page-loads-manager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { CoreRefreshButtonModalComponent } from '@components/refresh-button-moda
1616
import { CoreNavigator } from '@services/navigator';
1717
import { CoreDomUtils } from '@services/utils/dom';
1818
import { Subject } from 'rxjs';
19-
import { AsyncComponent } from './async-component';
19+
import { AsyncDirective } from './async-directive';
2020
import { PageLoadWatcher } from './page-load-watcher';
2121

2222
/**
@@ -37,7 +37,7 @@ export class PageLoadsManager {
3737
* @param staleWhileRevalidate Whether to use stale while revalidate strategy.
3838
* @returns Load watcher to use.
3939
*/
40-
startPageLoad(page: AsyncComponent, staleWhileRevalidate: boolean): PageLoadWatcher {
40+
startPageLoad(page: AsyncDirective, staleWhileRevalidate: boolean): PageLoadWatcher {
4141
this.initialPath = this.initialPath ?? CoreNavigator.getCurrentPath();
4242
this.currentLoadWatcher = new PageLoadWatcher(this, staleWhileRevalidate);
4343
this.ongoingLoadWatchers.add(this.currentLoadWatcher);
@@ -53,7 +53,7 @@ export class PageLoadsManager {
5353
* @param component Component instance.
5454
* @returns Load watcher to use.
5555
*/
56-
startComponentLoad(component: AsyncComponent): PageLoadWatcher {
56+
startComponentLoad(component: AsyncDirective): PageLoadWatcher {
5757
// If a component is loading data without the page loading data, probably the component is reloading/refreshing.
5858
// In that case, create a load watcher instance but don't store it in currentLoadWatcher because it's not a page load.
5959
const loadWatcher = this.currentLoadWatcher ?? new PageLoadWatcher(this, false);

src/core/classes/tabs.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ import { CoreDom } from '@singletons/dom';
3737
import { CoreUtils } from '@services/utils/utils';
3838
import { CoreError } from './errors/error';
3939
import { CorePromisedValue } from './promised-value';
40-
import { AsyncComponent } from './async-component';
41-
import { CoreComponentsRegistry } from '@singletons/components-registry';
40+
import { AsyncDirective } from './async-directive';
41+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
4242
import { CorePlatform } from '@services/platform';
4343

4444
/**
@@ -47,7 +47,7 @@ import { CorePlatform } from '@services/platform';
4747
@Component({
4848
template: '',
4949
})
50-
export class CoreTabsBaseComponent<T extends CoreTabBase> implements OnInit, AfterViewInit, OnChanges, OnDestroy, AsyncComponent {
50+
export class CoreTabsBaseComponent<T extends CoreTabBase> implements OnInit, AfterViewInit, OnChanges, OnDestroy, AsyncDirective {
5151

5252
// Minimum tab's width.
5353
protected static readonly MIN_TAB_WIDTH = 107;
@@ -99,7 +99,7 @@ export class CoreTabsBaseComponent<T extends CoreTabBase> implements OnInit, Aft
9999

100100
this.tabAction = new CoreTabsRoleTab(this);
101101

102-
CoreComponentsRegistry.register(element.nativeElement, this);
102+
CoreDirectivesRegistry.register(element.nativeElement, this);
103103
}
104104

105105
/**

src/core/components/context-menu/context-menu.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { CoreUtils } from '@services/utils/utils';
2020
import { Translate } from '@singletons';
2121
import { CoreContextMenuItemComponent } from './context-menu-item';
2222
import { CoreContextMenuPopoverComponent } from './context-menu-popover';
23-
import { CoreComponentsRegistry } from '@singletons/components-registry';
23+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
2424

2525
/**
2626
* This component adds a button (usually in the navigation bar) that displays a context menu popover.
@@ -61,7 +61,7 @@ export class CoreContextMenuComponent implements OnInit, OnDestroy {
6161
// Calculate the unique ID.
6262
this.uniqueId = 'core-context-menu-' + CoreUtils.getUniqueId('CoreContextMenuComponent');
6363

64-
CoreComponentsRegistry.register(elementRef.nativeElement, this);
64+
CoreDirectivesRegistry.register(elementRef.nativeElement, this);
6565
}
6666

6767
/**

src/core/components/loading/loading.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import { CoreEventLoadingChangedData, CoreEvents } from '@singletons/events';
1818
import { CoreUtils } from '@services/utils/utils';
1919
import { CoreAnimations } from '@components/animations';
2020
import { Translate } from '@singletons';
21-
import { CoreComponentsRegistry } from '@singletons/components-registry';
21+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
2222
import { CorePromisedValue } from '@classes/promised-value';
23-
import { AsyncComponent } from '@classes/async-component';
23+
import { AsyncDirective } from '@classes/async-directive';
2424
import { CoreApp } from '@services/app';
2525

2626
/**
@@ -49,7 +49,7 @@ import { CoreApp } from '@services/app';
4949
styleUrls: ['loading.scss'],
5050
animations: [CoreAnimations.SHOW_HIDE],
5151
})
52-
export class CoreLoadingComponent implements OnInit, OnChanges, AfterViewInit, AsyncComponent, OnDestroy {
52+
export class CoreLoadingComponent implements OnInit, OnChanges, AfterViewInit, AsyncDirective, OnDestroy {
5353

5454
@Input() hideUntil: unknown = false; // Determine when should the contents be shown.
5555
@Input() message?: string; // Message to show while loading.
@@ -65,7 +65,7 @@ export class CoreLoadingComponent implements OnInit, OnChanges, AfterViewInit, A
6565

6666
constructor(element: ElementRef) {
6767
this.element = element.nativeElement;
68-
CoreComponentsRegistry.register(this.element, this);
68+
CoreDirectivesRegistry.register(this.element, this);
6969

7070
// Calculate the unique ID.
7171
this.uniqueId = 'core-loading-content-' + CoreUtils.getUniqueId('CoreLoadingComponent');

src/core/components/navbar-buttons/navbar-buttons.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {
2525
import { CoreLogger } from '@singletons/logger';
2626
import { CoreDomUtils } from '@services/utils/dom';
2727
import { CoreContextMenuComponent } from '../context-menu/context-menu';
28-
import { CoreComponentsRegistry } from '@singletons/components-registry';
28+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
2929
import { CoreDom } from '@singletons/dom';
3030

3131
const BUTTON_HIDDEN_CLASS = 'core-navbar-button-hidden';
@@ -82,7 +82,7 @@ export class CoreNavBarButtonsComponent implements OnInit, OnDestroy {
8282
this.element = element.nativeElement;
8383
this.logger = CoreLogger.getInstance('CoreNavBarButtonsComponent');
8484

85-
CoreComponentsRegistry.register(this.element, this);
85+
CoreDirectivesRegistry.register(this.element, this);
8686
}
8787

8888
/**
@@ -156,11 +156,11 @@ export class CoreNavBarButtonsComponent implements OnInit, OnDestroy {
156156
}
157157

158158
const mainContextMenu = buttonsContainer.querySelector('core-context-menu');
159-
const secondaryContextMenuInstance = CoreComponentsRegistry.resolve(secondaryContextMenu, CoreContextMenuComponent);
159+
const secondaryContextMenuInstance = CoreDirectivesRegistry.resolve(secondaryContextMenu, CoreContextMenuComponent);
160160
let mainContextMenuInstance: CoreContextMenuComponent | null;
161161
if (mainContextMenu) {
162162
// Both containers have a context menu. Merge them to prevent having 2 menus at the same time.
163-
mainContextMenuInstance = CoreComponentsRegistry.resolve(mainContextMenu, CoreContextMenuComponent);
163+
mainContextMenuInstance = CoreDirectivesRegistry.resolve(mainContextMenu, CoreContextMenuComponent);
164164
} else {
165165
// There is a context-menu in these buttons, but there is no main context menu in the header.
166166
// Create one main context menu dynamically.

src/core/components/tabs-outlet/tabs-outlet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { CoreNavBarButtonsComponent } from '../navbar-buttons/navbar-buttons';
3131
import { StackEvent } from '@ionic/angular/directives/navigation/stack-utils';
3232
import { CoreNavigator } from '@services/navigator';
3333
import { CoreTabBase, CoreTabsBaseComponent } from '@classes/tabs';
34-
import { CoreComponentsRegistry } from '@singletons/components-registry';
34+
import { CoreDirectivesRegistry } from '@singletons/directives-registry';
3535

3636
/**
3737
* This component displays some top scrollable tabs that will autohide on vertical scroll.
@@ -207,7 +207,7 @@ export class CoreTabsOutletComponent extends CoreTabsBaseComponent<CoreTabsOutle
207207
protected showHideNavBarButtons(activatedPageName: string): void {
208208
const elements = this.ionTabs.outlet.nativeEl.querySelectorAll('core-navbar-buttons');
209209
elements.forEach((element) => {
210-
const instance = CoreComponentsRegistry.resolve(element, CoreNavBarButtonsComponent);
210+
const instance = CoreDirectivesRegistry.resolve(element, CoreNavBarButtonsComponent);
211211

212212
if (instance) {
213213
const pagetagName = element.closest('.ion-page')?.tagName;

0 commit comments

Comments
 (0)