Clean up useFallback for the push adapter

This commit is contained in:
Jon Staab 2026-09-18 11:46:27 -07:00
parent cf6c025bf2
commit 1cbb862b33
3 changed files with 9 additions and 7 deletions

View file

@ -5,7 +5,7 @@ import {maybe, now} from "@welshman/lib"
import type {Filter} from "@welshman/util" import type {Filter} from "@welshman/util"
import type {Session} from "@welshman/app" import type {Session} from "@welshman/app"
import {app, session} from "@app/core" import {app, session} from "@app/core"
import {pushState} from "@app/push/adapters/common" import {pushState, requiresFallback} from "@app/push/adapters/common"
import type {IPushAdapter} from "@app/push/adapters/common" import type {IPushAdapter} from "@app/push/adapters/common"
import {syncRelaySubscriptions} from "@app/push/adapters/common" import {syncRelaySubscriptions} from "@app/push/adapters/common"
@ -92,6 +92,6 @@ export class AndroidFallbackNotifications implements IPushAdapter {
await AndroidPushFallback.syncState({state: {}}) await AndroidPushFallback.syncState({state: {}})
pushState.set({}) pushState.set({useFallback: requiresFallback})
} }
} }

View file

@ -1,5 +1,6 @@
import {writable} from "svelte/store" import {writable} from "svelte/store"
import type {Subscriber, Unsubscriber} from "svelte/store" import type {Subscriber, Unsubscriber} from "svelte/store"
import {Capacitor} from "@capacitor/core"
import {assoc, call, ms, now, on, parseJson, poll, spec, throttle, uniq} from "@welshman/lib" import {assoc, call, ms, now, on, parseJson, poll, spec, throttle, uniq} from "@welshman/lib"
import {LOCAL_RELAY_URL} from "@welshman/net" import {LOCAL_RELAY_URL} from "@welshman/net"
import type {RepositoryUpdate} from "@welshman/net" import type {RepositoryUpdate} from "@welshman/net"
@ -33,7 +34,11 @@ export type PushState = {
subscription?: PushSubscription subscription?: PushSubscription
} }
export const pushState = withGetter(writable<PushState>({})) // The F-Droid build ships without the push plugin, so those installs can only ever poll
export const requiresFallback =
Capacitor.getPlatform() === "android" && !Capacitor.isPluginAvailable("PushNotifications")
export const pushState = withGetter(writable<PushState>({useFallback: requiresFallback}))
export interface IPushAdapter { export interface IPushAdapter {
request: (prompt?: boolean) => Promise<string> request: (prompt?: boolean) => Promise<string>

View file

@ -18,10 +18,7 @@ export class Push {
if (Capacitor.getPlatform() === "electron") { if (Capacitor.getPlatform() === "electron") {
Push._adapter = new ElectronNotifications() Push._adapter = new ElectronNotifications()
} else if ( } else if (Capacitor.getPlatform() === "android" && useFallback) {
Capacitor.getPlatform() === "android" &&
(useFallback || !Capacitor.isPluginAvailable("PushNotifications"))
) {
Push._adapter = new AndroidFallbackNotifications() Push._adapter = new AndroidFallbackNotifications()
} else if (Capacitor.isPluginAvailable("PushNotifications")) { } else if (Capacitor.isPluginAvailable("PushNotifications")) {
Push._adapter = new CapacitorNotifications() Push._adapter = new CapacitorNotifications()