UNPKG

@nativescript/firebase-app-check

Version:
140 lines 4.55 kB
import { firebase, FirebaseApp, FirebaseError } from '@nativescript/firebase-core'; import lazy from '@nativescript/core/utils/lazy'; let defaultAppCheck; const fb = firebase(); Object.defineProperty(fb, 'appCheck', { value: (app) => { if (!app) { if (!defaultAppCheck) { defaultAppCheck = new AppCheck(); } return defaultAppCheck; } return new AppCheck(app); }, writable: false, }); const NSAppCheck = lazy(() => org.nativescript.firebase.app_check.FirebaseAppCheck); export class AppCheckToken { static fromNative(token) { if (token instanceof com.google.firebase.appcheck.AppCheckToken) { const t = new AppCheckToken(); t._native = token; return t; } return null; } get native() { return this._native; } get android() { return this.native; } get token() { return this.native?.getToken?.(); } get expireTimeMillis() { return this.native?.getExpireTimeMillis?.(); } } export class AppCheckProviderFactory { constructor() { const ref = new WeakRef(this); this._native = new com.google.firebase.appcheck.AppCheckProviderFactory({ create(app) { return ref.get?.()?.createProvider?.(FirebaseApp.fromNative(app))?.native || null; }, }); } get native() { return this._native; } } export class AppCheckProvider { constructor() { const ref = new WeakRef(this); this._callback = new org.nativescript.firebase.app_check.FirebaseAppCheck.CustomAppCheckProvider.Callback({ getToken() { let result; const callback = (token, error) => { if (token) { token = new org.nativescript.firebase.app_check.FirebaseAppCheck.AppCheckToken(token.token, token.expirationDate.getTime()); } else { result = error.intoNative(); } }; ref.get?.().getToken(callback); return result; }, }); this._native = org.nativescript.firebase.app_check.FirebaseAppCheck.CustomAppCheckProvider(this._callback); } get native() { return this._native; } } let customProvider; export class AppCheck { constructor(app) { if (app?.native) { this._nativeApp = app.native; this._native = com.google.firebase.appcheck.FirebaseAppCheck.getInstance(app.native); } else { if (defaultAppCheck) { return defaultAppCheck; } defaultAppCheck = this; this._nativeApp = com.google.firebase.FirebaseApp.getInstance(); this._native = com.google.firebase.appcheck.FirebaseAppCheck.getInstance(); } } static setProviderFactory(custom) { if (custom && custom instanceof AppCheckProviderFactory) { customProvider = custom; } else { customProvider = undefined; } } activate(isTokenAutoRefreshEnabled) { this.native.setTokenAutoRefreshEnabled(isTokenAutoRefreshEnabled); if (customProvider) { this.native.installAppCheckProviderFactory(customProvider.native); } else { this.native.installAppCheckProviderFactory(com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory.getInstance()); } } getToken(forceRefresh) { return new Promise((resolve, reject) => { NSAppCheck().getToken(this.native, forceRefresh, new org.nativescript.firebase.app_check.FirebaseAppCheck.Callback({ onSuccess(param0) { resolve(AppCheckToken.fromNative(param0)); }, onError(param0) { const err = FirebaseError.fromNative(param0); reject(err); }, })); }); } setTokenAutoRefreshEnabled(enabled) { this.native.setTokenAutoRefreshEnabled(enabled); } get native() { return this._native; } get ios() { return this.native; } get app() { if (!this._app) { // @ts-ignore this._app = FirebaseApp.fromNative(this._nativeApp); } return this._app; } } //# sourceMappingURL=index.android.js.map