@grupalia/rn-ui-kit 0.119.0 → 0.121.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.
- package/lib/commonjs/hooks/useNotifications.js +26 -7
- package/lib/commonjs/hooks/useNotifications.js.map +1 -1
- package/lib/commonjs/utils/createFcmDispatcher.js +26 -0
- package/lib/commonjs/utils/createFcmDispatcher.js.map +1 -0
- package/lib/commonjs/utils/index.js +24 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/pendingResourceEventQueue.js +59 -0
- package/lib/commonjs/utils/pendingResourceEventQueue.js.map +1 -0
- package/lib/module/hooks/useNotifications.js +27 -9
- package/lib/module/hooks/useNotifications.js.map +1 -1
- package/lib/module/utils/createFcmDispatcher.js +22 -0
- package/lib/module/utils/createFcmDispatcher.js.map +1 -0
- package/lib/module/utils/index.js +2 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/pendingResourceEventQueue.js +54 -0
- package/lib/module/utils/pendingResourceEventQueue.js.map +1 -0
- package/lib/typescript/commonjs/hooks/useNotifications.d.ts +15 -6
- package/lib/typescript/commonjs/hooks/useNotifications.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/createFcmDispatcher.d.ts +13 -0
- package/lib/typescript/commonjs/utils/createFcmDispatcher.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts +2 -0
- package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/pendingResourceEventQueue.d.ts +5 -0
- package/lib/typescript/commonjs/utils/pendingResourceEventQueue.d.ts.map +1 -0
- package/lib/typescript/module/hooks/useNotifications.d.ts +15 -6
- package/lib/typescript/module/hooks/useNotifications.d.ts.map +1 -1
- package/lib/typescript/module/utils/createFcmDispatcher.d.ts +13 -0
- package/lib/typescript/module/utils/createFcmDispatcher.d.ts.map +1 -0
- package/lib/typescript/module/utils/index.d.ts +2 -0
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/pendingResourceEventQueue.d.ts +5 -0
- package/lib/typescript/module/utils/pendingResourceEventQueue.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.deleteAllChannels = deleteAllChannels;
|
|
8
8
|
exports.getDeviceToken = getDeviceToken;
|
|
9
|
+
exports.registerBackgroundFcmHandler = registerBackgroundFcmHandler;
|
|
9
10
|
exports.registerChannels = registerChannels;
|
|
10
11
|
exports.requestUserPermission = requestUserPermission;
|
|
11
12
|
exports.subscribeToTopics = subscribeToTopics;
|
|
@@ -15,6 +16,7 @@ var _reactNative = _interopRequireWildcard(require("@notifee/react-native"));
|
|
|
15
16
|
var _messaging = require("@react-native-firebase/messaging");
|
|
16
17
|
var _react = require("react");
|
|
17
18
|
var _reactNative2 = require("react-native");
|
|
19
|
+
var _pendingResourceEventQueue = require("../utils/pendingResourceEventQueue");
|
|
18
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
21
|
async function requestUserPermission() {
|
|
20
22
|
const settings = await _reactNative.default.requestPermission();
|
|
@@ -34,10 +36,11 @@ function extractNotificationData(message) {
|
|
|
34
36
|
return message.data ?? {};
|
|
35
37
|
}
|
|
36
38
|
async function displayForegroundNotification(message, config) {
|
|
39
|
+
if (!message.notification) return;
|
|
37
40
|
const data = extractNotificationData(message);
|
|
38
41
|
await _reactNative.default.displayNotification({
|
|
39
|
-
title: message.notification
|
|
40
|
-
body: message.notification
|
|
42
|
+
title: message.notification.title ?? undefined,
|
|
43
|
+
body: message.notification.body ?? undefined,
|
|
41
44
|
data: message.data,
|
|
42
45
|
android: {
|
|
43
46
|
channelId: data.channelId || config.defaultChannelId || 'default',
|
|
@@ -58,23 +61,28 @@ function useNotifications(config) {
|
|
|
58
61
|
registerChannels(config.androidChannels);
|
|
59
62
|
}
|
|
60
63
|
|
|
61
|
-
// Cold start: app was killed, user tapped OS notification
|
|
64
|
+
// Cold start: app was killed, user tapped OS notification.
|
|
65
|
+
// We only fire `onNotificationOpened` (for deep linking). The data-event
|
|
66
|
+
// dispatch is the consumer's responsibility. See the bg-handler queue
|
|
67
|
+
// pattern for catching killed-state events regardless of tap.
|
|
62
68
|
(0, _messaging.getInitialNotification)(messaging).then(message => {
|
|
63
|
-
if (message)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
69
|
+
if (!message) return;
|
|
70
|
+
const data = extractNotificationData(message);
|
|
71
|
+
config.onNotificationOpened?.(data, message.messageId);
|
|
67
72
|
});
|
|
68
73
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
74
|
}, []);
|
|
70
75
|
(0, _react.useEffect)(() => {
|
|
71
76
|
const unsubscribeOnMessage = (0, _messaging.onMessage)(messaging, message => {
|
|
77
|
+
const data = extractNotificationData(message);
|
|
78
|
+
config.onMessageData?.(data);
|
|
72
79
|
displayForegroundNotification(message, config);
|
|
73
80
|
});
|
|
74
81
|
|
|
75
82
|
// Background → foreground: user tapped OS notification
|
|
76
83
|
const unsubscribeOnOpened = (0, _messaging.onNotificationOpenedApp)(messaging, message => {
|
|
77
84
|
const data = extractNotificationData(message);
|
|
85
|
+
config.onMessageData?.(data);
|
|
78
86
|
config.onNotificationOpened?.(data, message.messageId);
|
|
79
87
|
});
|
|
80
88
|
const unsubscribeOnForegroundTap = _reactNative.default.onForegroundEvent(event => {
|
|
@@ -118,6 +126,17 @@ async function subscribeToTopics(topics) {
|
|
|
118
126
|
const messaging = (0, _messaging.getMessaging)();
|
|
119
127
|
await Promise.all(topics.map(topic => (0, _messaging.subscribeToTopic)(messaging, topic)));
|
|
120
128
|
}
|
|
129
|
+
|
|
130
|
+
// `setBackgroundMessageHandler` must be registered at module top-level on the
|
|
131
|
+
// consumer side, before the JS runtime is suspended. Calling it from inside a
|
|
132
|
+
// React component is too late. Consumers invoke this from their entry file
|
|
133
|
+
function registerBackgroundFcmHandler(handler) {
|
|
134
|
+
(0, _messaging.setBackgroundMessageHandler)((0, _messaging.getMessaging)(), async message => {
|
|
135
|
+
const data = extractNotificationData(message);
|
|
136
|
+
await handler(data);
|
|
137
|
+
await (0, _pendingResourceEventQueue.appendPendingResourceEvent)(data);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
121
140
|
async function unsubscribeFromTopics(topics) {
|
|
122
141
|
const messaging = (0, _messaging.getMessaging)();
|
|
123
142
|
await Promise.all(topics.map(topic => (0, _messaging.unsubscribeFromTopic)(messaging, topic)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","_interopRequireWildcard","require","_messaging","_react","_reactNative2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","requestUserPermission","settings","notifee","requestPermission","authorizationStatus","AuthorizationStatus","AUTHORIZED","getDeviceToken","enabled","getToken","getMessaging","registerChannels","channels","registered","getChannels","registeredIds","Set","map","channel","id","Promise","all","filter","createChannel","extractNotificationData","message","data","displayForegroundNotification","config","
|
|
1
|
+
{"version":3,"names":["_reactNative","_interopRequireWildcard","require","_messaging","_react","_reactNative2","_pendingResourceEventQueue","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","requestUserPermission","settings","notifee","requestPermission","authorizationStatus","AuthorizationStatus","AUTHORIZED","getDeviceToken","enabled","getToken","getMessaging","registerChannels","channels","registered","getChannels","registeredIds","Set","map","channel","id","Promise","all","filter","createChannel","extractNotificationData","message","data","displayForegroundNotification","config","notification","displayNotification","title","undefined","body","android","channelId","defaultChannelId","smallIcon","androidSmallIcon","pressAction","useNotifications","isSignedIn","messaging","useEffect","androidChannels","length","Platform","OS","getInitialNotification","then","onNotificationOpened","messageId","unsubscribeOnMessage","onMessage","onMessageData","unsubscribeOnOpened","onNotificationOpenedApp","unsubscribeOnForegroundTap","onForegroundEvent","event","type","EventType","PRESS","detail","acquireAndRegisterToken","token","onTokenAcquired","error","console","deleteAllChannels","deleteChannel","subscribeToTopics","topics","topic","subscribeToTopic","registerBackgroundFcmHandler","handler","setBackgroundMessageHandler","appendPendingResourceEvent","unsubscribeFromTopics","unsubscribeFromTopic","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/useNotifications.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFcmDispatcher = createFcmDispatcher;
|
|
7
|
+
var _log = _interopRequireDefault(require("./log"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
function createFcmDispatcher(handlers, options = {}) {
|
|
10
|
+
return data => {
|
|
11
|
+
if (!data.resource_type || !data.action) return;
|
|
12
|
+
const key = `${data.resource_type}:${data.action}`;
|
|
13
|
+
const handler = handlers[key];
|
|
14
|
+
if (!handler) return;
|
|
15
|
+
try {
|
|
16
|
+
handler(data);
|
|
17
|
+
} catch (err) {
|
|
18
|
+
if (options.onError) {
|
|
19
|
+
options.onError(err, key);
|
|
20
|
+
} else {
|
|
21
|
+
(0, _log.default)('fcm', `handler error: ${key}`, err instanceof Error ? err : String(err));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=createFcmDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_log","_interopRequireDefault","require","e","__esModule","default","createFcmDispatcher","handlers","options","data","resource_type","action","key","handler","err","onError","log","Error","String"],"sourceRoot":"../../../src","sources":["utils/createFcmDispatcher.ts"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwB,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAsBxB,SAASG,mBAAmBA,CAC1BC,QAA4C,EAC5CC,OAAmC,GAAG,CAAC,CAAC,EACP;EACjC,OAAQC,IAAI,IAAK;IACf,IAAI,CAACA,IAAI,CAACC,aAAa,IAAI,CAACD,IAAI,CAACE,MAAM,EAAE;IAEzC,MAAMC,GAAG,GAAG,GAAGH,IAAI,CAACC,aAAa,IAAID,IAAI,CAACE,MAAM,EAAsC;IACtF,MAAME,OAAO,GAAGN,QAAQ,CAACK,GAAG,CAAC;IAC7B,IAAI,CAACC,OAAO,EAAE;IAEd,IAAI;MACFA,OAAO,CAACJ,IAAI,CAAC;IACf,CAAC,CAAC,OAAOK,GAAG,EAAE;MACZ,IAAIN,OAAO,CAACO,OAAO,EAAE;QACnBP,OAAO,CAACO,OAAO,CAACD,GAAG,EAAEF,GAAG,CAAC;MAC3B,CAAC,MAAM;QACL,IAAAI,YAAG,EAAC,KAAK,EAAE,kBAAkBJ,GAAG,EAAE,EAAEE,GAAG,YAAYG,KAAK,GAAGH,GAAG,GAAGI,MAAM,CAACJ,GAAG,CAAC,CAAC;MAC/E;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -132,6 +132,30 @@ Object.keys(_keyboard).forEach(function (key) {
|
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
|
+
var _createFcmDispatcher = require("./createFcmDispatcher");
|
|
136
|
+
Object.keys(_createFcmDispatcher).forEach(function (key) {
|
|
137
|
+
if (key === "default" || key === "__esModule") return;
|
|
138
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
139
|
+
if (key in exports && exports[key] === _createFcmDispatcher[key]) return;
|
|
140
|
+
Object.defineProperty(exports, key, {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
get: function () {
|
|
143
|
+
return _createFcmDispatcher[key];
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
var _pendingResourceEventQueue = require("./pendingResourceEventQueue");
|
|
148
|
+
Object.keys(_pendingResourceEventQueue).forEach(function (key) {
|
|
149
|
+
if (key === "default" || key === "__esModule") return;
|
|
150
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
151
|
+
if (key in exports && exports[key] === _pendingResourceEventQueue[key]) return;
|
|
152
|
+
Object.defineProperty(exports, key, {
|
|
153
|
+
enumerable: true,
|
|
154
|
+
get: function () {
|
|
155
|
+
return _pendingResourceEventQueue[key];
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
});
|
|
135
159
|
var _delay = _interopRequireDefault(require("./delay"));
|
|
136
160
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
137
161
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clabe","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_fileDirectoryUtils","_timeConstants","_filters","_log","_svg","_openExternalURL","_openFileInSystemViewer","_downloadFileToLocalStorage","_keyboard","_delay","_interopRequireDefault","e","__esModule","default"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_clabe","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_fileDirectoryUtils","_timeConstants","_filters","_log","_svg","_openExternalURL","_openFileInSystemViewer","_downloadFileToLocalStorage","_keyboard","_createFcmDispatcher","_pendingResourceEventQueue","_delay","_interopRequireDefault","e","__esModule","default"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.appendPendingResourceEvent = appendPendingResourceEvent;
|
|
7
|
+
exports.flushPendingResourceEventQueue = flushPendingResourceEventQueue;
|
|
8
|
+
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
9
|
+
var _reactNative = require("@sentry/react-native");
|
|
10
|
+
var _log = _interopRequireDefault(require("./log"));
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
// Resource events extracted from killed-state FCM data messages are persisted
|
|
13
|
+
// here by the bg-handler so they can be dispatched on the next cold mount
|
|
14
|
+
// after the queryClient hydrates. Catches the "killed + open without tap" and
|
|
15
|
+
// "data-only killed" cases that `getInitialNotification` can't observe.
|
|
16
|
+
const PENDING_RESOURCE_EVENT_QUEUE_KEY = 'PENDING_RESOURCE_EVENTS';
|
|
17
|
+
async function readQueue() {
|
|
18
|
+
try {
|
|
19
|
+
const raw = await _asyncStorage.default.getItem(PENDING_RESOURCE_EVENT_QUEUE_KEY);
|
|
20
|
+
if (!raw) return [];
|
|
21
|
+
const parsed = JSON.parse(raw);
|
|
22
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
23
|
+
} catch (err) {
|
|
24
|
+
(0, _log.default)('fcm', 'pendingResourceEventQueue.read error', err instanceof Error ? err : String(err));
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function doAppend(data) {
|
|
29
|
+
if (!data.resource_type || !data.action) return;
|
|
30
|
+
const queue = await readQueue();
|
|
31
|
+
const deduped = queue.filter(e => !(e.resource_type === data.resource_type && e.action === data.action));
|
|
32
|
+
deduped.push(data);
|
|
33
|
+
try {
|
|
34
|
+
await _asyncStorage.default.setItem(PENDING_RESOURCE_EVENT_QUEUE_KEY, JSON.stringify(deduped));
|
|
35
|
+
} catch (err) {
|
|
36
|
+
(0, _log.default)('fcm', 'pendingResourceEventQueue.append error', err instanceof Error ? err : String(err));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// "atomize" AsyncStorage read-modify-write
|
|
41
|
+
let appendChain = Promise.resolve();
|
|
42
|
+
function appendPendingResourceEvent(data) {
|
|
43
|
+
const next = appendChain.then(() => doAppend(data)).catch(err => {
|
|
44
|
+
(0, _reactNative.captureException)(err);
|
|
45
|
+
});
|
|
46
|
+
appendChain = next;
|
|
47
|
+
return next;
|
|
48
|
+
}
|
|
49
|
+
async function flushPendingResourceEventQueue(handler) {
|
|
50
|
+
const queue = await readQueue();
|
|
51
|
+
if (queue.length === 0) return;
|
|
52
|
+
try {
|
|
53
|
+
await _asyncStorage.default.removeItem(PENDING_RESOURCE_EVENT_QUEUE_KEY);
|
|
54
|
+
} catch (err) {
|
|
55
|
+
(0, _log.default)('fcm', 'pendingResourceEventQueue.clear error', err instanceof Error ? err : String(err));
|
|
56
|
+
}
|
|
57
|
+
queue.forEach(event => handler(event));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=pendingResourceEventQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_asyncStorage","_interopRequireDefault","require","_reactNative","_log","e","__esModule","default","PENDING_RESOURCE_EVENT_QUEUE_KEY","readQueue","raw","AsyncStorage","getItem","parsed","JSON","parse","Array","isArray","err","log","Error","String","doAppend","data","resource_type","action","queue","deduped","filter","push","setItem","stringify","appendChain","Promise","resolve","appendPendingResourceEvent","next","then","catch","captureException","flushPendingResourceEventQueue","handler","length","removeItem","forEach","event"],"sourceRoot":"../../../src","sources":["utils/pendingResourceEventQueue.ts"],"mappings":";;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAwB,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMxB;AACA;AACA;AACA;AACA,MAAMG,gCAAgC,GAAG,yBAAyB;AAElE,eAAeC,SAASA,CAAA,EAEyB;EAC/C,IAAI;IACF,MAAMC,GAAG,GAAG,MAAMC,qBAAY,CAACC,OAAO,CAACJ,gCAAgC,CAAC;IACxE,IAAI,CAACE,GAAG,EAAE,OAAO,EAAE;IACnB,MAAMG,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACL,GAAG,CAAC;IAC9B,OAAOM,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,GAAG,EAAE;EAC5C,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZ,IAAAC,YAAG,EAAC,KAAK,EAAE,sCAAsC,EAAED,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAAC;IAC5F,OAAO,EAAE;EACX;AACF;AAEA,eAAeI,QAAQA,CAErBC,IAAsC,EAAiB;EACvD,IAAI,CAACA,IAAI,CAACC,aAAa,IAAI,CAACD,IAAI,CAACE,MAAM,EAAE;EAEzC,MAAMC,KAAK,GAAG,MAAMjB,SAAS,CAAiB,CAAC;EAC/C,MAAMkB,OAAO,GAAGD,KAAK,CAACE,MAAM,CACzBvB,CAAC,IAAK,EAAEA,CAAC,CAACmB,aAAa,KAAKD,IAAI,CAACC,aAAa,IAAInB,CAAC,CAACoB,MAAM,KAAKF,IAAI,CAACE,MAAM,CAC7E,CAAC;EACDE,OAAO,CAACE,IAAI,CAACN,IAAI,CAAC;EAElB,IAAI;IACF,MAAMZ,qBAAY,CAACmB,OAAO,CAACtB,gCAAgC,EAAEM,IAAI,CAACiB,SAAS,CAACJ,OAAO,CAAC,CAAC;EACvF,CAAC,CAAC,OAAOT,GAAG,EAAE;IACZ,IAAAC,YAAG,EAAC,KAAK,EAAE,wCAAwC,EAAED,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAAC;EAChG;AACF;;AAEA;AACA,IAAIc,WAA6B,GAAGC,OAAO,CAACC,OAAO,CAAC,CAAC;AAErD,SAASC,0BAA0BA,CAEjCZ,IAAsC,EAAiB;EACvD,MAAMa,IAAI,GAAGJ,WAAW,CACrBK,IAAI,CAAC,MAAMf,QAAQ,CAACC,IAAI,CAAC,CAAC,CAC1Be,KAAK,CAAEpB,GAAG,IAAK;IACd,IAAAqB,6BAAgB,EAACrB,GAAG,CAAC;EACvB,CAAC,CAAC;EACJc,WAAW,GAAGI,IAAI;EAClB,OAAOA,IAAI;AACb;AAEA,eAAeI,8BAA8BA,CAE3CC,OAAyD,EAAiB;EAC1E,MAAMf,KAAK,GAAG,MAAMjB,SAAS,CAAiB,CAAC;EAC/C,IAAIiB,KAAK,CAACgB,MAAM,KAAK,CAAC,EAAE;EAExB,IAAI;IACF,MAAM/B,qBAAY,CAACgC,UAAU,CAACnC,gCAAgC,CAAC;EACjE,CAAC,CAAC,OAAOU,GAAG,EAAE;IACZ,IAAAC,YAAG,EAAC,KAAK,EAAE,uCAAuC,EAAED,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAAC;EAC/F;EAEAQ,KAAK,CAACkB,OAAO,CAAEC,KAAK,IAAKJ,OAAO,CAACI,KAAK,CAAC,CAAC;AAC1C","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import notifee, { EventType } from '@notifee/react-native';
|
|
4
|
-
import { getMessaging, getToken, AuthorizationStatus, getInitialNotification, onMessage, onNotificationOpenedApp, subscribeToTopic, unsubscribeFromTopic } from '@react-native-firebase/messaging';
|
|
4
|
+
import { getMessaging, getToken, AuthorizationStatus, getInitialNotification, onMessage, onNotificationOpenedApp, setBackgroundMessageHandler, subscribeToTopic, unsubscribeFromTopic } from '@react-native-firebase/messaging';
|
|
5
5
|
import { useEffect } from 'react';
|
|
6
6
|
import { Platform } from 'react-native';
|
|
7
|
+
import { appendPendingResourceEvent } from "../utils/pendingResourceEventQueue.js";
|
|
7
8
|
async function requestUserPermission() {
|
|
8
9
|
const settings = await notifee.requestPermission();
|
|
9
10
|
return settings.authorizationStatus >= AuthorizationStatus.AUTHORIZED;
|
|
@@ -22,10 +23,11 @@ function extractNotificationData(message) {
|
|
|
22
23
|
return message.data ?? {};
|
|
23
24
|
}
|
|
24
25
|
async function displayForegroundNotification(message, config) {
|
|
26
|
+
if (!message.notification) return;
|
|
25
27
|
const data = extractNotificationData(message);
|
|
26
28
|
await notifee.displayNotification({
|
|
27
|
-
title: message.notification
|
|
28
|
-
body: message.notification
|
|
29
|
+
title: message.notification.title ?? undefined,
|
|
30
|
+
body: message.notification.body ?? undefined,
|
|
29
31
|
data: message.data,
|
|
30
32
|
android: {
|
|
31
33
|
channelId: data.channelId || config.defaultChannelId || 'default',
|
|
@@ -46,23 +48,28 @@ function useNotifications(config) {
|
|
|
46
48
|
registerChannels(config.androidChannels);
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
// Cold start: app was killed, user tapped OS notification
|
|
51
|
+
// Cold start: app was killed, user tapped OS notification.
|
|
52
|
+
// We only fire `onNotificationOpened` (for deep linking). The data-event
|
|
53
|
+
// dispatch is the consumer's responsibility. See the bg-handler queue
|
|
54
|
+
// pattern for catching killed-state events regardless of tap.
|
|
50
55
|
getInitialNotification(messaging).then(message => {
|
|
51
|
-
if (message)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
56
|
+
if (!message) return;
|
|
57
|
+
const data = extractNotificationData(message);
|
|
58
|
+
config.onNotificationOpened?.(data, message.messageId);
|
|
55
59
|
});
|
|
56
60
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
61
|
}, []);
|
|
58
62
|
useEffect(() => {
|
|
59
63
|
const unsubscribeOnMessage = onMessage(messaging, message => {
|
|
64
|
+
const data = extractNotificationData(message);
|
|
65
|
+
config.onMessageData?.(data);
|
|
60
66
|
displayForegroundNotification(message, config);
|
|
61
67
|
});
|
|
62
68
|
|
|
63
69
|
// Background → foreground: user tapped OS notification
|
|
64
70
|
const unsubscribeOnOpened = onNotificationOpenedApp(messaging, message => {
|
|
65
71
|
const data = extractNotificationData(message);
|
|
72
|
+
config.onMessageData?.(data);
|
|
66
73
|
config.onNotificationOpened?.(data, message.messageId);
|
|
67
74
|
});
|
|
68
75
|
const unsubscribeOnForegroundTap = notifee.onForegroundEvent(event => {
|
|
@@ -106,10 +113,21 @@ async function subscribeToTopics(topics) {
|
|
|
106
113
|
const messaging = getMessaging();
|
|
107
114
|
await Promise.all(topics.map(topic => subscribeToTopic(messaging, topic)));
|
|
108
115
|
}
|
|
116
|
+
|
|
117
|
+
// `setBackgroundMessageHandler` must be registered at module top-level on the
|
|
118
|
+
// consumer side, before the JS runtime is suspended. Calling it from inside a
|
|
119
|
+
// React component is too late. Consumers invoke this from their entry file
|
|
120
|
+
function registerBackgroundFcmHandler(handler) {
|
|
121
|
+
setBackgroundMessageHandler(getMessaging(), async message => {
|
|
122
|
+
const data = extractNotificationData(message);
|
|
123
|
+
await handler(data);
|
|
124
|
+
await appendPendingResourceEvent(data);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
109
127
|
async function unsubscribeFromTopics(topics) {
|
|
110
128
|
const messaging = getMessaging();
|
|
111
129
|
await Promise.all(topics.map(topic => unsubscribeFromTopic(messaging, topic)));
|
|
112
130
|
}
|
|
113
|
-
export { deleteAllChannels, getDeviceToken, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications };
|
|
131
|
+
export { deleteAllChannels, getDeviceToken, registerBackgroundFcmHandler, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications };
|
|
114
132
|
export default useNotifications;
|
|
115
133
|
//# sourceMappingURL=useNotifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["notifee","EventType","getMessaging","getToken","AuthorizationStatus","getInitialNotification","onMessage","onNotificationOpenedApp","subscribeToTopic","unsubscribeFromTopic","useEffect","Platform","requestUserPermission","settings","requestPermission","authorizationStatus","AUTHORIZED","getDeviceToken","enabled","registerChannels","channels","registered","getChannels","registeredIds","Set","map","channel","id","Promise","all","filter","has","createChannel","extractNotificationData","message","data","displayForegroundNotification","config","
|
|
1
|
+
{"version":3,"names":["notifee","EventType","getMessaging","getToken","AuthorizationStatus","getInitialNotification","onMessage","onNotificationOpenedApp","setBackgroundMessageHandler","subscribeToTopic","unsubscribeFromTopic","useEffect","Platform","appendPendingResourceEvent","requestUserPermission","settings","requestPermission","authorizationStatus","AUTHORIZED","getDeviceToken","enabled","registerChannels","channels","registered","getChannels","registeredIds","Set","map","channel","id","Promise","all","filter","has","createChannel","extractNotificationData","message","data","displayForegroundNotification","config","notification","displayNotification","title","undefined","body","android","channelId","defaultChannelId","smallIcon","androidSmallIcon","pressAction","useNotifications","isSignedIn","messaging","androidChannels","length","OS","then","onNotificationOpened","messageId","unsubscribeOnMessage","onMessageData","unsubscribeOnOpened","unsubscribeOnForegroundTap","onForegroundEvent","event","type","PRESS","detail","acquireAndRegisterToken","token","onTokenAcquired","error","console","deleteAllChannels","deleteChannel","subscribeToTopics","topics","topic","registerBackgroundFcmHandler","handler","unsubscribeFromTopics"],"sourceRoot":"../../../src","sources":["hooks/useNotifications.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import log from "./log.js";
|
|
4
|
+
function createFcmDispatcher(handlers, options = {}) {
|
|
5
|
+
return data => {
|
|
6
|
+
if (!data.resource_type || !data.action) return;
|
|
7
|
+
const key = `${data.resource_type}:${data.action}`;
|
|
8
|
+
const handler = handlers[key];
|
|
9
|
+
if (!handler) return;
|
|
10
|
+
try {
|
|
11
|
+
handler(data);
|
|
12
|
+
} catch (err) {
|
|
13
|
+
if (options.onError) {
|
|
14
|
+
options.onError(err, key);
|
|
15
|
+
} else {
|
|
16
|
+
log('fcm', `handler error: ${key}`, err instanceof Error ? err : String(err));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export { createFcmDispatcher };
|
|
22
|
+
//# sourceMappingURL=createFcmDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["log","createFcmDispatcher","handlers","options","data","resource_type","action","key","handler","err","onError","Error","String"],"sourceRoot":"../../../src","sources":["utils/createFcmDispatcher.ts"],"mappings":";;AAAA,OAAOA,GAAG,MAAM,UAAO;AAsBvB,SAASC,mBAAmBA,CAC1BC,QAA4C,EAC5CC,OAAmC,GAAG,CAAC,CAAC,EACP;EACjC,OAAQC,IAAI,IAAK;IACf,IAAI,CAACA,IAAI,CAACC,aAAa,IAAI,CAACD,IAAI,CAACE,MAAM,EAAE;IAEzC,MAAMC,GAAG,GAAG,GAAGH,IAAI,CAACC,aAAa,IAAID,IAAI,CAACE,MAAM,EAAsC;IACtF,MAAME,OAAO,GAAGN,QAAQ,CAACK,GAAG,CAAC;IAC7B,IAAI,CAACC,OAAO,EAAE;IAEd,IAAI;MACFA,OAAO,CAACJ,IAAI,CAAC;IACf,CAAC,CAAC,OAAOK,GAAG,EAAE;MACZ,IAAIN,OAAO,CAACO,OAAO,EAAE;QACnBP,OAAO,CAACO,OAAO,CAACD,GAAG,EAAEF,GAAG,CAAC;MAC3B,CAAC,MAAM;QACLP,GAAG,CAAC,KAAK,EAAE,kBAAkBO,GAAG,EAAE,EAAEE,GAAG,YAAYE,KAAK,GAAGF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAAC;MAC/E;IACF;EACF,CAAC;AACH;AAEA,SACER,mBAAmB","ignoreList":[]}
|
|
@@ -10,5 +10,7 @@ export * from "./openExternalURL.js";
|
|
|
10
10
|
export * from "./openFileInSystemViewer.js";
|
|
11
11
|
export * from "./downloadFileToLocalStorage.js";
|
|
12
12
|
export * from "./keyboard.js";
|
|
13
|
+
export * from "./createFcmDispatcher.js";
|
|
14
|
+
export * from "./pendingResourceEventQueue.js";
|
|
13
15
|
export { default as delay } from "./delay.js";
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["default","delay"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;AAAA,cAAc,YAAS;AACvB,cAAc,yBAAsB;AACpC,cAAc,oBAAiB;AAC/B,cAAc,cAAW;AACzB,cAAc,UAAO;AACrB,cAAc,UAAO;AACrB,cAAc,sBAAmB;AACjC,cAAc,6BAA0B;AACxC,cAAc,iCAA8B;AAC5C,cAAc,eAAY;AAC1B,SAASA,OAAO,IAAIC,KAAK,QAAQ,YAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["default","delay"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;AAAA,cAAc,YAAS;AACvB,cAAc,yBAAsB;AACpC,cAAc,oBAAiB;AAC/B,cAAc,cAAW;AACzB,cAAc,UAAO;AACrB,cAAc,UAAO;AACrB,cAAc,sBAAmB;AACjC,cAAc,6BAA0B;AACxC,cAAc,iCAA8B;AAC5C,cAAc,eAAY;AAC1B,cAAc,0BAAuB;AACrC,cAAc,gCAA6B;AAC3C,SAASA,OAAO,IAAIC,KAAK,QAAQ,YAAS","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
4
|
+
import { captureException } from '@sentry/react-native';
|
|
5
|
+
import log from "./log.js";
|
|
6
|
+
// Resource events extracted from killed-state FCM data messages are persisted
|
|
7
|
+
// here by the bg-handler so they can be dispatched on the next cold mount
|
|
8
|
+
// after the queryClient hydrates. Catches the "killed + open without tap" and
|
|
9
|
+
// "data-only killed" cases that `getInitialNotification` can't observe.
|
|
10
|
+
const PENDING_RESOURCE_EVENT_QUEUE_KEY = 'PENDING_RESOURCE_EVENTS';
|
|
11
|
+
async function readQueue() {
|
|
12
|
+
try {
|
|
13
|
+
const raw = await AsyncStorage.getItem(PENDING_RESOURCE_EVENT_QUEUE_KEY);
|
|
14
|
+
if (!raw) return [];
|
|
15
|
+
const parsed = JSON.parse(raw);
|
|
16
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
17
|
+
} catch (err) {
|
|
18
|
+
log('fcm', 'pendingResourceEventQueue.read error', err instanceof Error ? err : String(err));
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function doAppend(data) {
|
|
23
|
+
if (!data.resource_type || !data.action) return;
|
|
24
|
+
const queue = await readQueue();
|
|
25
|
+
const deduped = queue.filter(e => !(e.resource_type === data.resource_type && e.action === data.action));
|
|
26
|
+
deduped.push(data);
|
|
27
|
+
try {
|
|
28
|
+
await AsyncStorage.setItem(PENDING_RESOURCE_EVENT_QUEUE_KEY, JSON.stringify(deduped));
|
|
29
|
+
} catch (err) {
|
|
30
|
+
log('fcm', 'pendingResourceEventQueue.append error', err instanceof Error ? err : String(err));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// "atomize" AsyncStorage read-modify-write
|
|
35
|
+
let appendChain = Promise.resolve();
|
|
36
|
+
function appendPendingResourceEvent(data) {
|
|
37
|
+
const next = appendChain.then(() => doAppend(data)).catch(err => {
|
|
38
|
+
captureException(err);
|
|
39
|
+
});
|
|
40
|
+
appendChain = next;
|
|
41
|
+
return next;
|
|
42
|
+
}
|
|
43
|
+
async function flushPendingResourceEventQueue(handler) {
|
|
44
|
+
const queue = await readQueue();
|
|
45
|
+
if (queue.length === 0) return;
|
|
46
|
+
try {
|
|
47
|
+
await AsyncStorage.removeItem(PENDING_RESOURCE_EVENT_QUEUE_KEY);
|
|
48
|
+
} catch (err) {
|
|
49
|
+
log('fcm', 'pendingResourceEventQueue.clear error', err instanceof Error ? err : String(err));
|
|
50
|
+
}
|
|
51
|
+
queue.forEach(event => handler(event));
|
|
52
|
+
}
|
|
53
|
+
export { appendPendingResourceEvent, flushPendingResourceEventQueue };
|
|
54
|
+
//# sourceMappingURL=pendingResourceEventQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AsyncStorage","captureException","log","PENDING_RESOURCE_EVENT_QUEUE_KEY","readQueue","raw","getItem","parsed","JSON","parse","Array","isArray","err","Error","String","doAppend","data","resource_type","action","queue","deduped","filter","e","push","setItem","stringify","appendChain","Promise","resolve","appendPendingResourceEvent","next","then","catch","flushPendingResourceEventQueue","handler","length","removeItem","forEach","event"],"sourceRoot":"../../../src","sources":["utils/pendingResourceEventQueue.ts"],"mappings":";;AAAA,OAAOA,YAAY,MAAM,2CAA2C;AACpE,SAASC,gBAAgB,QAAQ,sBAAsB;AAEvD,OAAOC,GAAG,MAAM,UAAO;AAMvB;AACA;AACA;AACA;AACA,MAAMC,gCAAgC,GAAG,yBAAyB;AAElE,eAAeC,SAASA,CAAA,EAEyB;EAC/C,IAAI;IACF,MAAMC,GAAG,GAAG,MAAML,YAAY,CAACM,OAAO,CAACH,gCAAgC,CAAC;IACxE,IAAI,CAACE,GAAG,EAAE,OAAO,EAAE;IACnB,MAAME,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,GAAG,CAAC;IAC9B,OAAOK,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,GAAG,EAAE;EAC5C,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZV,GAAG,CAAC,KAAK,EAAE,sCAAsC,EAAEU,GAAG,YAAYC,KAAK,GAAGD,GAAG,GAAGE,MAAM,CAACF,GAAG,CAAC,CAAC;IAC5F,OAAO,EAAE;EACX;AACF;AAEA,eAAeG,QAAQA,CAErBC,IAAsC,EAAiB;EACvD,IAAI,CAACA,IAAI,CAACC,aAAa,IAAI,CAACD,IAAI,CAACE,MAAM,EAAE;EAEzC,MAAMC,KAAK,GAAG,MAAMf,SAAS,CAAiB,CAAC;EAC/C,MAAMgB,OAAO,GAAGD,KAAK,CAACE,MAAM,CACzBC,CAAC,IAAK,EAAEA,CAAC,CAACL,aAAa,KAAKD,IAAI,CAACC,aAAa,IAAIK,CAAC,CAACJ,MAAM,KAAKF,IAAI,CAACE,MAAM,CAC7E,CAAC;EACDE,OAAO,CAACG,IAAI,CAACP,IAAI,CAAC;EAElB,IAAI;IACF,MAAMhB,YAAY,CAACwB,OAAO,CAACrB,gCAAgC,EAAEK,IAAI,CAACiB,SAAS,CAACL,OAAO,CAAC,CAAC;EACvF,CAAC,CAAC,OAAOR,GAAG,EAAE;IACZV,GAAG,CAAC,KAAK,EAAE,wCAAwC,EAAEU,GAAG,YAAYC,KAAK,GAAGD,GAAG,GAAGE,MAAM,CAACF,GAAG,CAAC,CAAC;EAChG;AACF;;AAEA;AACA,IAAIc,WAA6B,GAAGC,OAAO,CAACC,OAAO,CAAC,CAAC;AAErD,SAASC,0BAA0BA,CAEjCb,IAAsC,EAAiB;EACvD,MAAMc,IAAI,GAAGJ,WAAW,CACrBK,IAAI,CAAC,MAAMhB,QAAQ,CAACC,IAAI,CAAC,CAAC,CAC1BgB,KAAK,CAAEpB,GAAG,IAAK;IACdX,gBAAgB,CAACW,GAAG,CAAC;EACvB,CAAC,CAAC;EACJc,WAAW,GAAGI,IAAI;EAClB,OAAOA,IAAI;AACb;AAEA,eAAeG,8BAA8BA,CAE3CC,OAAyD,EAAiB;EAC1E,MAAMf,KAAK,GAAG,MAAMf,SAAS,CAAiB,CAAC;EAC/C,IAAIe,KAAK,CAACgB,MAAM,KAAK,CAAC,EAAE;EAExB,IAAI;IACF,MAAMnC,YAAY,CAACoC,UAAU,CAACjC,gCAAgC,CAAC;EACjE,CAAC,CAAC,OAAOS,GAAG,EAAE;IACZV,GAAG,CAAC,KAAK,EAAE,uCAAuC,EAAEU,GAAG,YAAYC,KAAK,GAAGD,GAAG,GAAGE,MAAM,CAACF,GAAG,CAAC,CAAC;EAC/F;EAEAO,KAAK,CAACkB,OAAO,CAAEC,KAAK,IAAKJ,OAAO,CAACI,KAAK,CAAC,CAAC;AAC1C;AAEA,SAAST,0BAA0B,EAAEI,8BAA8B","ignoreList":[]}
|
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
import { AndroidChannel } from '@notifee/react-native';
|
|
2
2
|
export type { AndroidChannel };
|
|
3
|
-
export
|
|
3
|
+
export type NotificationResourceEvent = {
|
|
4
|
+
resource_type: string;
|
|
5
|
+
action: string;
|
|
6
|
+
};
|
|
7
|
+
export type NotificationData<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent> = (TResourceEvent | {
|
|
8
|
+
resource_type: undefined;
|
|
9
|
+
action: undefined;
|
|
10
|
+
}) & {
|
|
4
11
|
url?: string;
|
|
5
12
|
channelId?: string;
|
|
6
13
|
[key: string]: string | undefined;
|
|
7
|
-
}
|
|
8
|
-
export interface NotificationsConfig {
|
|
14
|
+
};
|
|
15
|
+
export interface NotificationsConfig<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent> {
|
|
9
16
|
onTokenAcquired: (token: string) => Promise<void>;
|
|
10
17
|
isSignedIn: boolean;
|
|
11
18
|
androidChannels?: AndroidChannel[];
|
|
12
19
|
androidSmallIcon?: string;
|
|
13
20
|
defaultChannelId?: string;
|
|
14
|
-
onNotificationOpened?: (data: NotificationData
|
|
21
|
+
onNotificationOpened?: (data: NotificationData<TResourceEvent>, messageId?: string) => void;
|
|
22
|
+
onMessageData?: (data: NotificationData<TResourceEvent>) => void;
|
|
15
23
|
}
|
|
16
24
|
declare function requestUserPermission(): Promise<boolean>;
|
|
17
25
|
declare function getDeviceToken(): Promise<string | null>;
|
|
18
26
|
declare function registerChannels(channels: AndroidChannel[]): Promise<void>;
|
|
19
|
-
declare function useNotifications(config: NotificationsConfig): void;
|
|
27
|
+
declare function useNotifications<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(config: NotificationsConfig<TResourceEvent>): void;
|
|
20
28
|
declare function deleteAllChannels(): Promise<void>;
|
|
21
29
|
declare function subscribeToTopics(topics: string[]): Promise<void>;
|
|
30
|
+
declare function registerBackgroundFcmHandler<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(handler: (data: NotificationData<TResourceEvent>) => void | Promise<void>): void;
|
|
22
31
|
declare function unsubscribeFromTopics(topics: string[]): Promise<void>;
|
|
23
|
-
export { deleteAllChannels, getDeviceToken, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications, };
|
|
32
|
+
export { deleteAllChannels, getDeviceToken, registerBackgroundFcmHandler, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications, };
|
|
24
33
|
export default useNotifications;
|
|
25
34
|
//# sourceMappingURL=useNotifications.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAgB,EAGd,cAAc,EACf,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAgB,EAGd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAkB/B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,yBAAyB,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,gBAAgB,CAC1B,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,IAC1E,CAAC,cAAc,GAAG;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,mBAAmB,CAClC,cAAc,SAAS,yBAAyB,GAAG,yBAAyB;IAE5E,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CAClE;AAED,iBAAe,qBAAqB,qBAInC;AAED,iBAAe,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKtD;AAED,iBAAe,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AA4BD,iBAAS,gBAAgB,CACvB,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAC5E,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,CAuEnD;AAED,iBAAe,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAED,iBAAe,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;AAKD,iBAAS,4BAA4B,CACnC,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAE5E,OAAO,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxE,IAAI,CAMN;AAED,iBAAe,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;AAED,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,4BAA4B,EAC5B,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NotificationData, NotificationResourceEvent } from '../hooks/useNotifications';
|
|
2
|
+
type ResourceEventKey<TResourceEvent extends NotificationResourceEvent> = TResourceEvent extends {
|
|
3
|
+
resource_type: infer R extends string;
|
|
4
|
+
action: infer A extends string;
|
|
5
|
+
} ? `${R}:${A}` : never;
|
|
6
|
+
type FcmEventHandler<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent> = (data: NotificationData<TResourceEvent>) => void;
|
|
7
|
+
type FcmEventHandlerMap<TResourceEvent extends NotificationResourceEvent> = Record<ResourceEventKey<TResourceEvent>, FcmEventHandler<TResourceEvent>>;
|
|
8
|
+
interface CreateFcmDispatcherOptions {
|
|
9
|
+
onError?: (err: unknown, key: string) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function createFcmDispatcher<TResourceEvent extends NotificationResourceEvent>(handlers: FcmEventHandlerMap<TResourceEvent>, options?: CreateFcmDispatcherOptions): FcmEventHandler<TResourceEvent>;
|
|
12
|
+
export { createFcmDispatcher, type CreateFcmDispatcherOptions, type FcmEventHandler, type FcmEventHandlerMap, type ResourceEventKey, };
|
|
13
|
+
//# sourceMappingURL=createFcmDispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFcmDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/utils/createFcmDispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,KAAK,gBAAgB,CAAC,cAAc,SAAS,yBAAyB,IACpE,cAAc,SAAS;IAAE,aAAa,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAC5F,GAAG,CAAC,IAAI,CAAC,EAAE,GACX,KAAK,CAAC;AAEZ,KAAK,eAAe,CAClB,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,IAC1E,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;AAErD,KAAK,kBAAkB,CAAC,cAAc,SAAS,yBAAyB,IACtE,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;AAE5E,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,iBAAS,mBAAmB,CAAC,cAAc,SAAS,yBAAyB,EAC3E,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAC5C,OAAO,GAAE,0BAA+B,GACvC,eAAe,CAAC,cAAc,CAAC,CAkBjC;AAED,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,CAAC"}
|
|
@@ -8,5 +8,7 @@ export * from './openExternalURL';
|
|
|
8
8
|
export * from './openFileInSystemViewer';
|
|
9
9
|
export * from './downloadFileToLocalStorage';
|
|
10
10
|
export * from './keyboard';
|
|
11
|
+
export * from './createFcmDispatcher';
|
|
12
|
+
export * from './pendingResourceEventQueue';
|
|
11
13
|
export { default as delay } from './delay';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NotificationData, NotificationResourceEvent } from '../hooks/useNotifications';
|
|
2
|
+
declare function appendPendingResourceEvent<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(data: NotificationData<TResourceEvent>): Promise<void>;
|
|
3
|
+
declare function flushPendingResourceEventQueue<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(handler: (data: NotificationData<TResourceEvent>) => void): Promise<void>;
|
|
4
|
+
export { appendPendingResourceEvent, flushPendingResourceEventQueue };
|
|
5
|
+
//# sourceMappingURL=pendingResourceEventQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendingResourceEventQueue.d.ts","sourceRoot":"","sources":["../../../../src/utils/pendingResourceEventQueue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AA2CnC,iBAAS,0BAA0B,CACjC,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAC5E,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvD;AAED,iBAAe,8BAA8B,CAC3C,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAC5E,OAAO,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1E;AAED,OAAO,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
import { AndroidChannel } from '@notifee/react-native';
|
|
2
2
|
export type { AndroidChannel };
|
|
3
|
-
export
|
|
3
|
+
export type NotificationResourceEvent = {
|
|
4
|
+
resource_type: string;
|
|
5
|
+
action: string;
|
|
6
|
+
};
|
|
7
|
+
export type NotificationData<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent> = (TResourceEvent | {
|
|
8
|
+
resource_type: undefined;
|
|
9
|
+
action: undefined;
|
|
10
|
+
}) & {
|
|
4
11
|
url?: string;
|
|
5
12
|
channelId?: string;
|
|
6
13
|
[key: string]: string | undefined;
|
|
7
|
-
}
|
|
8
|
-
export interface NotificationsConfig {
|
|
14
|
+
};
|
|
15
|
+
export interface NotificationsConfig<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent> {
|
|
9
16
|
onTokenAcquired: (token: string) => Promise<void>;
|
|
10
17
|
isSignedIn: boolean;
|
|
11
18
|
androidChannels?: AndroidChannel[];
|
|
12
19
|
androidSmallIcon?: string;
|
|
13
20
|
defaultChannelId?: string;
|
|
14
|
-
onNotificationOpened?: (data: NotificationData
|
|
21
|
+
onNotificationOpened?: (data: NotificationData<TResourceEvent>, messageId?: string) => void;
|
|
22
|
+
onMessageData?: (data: NotificationData<TResourceEvent>) => void;
|
|
15
23
|
}
|
|
16
24
|
declare function requestUserPermission(): Promise<boolean>;
|
|
17
25
|
declare function getDeviceToken(): Promise<string | null>;
|
|
18
26
|
declare function registerChannels(channels: AndroidChannel[]): Promise<void>;
|
|
19
|
-
declare function useNotifications(config: NotificationsConfig): void;
|
|
27
|
+
declare function useNotifications<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(config: NotificationsConfig<TResourceEvent>): void;
|
|
20
28
|
declare function deleteAllChannels(): Promise<void>;
|
|
21
29
|
declare function subscribeToTopics(topics: string[]): Promise<void>;
|
|
30
|
+
declare function registerBackgroundFcmHandler<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(handler: (data: NotificationData<TResourceEvent>) => void | Promise<void>): void;
|
|
22
31
|
declare function unsubscribeFromTopics(topics: string[]): Promise<void>;
|
|
23
|
-
export { deleteAllChannels, getDeviceToken, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications, };
|
|
32
|
+
export { deleteAllChannels, getDeviceToken, registerBackgroundFcmHandler, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications, };
|
|
24
33
|
export default useNotifications;
|
|
25
34
|
//# sourceMappingURL=useNotifications.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAgB,EAGd,cAAc,EACf,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAgB,EAGd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAkB/B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,yBAAyB,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,gBAAgB,CAC1B,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,IAC1E,CAAC,cAAc,GAAG;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,mBAAmB,CAClC,cAAc,SAAS,yBAAyB,GAAG,yBAAyB;IAE5E,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CAClE;AAED,iBAAe,qBAAqB,qBAInC;AAED,iBAAe,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKtD;AAED,iBAAe,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AA4BD,iBAAS,gBAAgB,CACvB,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAC5E,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,IAAI,CAuEnD;AAED,iBAAe,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAED,iBAAe,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;AAKD,iBAAS,4BAA4B,CACnC,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAE5E,OAAO,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxE,IAAI,CAMN;AAED,iBAAe,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;AAED,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,4BAA4B,EAC5B,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NotificationData, NotificationResourceEvent } from '../hooks/useNotifications';
|
|
2
|
+
type ResourceEventKey<TResourceEvent extends NotificationResourceEvent> = TResourceEvent extends {
|
|
3
|
+
resource_type: infer R extends string;
|
|
4
|
+
action: infer A extends string;
|
|
5
|
+
} ? `${R}:${A}` : never;
|
|
6
|
+
type FcmEventHandler<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent> = (data: NotificationData<TResourceEvent>) => void;
|
|
7
|
+
type FcmEventHandlerMap<TResourceEvent extends NotificationResourceEvent> = Record<ResourceEventKey<TResourceEvent>, FcmEventHandler<TResourceEvent>>;
|
|
8
|
+
interface CreateFcmDispatcherOptions {
|
|
9
|
+
onError?: (err: unknown, key: string) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function createFcmDispatcher<TResourceEvent extends NotificationResourceEvent>(handlers: FcmEventHandlerMap<TResourceEvent>, options?: CreateFcmDispatcherOptions): FcmEventHandler<TResourceEvent>;
|
|
12
|
+
export { createFcmDispatcher, type CreateFcmDispatcherOptions, type FcmEventHandler, type FcmEventHandlerMap, type ResourceEventKey, };
|
|
13
|
+
//# sourceMappingURL=createFcmDispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFcmDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/utils/createFcmDispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,KAAK,gBAAgB,CAAC,cAAc,SAAS,yBAAyB,IACpE,cAAc,SAAS;IAAE,aAAa,EAAE,MAAM,CAAC,SAAS,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAC5F,GAAG,CAAC,IAAI,CAAC,EAAE,GACX,KAAK,CAAC;AAEZ,KAAK,eAAe,CAClB,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,IAC1E,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;AAErD,KAAK,kBAAkB,CAAC,cAAc,SAAS,yBAAyB,IACtE,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;AAE5E,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,iBAAS,mBAAmB,CAAC,cAAc,SAAS,yBAAyB,EAC3E,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAC5C,OAAO,GAAE,0BAA+B,GACvC,eAAe,CAAC,cAAc,CAAC,CAkBjC;AAED,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,CAAC"}
|
|
@@ -8,5 +8,7 @@ export * from './openExternalURL';
|
|
|
8
8
|
export * from './openFileInSystemViewer';
|
|
9
9
|
export * from './downloadFileToLocalStorage';
|
|
10
10
|
export * from './keyboard';
|
|
11
|
+
export * from './createFcmDispatcher';
|
|
12
|
+
export * from './pendingResourceEventQueue';
|
|
11
13
|
export { default as delay } from './delay';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NotificationData, NotificationResourceEvent } from '../hooks/useNotifications';
|
|
2
|
+
declare function appendPendingResourceEvent<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(data: NotificationData<TResourceEvent>): Promise<void>;
|
|
3
|
+
declare function flushPendingResourceEventQueue<TResourceEvent extends NotificationResourceEvent = NotificationResourceEvent>(handler: (data: NotificationData<TResourceEvent>) => void): Promise<void>;
|
|
4
|
+
export { appendPendingResourceEvent, flushPendingResourceEventQueue };
|
|
5
|
+
//# sourceMappingURL=pendingResourceEventQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendingResourceEventQueue.d.ts","sourceRoot":"","sources":["../../../../src/utils/pendingResourceEventQueue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AA2CnC,iBAAS,0BAA0B,CACjC,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAC5E,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvD;AAED,iBAAe,8BAA8B,CAC3C,cAAc,SAAS,yBAAyB,GAAG,yBAAyB,EAC5E,OAAO,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1E;AAED,OAAO,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,CAAC"}
|