@tak-ps/cloudtak 13.23.0 → 13.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Register (or refresh) this device's FCM token as a `push` paging source.
3
+ * Safe to call repeatedly — it only writes to the server when the token
4
+ * changes. No-op on non-native platforms or when no token is available.
5
+ *
6
+ * Concurrent calls are serialized through an in-flight promise chain so that
7
+ * each caller awaits a real sync attempt (rather than being dropped while
8
+ * another sync is in progress). The stored-token comparison inside the sync
9
+ * coalesces redundant server writes.
10
+ */
11
+ export declare function syncPushToken(token: string | null): Promise<void>;
12
+ /**
13
+ * Remove this device's locally tracked push registration. Used when a user
14
+ * deletes the current device's registration so it is not re-created on the
15
+ * next launch.
16
+ */
17
+ export declare function forgetPushToken(token: string | null): Promise<void>;
@@ -2,9 +2,6 @@ import type { DevicePermissionContext } from './types.ts';
2
2
  export declare class CameraPermission {
3
3
  private readonly context;
4
4
  constructor(context: DevicePermissionContext);
5
- private static normalizeNativeCameraPermission;
6
- static checkNativeCameraPermission(): Promise<PermissionState | 'prompt' | 'unknown'>;
7
- static requestNativeCameraPermission(): Promise<PermissionState | 'prompt' | 'unknown'>;
8
5
  refreshStatus(): Promise<void>;
9
6
  request(): Promise<void>;
10
7
  }
@@ -1,4 +1,4 @@
1
- import type { CallbackID, Position, PositionOptions } from '@capacitor/geolocation';
1
+ import type { Position } from '@capacitor/geolocation';
2
2
  import type { DevicePermissionContext } from './types.ts';
3
3
  export declare class GeolocationPermission {
4
4
  private readonly context;
@@ -6,21 +6,13 @@ export declare class GeolocationPermission {
6
6
  private watchId;
7
7
  private backgroundWatchActive;
8
8
  private locationCallback;
9
- private static normalizeNativeLocationPermission;
10
9
  static supportsLocationRequests(): boolean;
11
- static checkNativeLocationPermission(): Promise<PermissionState | 'prompt' | 'unknown'>;
12
- static requestNativeLocationPermission(): Promise<PermissionState | 'prompt' | 'unknown'>;
13
- static getCurrentLocation(options?: PositionOptions): Promise<Position>;
14
- static watchLocation(options: PositionOptions, callback: (position: Position | null, err?: unknown) => void): Promise<CallbackID>;
15
- static startBackgroundLocation(callback: (position: Position | null, err?: unknown) => void): Promise<void>;
16
- static clearLocationWatch(id: CallbackID): Promise<void>;
17
- static stopBackgroundLocation(): Promise<void>;
18
- private static backgroundLocationToPosition;
19
- stopWatch(): Promise<void>;
20
- startWatch(onLocation: (position: Position) => void): Promise<void>;
21
- private startForegroundWatch;
22
- private startBackgroundWatch;
23
10
  refreshStatus(): Promise<void>;
24
11
  request(onGranted?: () => void): Promise<void>;
25
12
  initializeSubscription(onGranted?: () => void): Promise<void>;
13
+ startWatch(onLocation: (position: Position) => void): Promise<void>;
14
+ stopWatch(): Promise<void>;
15
+ private startForegroundWatch;
16
+ private startBackgroundWatch;
17
+ private static backgroundLocationToPosition;
26
18
  }
@@ -1,12 +1,17 @@
1
1
  import type { DevicePermissionContext } from './types.ts';
2
2
  export declare class BrowserNotificationPermission {
3
3
  private readonly context;
4
- private static normalizeNotificationPermission;
5
- private static normalizeNativeNotificationPermission;
6
4
  private static supportsNotifications;
7
5
  private messagingToken;
8
6
  private tokenListener;
7
+ private readonly tokenSubscribers;
9
8
  constructor(context: DevicePermissionContext);
9
+ private setMessagingToken;
10
+ /**
11
+ * Subscribe to FCM token changes (initial registration and rotations).
12
+ * Returns a function that removes the subscription.
13
+ */
14
+ onToken(listener: (token: string | null) => void): () => void;
10
15
  refreshStatus(): Promise<void>;
11
16
  request(): Promise<void>;
12
17
  initializeSubscription(): Promise<void>;
@@ -1,4 +1,10 @@
1
+ import type { BrowserPermissionState } from './types.ts';
1
2
  export declare class PermissionQuery {
2
3
  static hasPermissionQuery(): boolean;
3
4
  static queryPermissionStatus(name: string, warning: string): Promise<PermissionStatus | null>;
4
5
  }
6
+ /**
7
+ * Normalize a native plugin or web permission state into a BrowserPermissionState.
8
+ * Handles Capacitor's `prompt-with-rationale` and the web Notification API's `default`.
9
+ */
10
+ export declare function normalizePermissionState(state: string | null | undefined): BrowserPermissionState;
@@ -21,8 +21,8 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
21
21
  notification: BrowserPermissionState;
22
22
  orientation: BrowserPermissionState;
23
23
  location: BrowserPermissionState;
24
- camera: BrowserPermissionState;
25
24
  storage: BrowserPermissionState;
25
+ camera: BrowserPermissionState;
26
26
  wakeLock: BrowserPermissionState;
27
27
  fileSystem: BrowserPermissionState;
28
28
  };
@@ -45,6 +45,9 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
45
45
  removeOrientationListener: (listener: (event: DeviceOrientationEvent) => void) => void;
46
46
  refreshLocationPermissionStatus: () => Promise<void>;
47
47
  refreshNotificationPermissionStatus: () => Promise<void>;
48
+ getMessagingToken: () => string | null;
49
+ refreshMessagingToken: () => Promise<string | null>;
50
+ onMessagingToken: (listener: (token: string | null) => void) => () => void;
48
51
  refreshOrientationPermissionStatus: () => Promise<void>;
49
52
  refreshStoragePermissionStatus: () => Promise<void>;
50
53
  refreshCameraPermissionStatus: () => Promise<void>;
@@ -58,13 +61,13 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
58
61
  requestWakeLockPermission: () => Promise<void>;
59
62
  requestFileSystemPermission: () => Promise<void>;
60
63
  releaseWakeLockSentinel: () => Promise<void>;
61
- }, "notification" | "orientation" | "permissions" | "camera" | "geolocation" | "storage" | "wakeLock" | "fileSystem" | "network">, Pick<{
64
+ }, "notification" | "orientation" | "storage" | "camera" | "wakeLock" | "fileSystem" | "permissions" | "geolocation" | "network">, Pick<{
62
65
  permissions: {
63
66
  notification: BrowserPermissionState;
64
67
  orientation: BrowserPermissionState;
65
68
  location: BrowserPermissionState;
66
- camera: BrowserPermissionState;
67
69
  storage: BrowserPermissionState;
70
+ camera: BrowserPermissionState;
68
71
  wakeLock: BrowserPermissionState;
69
72
  fileSystem: BrowserPermissionState;
70
73
  };
@@ -87,6 +90,9 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
87
90
  removeOrientationListener: (listener: (event: DeviceOrientationEvent) => void) => void;
88
91
  refreshLocationPermissionStatus: () => Promise<void>;
89
92
  refreshNotificationPermissionStatus: () => Promise<void>;
93
+ getMessagingToken: () => string | null;
94
+ refreshMessagingToken: () => Promise<string | null>;
95
+ onMessagingToken: (listener: (token: string | null) => void) => () => void;
90
96
  refreshOrientationPermissionStatus: () => Promise<void>;
91
97
  refreshStoragePermissionStatus: () => Promise<void>;
92
98
  refreshCameraPermissionStatus: () => Promise<void>;
@@ -105,8 +111,8 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
105
111
  notification: BrowserPermissionState;
106
112
  orientation: BrowserPermissionState;
107
113
  location: BrowserPermissionState;
108
- camera: BrowserPermissionState;
109
114
  storage: BrowserPermissionState;
115
+ camera: BrowserPermissionState;
110
116
  wakeLock: BrowserPermissionState;
111
117
  fileSystem: BrowserPermissionState;
112
118
  };
@@ -129,6 +135,9 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
129
135
  removeOrientationListener: (listener: (event: DeviceOrientationEvent) => void) => void;
130
136
  refreshLocationPermissionStatus: () => Promise<void>;
131
137
  refreshNotificationPermissionStatus: () => Promise<void>;
138
+ getMessagingToken: () => string | null;
139
+ refreshMessagingToken: () => Promise<string | null>;
140
+ onMessagingToken: (listener: (token: string | null) => void) => () => void;
132
141
  refreshOrientationPermissionStatus: () => Promise<void>;
133
142
  refreshStoragePermissionStatus: () => Promise<void>;
134
143
  refreshCameraPermissionStatus: () => Promise<void>;
@@ -142,4 +151,4 @@ export declare const useDeviceStore: import("pinia").StoreDefinition<"device", P
142
151
  requestWakeLockPermission: () => Promise<void>;
143
152
  requestFileSystemPermission: () => Promise<void>;
144
153
  releaseWakeLockSentinel: () => Promise<void>;
145
- }, "setPermissionStatus" | "refreshPermissionStatuses" | "initializePermissionSubscriptions" | "hasOrientationSupport" | "hasOrientationPermissionRequest" | "getOrientationEventName" | "getOrientationHeading" | "addOrientationListener" | "removeOrientationListener" | "refreshLocationPermissionStatus" | "refreshNotificationPermissionStatus" | "refreshOrientationPermissionStatus" | "refreshStoragePermissionStatus" | "refreshCameraPermissionStatus" | "refreshWakeLockPermissionStatus" | "refreshFileSystemPermissionStatus" | "requestLocationPermission" | "requestNotificationPermission" | "requestOrientationPermission" | "requestStoragePermission" | "requestCameraPermission" | "requestWakeLockPermission" | "requestFileSystemPermission" | "releaseWakeLockSentinel">>;
154
+ }, "setPermissionStatus" | "refreshPermissionStatuses" | "initializePermissionSubscriptions" | "hasOrientationSupport" | "hasOrientationPermissionRequest" | "getOrientationEventName" | "getOrientationHeading" | "addOrientationListener" | "removeOrientationListener" | "refreshLocationPermissionStatus" | "refreshNotificationPermissionStatus" | "getMessagingToken" | "refreshMessagingToken" | "onMessagingToken" | "refreshOrientationPermissionStatus" | "refreshStoragePermissionStatus" | "refreshCameraPermissionStatus" | "refreshWakeLockPermissionStatus" | "refreshFileSystemPermissionStatus" | "requestLocationPermission" | "requestNotificationPermission" | "requestOrientationPermission" | "requestStoragePermission" | "requestCameraPermission" | "requestWakeLockPermission" | "requestFileSystemPermission" | "releaseWakeLockSentinel">>;
@@ -27,6 +27,7 @@ export declare const useMapStore: import("pinia").StoreDefinition<"cloudtak", {
27
27
  _boundOnDeviceOrientation?: (event: DeviceOrientationEvent) => void;
28
28
  _boundOnVisibilityChange?: () => Promise<void>;
29
29
  _removeBackgroundStateListener?: () => void;
30
+ _removePushTokenListener?: () => void;
30
31
  channel: BroadcastChannel;
31
32
  toImport: Feature[];
32
33
  locked: Array<string>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tak-ps/cloudtak",
3
3
  "type": "module",
4
- "version": "13.23.0",
4
+ "version": "13.24.0",
5
5
  "types": "dist/types/plugin.d.ts",
6
6
  "files": [
7
7
  "dist/types"