From d418bb2f9f5cb904f5b558f80819a9e3efafccf0 Mon Sep 17 00:00:00 2001 From: Sean Perkins Date: Mon, 6 Nov 2023 15:17:03 -0500 Subject: [PATCH] refactor(angular): platform uses correct core instance --- .../angular/common/src/providers/platform.ts | 25 ++++++++++++------- packages/angular/src/index.ts | 2 +- packages/angular/src/providers/platform.ts | 12 +++++++++ packages/angular/standalone/src/index.ts | 2 +- .../standalone/src/providers/platform.ts | 12 +++++++++ 5 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 packages/angular/src/providers/platform.ts create mode 100644 packages/angular/standalone/src/providers/platform.ts diff --git a/packages/angular/common/src/providers/platform.ts b/packages/angular/common/src/providers/platform.ts index e01c6edb77..3b4d58cfe4 100644 --- a/packages/angular/common/src/providers/platform.ts +++ b/packages/angular/common/src/providers/platform.ts @@ -1,7 +1,12 @@ import { DOCUMENT } from '@angular/common'; -import { NgZone, Inject, Injectable } from '@angular/core'; -import { getPlatforms, isPlatform } from '@ionic/core/components'; -import type { BackButtonEventDetail, KeyboardEventDetail, Platforms } from '@ionic/core/components'; +import { NgZone, Inject } from '@angular/core'; +import type { + getPlatforms as _getPlatforms, + isPlatform as _isPlatform, + BackButtonEventDetail, + KeyboardEventDetail, + Platforms, +} from '@ionic/core/components'; import { Subscription, Subject } from 'rxjs'; // TODO(FW-2827): types @@ -13,9 +18,6 @@ export interface BackButtonEmitter extends Subject { ): Subscription; } -@Injectable({ - providedIn: 'root', -}) export class Platform { private _readyPromise: Promise; private win: any; @@ -59,7 +61,12 @@ export class Platform { */ resize = new Subject(); - constructor(@Inject(DOCUMENT) private doc: any, zone: NgZone) { + constructor( + @Inject(DOCUMENT) private doc: any, + zone: NgZone, + private isPlatform: typeof _isPlatform, + private getPlatforms: typeof _getPlatforms + ) { zone.run(() => { this.win = doc.defaultView; this.backButton.subscribeWithPriority = function (priority, callback) { @@ -138,7 +145,7 @@ export class Platform { * */ is(platformName: Platforms): boolean { - return isPlatform(this.win, platformName); + return this.isPlatform(this.win, platformName); } /** @@ -161,7 +168,7 @@ export class Platform { * ``` */ platforms(): string[] { - return getPlatforms(this.win); + return this.getPlatforms(this.win); } /** diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts index 6db8e3d7d2..644ae2a99a 100644 --- a/packages/angular/src/index.ts +++ b/packages/angular/src/index.ts @@ -32,7 +32,6 @@ export { DomController, NavController, Config, - Platform, AngularDelegate, NavParams, IonicRouteStrategy, @@ -42,6 +41,7 @@ export { ViewDidLeave, } from '@ionic/angular/common'; export { MenuController } from './providers/menu-controller'; +export { Platform } from './providers/platform'; // PACKAGE MODULE export { IonicModule } from './ionic-module'; diff --git a/packages/angular/src/providers/platform.ts b/packages/angular/src/providers/platform.ts new file mode 100644 index 0000000000..3a4887023f --- /dev/null +++ b/packages/angular/src/providers/platform.ts @@ -0,0 +1,12 @@ +import { DOCUMENT, Injectable, NgZone, Inject } from '@angular/core'; +import { Platform as PlatformBase } from '@ionic/angular/common'; +import { isPlatform, getPlatforms } from '@ionic/core'; + +@Injectable({ + providedIn: 'root', +}) +export class Platform extends PlatformBase { + constructor(@Inject(DOCUMENT) protected doc: any, zone: NgZone) { + super(doc, zone, isPlatform, getPlatforms); + } +} diff --git a/packages/angular/standalone/src/index.ts b/packages/angular/standalone/src/index.ts index 36d8c2bf27..0326ddb6cb 100644 --- a/packages/angular/standalone/src/index.ts +++ b/packages/angular/standalone/src/index.ts @@ -6,6 +6,7 @@ export { IonRouterLink, IonRouterLinkWithHref } from './navigation/router-link-d export { IonTabs } from './navigation/tabs'; export { provideIonicAngular } from './providers/ionic-angular'; export { MenuController } from './providers/menu-controller'; +export { Platform } from './providers/platform'; export { ActionSheetController, AlertController, @@ -19,7 +20,6 @@ export { DomController, NavController, Config, - Platform, NavParams, IonicRouteStrategy, ViewWillEnter, diff --git a/packages/angular/standalone/src/providers/platform.ts b/packages/angular/standalone/src/providers/platform.ts new file mode 100644 index 0000000000..15fa482820 --- /dev/null +++ b/packages/angular/standalone/src/providers/platform.ts @@ -0,0 +1,12 @@ +import { DOCUMENT, Injectable, NgZone, Inject } from '@angular/core'; +import { Platform as PlatformBase } from '@ionic/angular/common'; +import { isPlatform, getPlatforms } from '@ionic/core/components'; + +@Injectable({ + providedIn: 'root', +}) +export class Platform extends PlatformBase { + constructor(@Inject(DOCUMENT) protected doc: any, zone: NgZone) { + super(doc, zone, isPlatform, getPlatforms); + } +}