Make AndroidPolyfill completely static

This commit is contained in:
Pieter Vander Vennet 2025-01-23 13:47:59 +01:00
parent 9b7052767a
commit 700599140e
3 changed files with 8 additions and 7 deletions

File diff suppressed because one or more lines are too long

View file

@ -25,7 +25,7 @@ const DatabridgePluginSingleton = registerPlugin<DatabridgePlugin>("Databridge",
}) })
export class AndroidPolyfill { export class AndroidPolyfill {
private readonly databridgePlugin: DatabridgePlugin = DatabridgePluginSingleton private static readonly databridgePlugin: DatabridgePlugin = DatabridgePluginSingleton
private static readonly _inAndroid: UIEventSource<boolean> = new UIEventSource<boolean>(false) private static readonly _inAndroid: UIEventSource<boolean> = new UIEventSource<boolean>(false)
public static readonly inAndroid: Store<boolean> = AndroidPolyfill._inAndroid public static readonly inAndroid: Store<boolean> = AndroidPolyfill._inAndroid
private static readonly _geolocationPermission: UIEventSource<"granted" | "denied" | "prompt"> = new UIEventSource("prompt") private static readonly _geolocationPermission: UIEventSource<"granted" | "denied" | "prompt"> = new UIEventSource("prompt")
@ -35,7 +35,7 @@ export class AndroidPolyfill {
* Registers 'navigator.' * Registers 'navigator.'
* @private * @private
*/ */
private backfillGeolocation(databridgePlugin: DatabridgePlugin) { private static backfillGeolocation(databridgePlugin: DatabridgePlugin) {
const src = UIEventSource.FromPromise(databridgePlugin.request({ key: "location:has-permission" })) const src = UIEventSource.FromPromise(databridgePlugin.request({ key: "location:has-permission" }))
src.addCallbackAndRunD(permission => { src.addCallbackAndRunD(permission => {
console.log("> Checking geopermission gave: ", JSON.stringify(permission), permission.value) console.log("> Checking geopermission gave: ", JSON.stringify(permission), permission.value)
@ -48,16 +48,16 @@ export class AndroidPolyfill {
return DatabridgePluginSingleton.request({ key: "location:request-permission" }) return DatabridgePluginSingleton.request({ key: "location:request-permission" })
} }
public async init() { public static async init() {
console.log("Sniffing shell version") console.log("Sniffing shell version")
const shell = await this.databridgePlugin.request({ key: "meta" }) const shell = await AndroidPolyfill.databridgePlugin.request({ key: "meta" })
if (shell.value === "web") { if (shell.value === "web") {
console.log("Not initing Android polyfill as not in a shell; web detected") console.log("Not initing Android polyfill as not in a shell; web detected")
return return
} }
AndroidPolyfill._inAndroid.set(true) AndroidPolyfill._inAndroid.set(true)
console.log("Detected shell:", shell.value) console.log("Detected shell:", shell.value)
this.backfillGeolocation(this.databridgePlugin) AndroidPolyfill.backfillGeolocation(AndroidPolyfill.databridgePlugin)
} }
public static async requestLoginCodes() { public static async requestLoginCodes() {

View file

@ -12,6 +12,7 @@ import { UIEventSource } from "../Logic/UIEventSource"
import { WithSearchState } from "../Models/ThemeViewState/WithSearchState" import { WithSearchState } from "../Models/ThemeViewState/WithSearchState"
import { ThemeConfigJson } from "../Models/ThemeConfig/Json/ThemeConfigJson" import { ThemeConfigJson } from "../Models/ThemeConfig/Json/ThemeConfigJson"
import ThemeConfig from "../Models/ThemeConfig/ThemeConfig" import ThemeConfig from "../Models/ThemeConfig/ThemeConfig"
import { AndroidPolyfill } from "../Logic/Web/AndroidPolyfill"
function webgl_support() { function webgl_support() {
try { try {
@ -46,7 +47,7 @@ async function getAvailableLayers(): Promise<Set<string>> {
} }
export let theme: ThemeConfig export let theme: ThemeConfig
AndroidPolyfill.init()
let webgl_supported = webgl_support() let webgl_supported = webgl_support()
let availableLayers = UIEventSource.FromPromise(getAvailableLayers()) let availableLayers = UIEventSource.FromPromise(getAvailableLayers())