@grupalia/rn-ui-kit 0.89.0 → 0.91.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/index.js +11 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useNotifications.js +126 -0
- package/lib/commonjs/hooks/useNotifications.js.map +1 -0
- package/lib/module/api/types.js.map +1 -1
- package/lib/module/hooks/index.js +1 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useNotifications.js +115 -0
- package/lib/module/hooks/useNotifications.js.map +1 -0
- package/lib/typescript/commonjs/api/types.d.ts +2 -1
- package/lib/typescript/commonjs/api/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/index.d.ts +1 -0
- package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/useNotifications.d.ts +25 -0
- package/lib/typescript/commonjs/hooks/useNotifications.d.ts.map +1 -0
- package/lib/typescript/module/api/types.d.ts +2 -1
- package/lib/typescript/module/api/types.d.ts.map +1 -1
- package/lib/typescript/module/hooks/index.d.ts +1 -0
- package/lib/typescript/module/hooks/index.d.ts.map +1 -1
- package/lib/typescript/module/hooks/useNotifications.d.ts +25 -0
- package/lib/typescript/module/hooks/useNotifications.d.ts.map +1 -0
- package/package.json +7 -3
|
@@ -80,4 +80,15 @@ Object.keys(_useRefreshRegistry).forEach(function (key) {
|
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
82
|
});
|
|
83
|
+
var _useNotifications = require("./useNotifications");
|
|
84
|
+
Object.keys(_useNotifications).forEach(function (key) {
|
|
85
|
+
if (key === "default" || key === "__esModule") return;
|
|
86
|
+
if (key in exports && exports[key] === _useNotifications[key]) return;
|
|
87
|
+
Object.defineProperty(exports, key, {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function () {
|
|
90
|
+
return _useNotifications[key];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
83
94
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_useBreakpoints","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_useIsAboveBreakpoint","_useInternetConnectionStatus","_useTimezonedDate","_useAppUpdateCheck","_useCurrentTime","_useRefreshRegistry"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_useBreakpoints","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_useIsAboveBreakpoint","_useInternetConnectionStatus","_useTimezonedDate","_useAppUpdateCheck","_useCurrentTime","_useRefreshRegistry","_useNotifications"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,eAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,eAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,eAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,qBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,qBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,qBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,qBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,4BAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,4BAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,4BAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,4BAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,iBAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,iBAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,iBAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,iBAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,kBAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,kBAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,kBAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,kBAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,eAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,eAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,eAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,eAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,mBAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,mBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAU,mBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,mBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,iBAAA,GAAAf,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAa,iBAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAW,iBAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAO,iBAAA,CAAAX,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
exports.deleteAllChannels = deleteAllChannels;
|
|
8
|
+
exports.getDeviceToken = getDeviceToken;
|
|
9
|
+
exports.registerChannels = registerChannels;
|
|
10
|
+
exports.requestUserPermission = requestUserPermission;
|
|
11
|
+
exports.subscribeToTopics = subscribeToTopics;
|
|
12
|
+
exports.unsubscribeFromTopics = unsubscribeFromTopics;
|
|
13
|
+
exports.useNotifications = useNotifications;
|
|
14
|
+
var _reactNative = _interopRequireWildcard(require("@notifee/react-native"));
|
|
15
|
+
var _messaging = require("@react-native-firebase/messaging");
|
|
16
|
+
var _react = require("react");
|
|
17
|
+
var _reactNative2 = require("react-native");
|
|
18
|
+
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
|
+
async function requestUserPermission() {
|
|
20
|
+
const settings = await _reactNative.default.requestPermission();
|
|
21
|
+
return settings.authorizationStatus >= _messaging.AuthorizationStatus.AUTHORIZED;
|
|
22
|
+
}
|
|
23
|
+
async function getDeviceToken() {
|
|
24
|
+
const enabled = await requestUserPermission();
|
|
25
|
+
if (!enabled) return null;
|
|
26
|
+
return (0, _messaging.getToken)((0, _messaging.getMessaging)());
|
|
27
|
+
}
|
|
28
|
+
async function registerChannels(channels) {
|
|
29
|
+
const registered = await _reactNative.default.getChannels();
|
|
30
|
+
const registeredIds = new Set(registered.map(channel => channel.id));
|
|
31
|
+
await Promise.all(channels.filter(channel => !registeredIds.has(channel.id)).map(channel => _reactNative.default.createChannel(channel)));
|
|
32
|
+
}
|
|
33
|
+
function extractNotificationData(message) {
|
|
34
|
+
return message.data ?? {};
|
|
35
|
+
}
|
|
36
|
+
async function displayForegroundNotification(message, config) {
|
|
37
|
+
const data = extractNotificationData(message);
|
|
38
|
+
await _reactNative.default.displayNotification({
|
|
39
|
+
title: message.notification?.title ?? undefined,
|
|
40
|
+
body: message.notification?.body ?? undefined,
|
|
41
|
+
data: message.data,
|
|
42
|
+
android: {
|
|
43
|
+
channelId: data.channelId || config.defaultChannelId || 'default',
|
|
44
|
+
smallIcon: config.androidSmallIcon,
|
|
45
|
+
pressAction: {
|
|
46
|
+
id: 'default'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function useNotifications(config) {
|
|
52
|
+
const {
|
|
53
|
+
isSignedIn
|
|
54
|
+
} = config;
|
|
55
|
+
const messaging = (0, _messaging.getMessaging)();
|
|
56
|
+
(0, _react.useEffect)(() => {
|
|
57
|
+
if (config.androidChannels?.length && _reactNative2.Platform.OS === 'android') {
|
|
58
|
+
registerChannels(config.androidChannels);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Cold start: app was killed, user tapped OS notification
|
|
62
|
+
(0, _messaging.getInitialNotification)(messaging).then(message => {
|
|
63
|
+
if (message) {
|
|
64
|
+
const data = extractNotificationData(message);
|
|
65
|
+
config.onNotificationOpened?.(data, message.messageId);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
|
+
}, []);
|
|
70
|
+
(0, _react.useEffect)(() => {
|
|
71
|
+
const unsubscribeOnMessage = (0, _messaging.onMessage)(messaging, message => {
|
|
72
|
+
displayForegroundNotification(message, config);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Background → foreground: user tapped OS notification
|
|
76
|
+
const unsubscribeOnOpened = (0, _messaging.onNotificationOpenedApp)(messaging, message => {
|
|
77
|
+
const data = extractNotificationData(message);
|
|
78
|
+
config.onNotificationOpened?.(data, message.messageId);
|
|
79
|
+
});
|
|
80
|
+
const unsubscribeOnForegroundTap = _reactNative.default.onForegroundEvent(event => {
|
|
81
|
+
if (event.type === _reactNative.EventType.PRESS && event.detail.notification) {
|
|
82
|
+
const data = event.detail.notification.data ?? {};
|
|
83
|
+
config.onNotificationOpened?.(data, event.detail.notification.id);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return () => {
|
|
87
|
+
unsubscribeOnMessage();
|
|
88
|
+
unsubscribeOnOpened();
|
|
89
|
+
unsubscribeOnForegroundTap();
|
|
90
|
+
};
|
|
91
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
92
|
+
}, [config]);
|
|
93
|
+
(0, _react.useEffect)(() => {
|
|
94
|
+
if (!isSignedIn) return;
|
|
95
|
+
const acquireAndRegisterToken = async () => {
|
|
96
|
+
try {
|
|
97
|
+
const token = await getDeviceToken();
|
|
98
|
+
if (token) {
|
|
99
|
+
try {
|
|
100
|
+
await config.onTokenAcquired(token);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error('onTokenAcquired error:', error);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error(error);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
acquireAndRegisterToken();
|
|
110
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
111
|
+
}, [isSignedIn]);
|
|
112
|
+
}
|
|
113
|
+
async function deleteAllChannels() {
|
|
114
|
+
const channels = await _reactNative.default.getChannels();
|
|
115
|
+
await Promise.all(channels.map(channel => _reactNative.default.deleteChannel(channel.id)));
|
|
116
|
+
}
|
|
117
|
+
async function subscribeToTopics(topics) {
|
|
118
|
+
const messaging = (0, _messaging.getMessaging)();
|
|
119
|
+
await Promise.all(topics.map(topic => (0, _messaging.subscribeToTopic)(messaging, topic)));
|
|
120
|
+
}
|
|
121
|
+
async function unsubscribeFromTopics(topics) {
|
|
122
|
+
const messaging = (0, _messaging.getMessaging)();
|
|
123
|
+
await Promise.all(topics.map(topic => (0, _messaging.unsubscribeFromTopic)(messaging, topic)));
|
|
124
|
+
}
|
|
125
|
+
var _default = exports.default = useNotifications;
|
|
126
|
+
//# sourceMappingURL=useNotifications.js.map
|
|
@@ -0,0 +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","displayNotification","title","notification","undefined","body","android","channelId","defaultChannelId","smallIcon","androidSmallIcon","pressAction","useNotifications","isSignedIn","messaging","useEffect","androidChannels","length","Platform","OS","getInitialNotification","then","onNotificationOpened","messageId","unsubscribeOnMessage","onMessage","unsubscribeOnOpened","onNotificationOpenedApp","unsubscribeOnForegroundTap","onForegroundEvent","event","type","EventType","PRESS","detail","acquireAndRegisterToken","token","onTokenAcquired","error","console","deleteAllChannels","deleteChannel","subscribeToTopics","topics","topic","subscribeToTopic","unsubscribeFromTopics","unsubscribeFromTopic","_default","exports"],"sourceRoot":"../../../src","sources":["hooks/useNotifications.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RansackParams"],"sourceRoot":"../../../src","sources":["api/types.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAW;
|
|
1
|
+
{"version":3,"names":["RansackParams"],"sourceRoot":"../../../src","sources":["api/types.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAW;AA8BzC,SAIEA,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,cAAc,qBAAkB;AAChC,cAAc,2BAAwB;AACtC,cAAc,kCAA+B;AAC7C,cAAc,uBAAoB;AAClC,cAAc,wBAAqB;AACnC,cAAc,qBAAkB;AAChC,cAAc,yBAAsB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,cAAc,qBAAkB;AAChC,cAAc,2BAAwB;AACtC,cAAc,kCAA+B;AAC7C,cAAc,uBAAoB;AAClC,cAAc,wBAAqB;AACnC,cAAc,qBAAkB;AAChC,cAAc,yBAAsB;AACpC,cAAc,uBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import notifee, { EventType } from '@notifee/react-native';
|
|
4
|
+
import { getMessaging, getToken, AuthorizationStatus, getInitialNotification, onMessage, onNotificationOpenedApp, subscribeToTopic, unsubscribeFromTopic } from '@react-native-firebase/messaging';
|
|
5
|
+
import { useEffect } from 'react';
|
|
6
|
+
import { Platform } from 'react-native';
|
|
7
|
+
async function requestUserPermission() {
|
|
8
|
+
const settings = await notifee.requestPermission();
|
|
9
|
+
return settings.authorizationStatus >= AuthorizationStatus.AUTHORIZED;
|
|
10
|
+
}
|
|
11
|
+
async function getDeviceToken() {
|
|
12
|
+
const enabled = await requestUserPermission();
|
|
13
|
+
if (!enabled) return null;
|
|
14
|
+
return getToken(getMessaging());
|
|
15
|
+
}
|
|
16
|
+
async function registerChannels(channels) {
|
|
17
|
+
const registered = await notifee.getChannels();
|
|
18
|
+
const registeredIds = new Set(registered.map(channel => channel.id));
|
|
19
|
+
await Promise.all(channels.filter(channel => !registeredIds.has(channel.id)).map(channel => notifee.createChannel(channel)));
|
|
20
|
+
}
|
|
21
|
+
function extractNotificationData(message) {
|
|
22
|
+
return message.data ?? {};
|
|
23
|
+
}
|
|
24
|
+
async function displayForegroundNotification(message, config) {
|
|
25
|
+
const data = extractNotificationData(message);
|
|
26
|
+
await notifee.displayNotification({
|
|
27
|
+
title: message.notification?.title ?? undefined,
|
|
28
|
+
body: message.notification?.body ?? undefined,
|
|
29
|
+
data: message.data,
|
|
30
|
+
android: {
|
|
31
|
+
channelId: data.channelId || config.defaultChannelId || 'default',
|
|
32
|
+
smallIcon: config.androidSmallIcon,
|
|
33
|
+
pressAction: {
|
|
34
|
+
id: 'default'
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function useNotifications(config) {
|
|
40
|
+
const {
|
|
41
|
+
isSignedIn
|
|
42
|
+
} = config;
|
|
43
|
+
const messaging = getMessaging();
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (config.androidChannels?.length && Platform.OS === 'android') {
|
|
46
|
+
registerChannels(config.androidChannels);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Cold start: app was killed, user tapped OS notification
|
|
50
|
+
getInitialNotification(messaging).then(message => {
|
|
51
|
+
if (message) {
|
|
52
|
+
const data = extractNotificationData(message);
|
|
53
|
+
config.onNotificationOpened?.(data, message.messageId);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
|
+
}, []);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
const unsubscribeOnMessage = onMessage(messaging, message => {
|
|
60
|
+
displayForegroundNotification(message, config);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Background → foreground: user tapped OS notification
|
|
64
|
+
const unsubscribeOnOpened = onNotificationOpenedApp(messaging, message => {
|
|
65
|
+
const data = extractNotificationData(message);
|
|
66
|
+
config.onNotificationOpened?.(data, message.messageId);
|
|
67
|
+
});
|
|
68
|
+
const unsubscribeOnForegroundTap = notifee.onForegroundEvent(event => {
|
|
69
|
+
if (event.type === EventType.PRESS && event.detail.notification) {
|
|
70
|
+
const data = event.detail.notification.data ?? {};
|
|
71
|
+
config.onNotificationOpened?.(data, event.detail.notification.id);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return () => {
|
|
75
|
+
unsubscribeOnMessage();
|
|
76
|
+
unsubscribeOnOpened();
|
|
77
|
+
unsubscribeOnForegroundTap();
|
|
78
|
+
};
|
|
79
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
80
|
+
}, [config]);
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!isSignedIn) return;
|
|
83
|
+
const acquireAndRegisterToken = async () => {
|
|
84
|
+
try {
|
|
85
|
+
const token = await getDeviceToken();
|
|
86
|
+
if (token) {
|
|
87
|
+
try {
|
|
88
|
+
await config.onTokenAcquired(token);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('onTokenAcquired error:', error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
} catch (error) {
|
|
94
|
+
console.error(error);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
acquireAndRegisterToken();
|
|
98
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
99
|
+
}, [isSignedIn]);
|
|
100
|
+
}
|
|
101
|
+
async function deleteAllChannels() {
|
|
102
|
+
const channels = await notifee.getChannels();
|
|
103
|
+
await Promise.all(channels.map(channel => notifee.deleteChannel(channel.id)));
|
|
104
|
+
}
|
|
105
|
+
async function subscribeToTopics(topics) {
|
|
106
|
+
const messaging = getMessaging();
|
|
107
|
+
await Promise.all(topics.map(topic => subscribeToTopic(messaging, topic)));
|
|
108
|
+
}
|
|
109
|
+
async function unsubscribeFromTopics(topics) {
|
|
110
|
+
const messaging = getMessaging();
|
|
111
|
+
await Promise.all(topics.map(topic => unsubscribeFromTopic(messaging, topic)));
|
|
112
|
+
}
|
|
113
|
+
export { deleteAllChannels, getDeviceToken, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications };
|
|
114
|
+
export default useNotifications;
|
|
115
|
+
//# sourceMappingURL=useNotifications.js.map
|
|
@@ -0,0 +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","displayNotification","title","notification","undefined","body","android","channelId","defaultChannelId","smallIcon","androidSmallIcon","pressAction","useNotifications","isSignedIn","messaging","androidChannels","length","OS","then","onNotificationOpened","messageId","unsubscribeOnMessage","unsubscribeOnOpened","unsubscribeOnForegroundTap","onForegroundEvent","event","type","PRESS","detail","acquireAndRegisterToken","token","onTokenAcquired","error","console","deleteAllChannels","deleteChannel","subscribeToTopics","topics","topic","unsubscribeFromTopics"],"sourceRoot":"../../../src","sources":["hooks/useNotifications.ts"],"mappings":";;AAAA,OAAOA,OAAO,IACZC,SAAS,QAGJ,uBAAuB;AAC9B,SACEC,YAAY,EACZC,QAAQ,EACRC,mBAAmB,EACnBC,sBAAsB,EACtBC,SAAS,EACTC,uBAAuB,EACvBC,gBAAgB,EAChBC,oBAAoB,QAEf,kCAAkC;AACzC,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,QAAQ,QAAQ,cAAc;AAmBvC,eAAeC,qBAAqBA,CAAA,EAAG;EACrC,MAAMC,QAAQ,GAAG,MAAMb,OAAO,CAACc,iBAAiB,CAAC,CAAC;EAElD,OAAOD,QAAQ,CAACE,mBAAmB,IAAIX,mBAAmB,CAACY,UAAU;AACvE;AAEA,eAAeC,cAAcA,CAAA,EAA2B;EACtD,MAAMC,OAAO,GAAG,MAAMN,qBAAqB,CAAC,CAAC;EAC7C,IAAI,CAACM,OAAO,EAAE,OAAO,IAAI;EAEzB,OAAOf,QAAQ,CAACD,YAAY,CAAC,CAAC,CAAC;AACjC;AAEA,eAAeiB,gBAAgBA,CAACC,QAA0B,EAAiB;EACzE,MAAMC,UAAU,GAAG,MAAMrB,OAAO,CAACsB,WAAW,CAAC,CAAC;EAC9C,MAAMC,aAAa,GAAG,IAAIC,GAAG,CAACH,UAAU,CAACI,GAAG,CAAEC,OAAO,IAAKA,OAAO,CAACC,EAAE,CAAC,CAAC;EAEtE,MAAMC,OAAO,CAACC,GAAG,CACfT,QAAQ,CACLU,MAAM,CAAEJ,OAAO,IAAK,CAACH,aAAa,CAACQ,GAAG,CAACL,OAAO,CAACC,EAAE,CAAC,CAAC,CACnDF,GAAG,CAAEC,OAAO,IAAK1B,OAAO,CAACgC,aAAa,CAACN,OAAO,CAAC,CACpD,CAAC;AACH;AAEA,SAASO,uBAAuBA,CAC9BC,OAA6C,EAC3B;EAClB,OAAQA,OAAO,CAACC,IAAI,IAAyB,CAAC,CAAC;AACjD;AAEA,eAAeC,6BAA6BA,CAC1CF,OAA6C,EAC7CG,MAA0E,EAC3D;EACf,MAAMF,IAAI,GAAGF,uBAAuB,CAACC,OAAO,CAAC;EAE7C,MAAMlC,OAAO,CAACsC,mBAAmB,CAAC;IAChCC,KAAK,EAAEL,OAAO,CAACM,YAAY,EAAED,KAAK,IAAIE,SAAS;IAC/CC,IAAI,EAAER,OAAO,CAACM,YAAY,EAAEE,IAAI,IAAID,SAAS;IAC7CN,IAAI,EAAED,OAAO,CAACC,IAAI;IAClBQ,OAAO,EAAE;MACPC,SAAS,EAAET,IAAI,CAACS,SAAS,IAAIP,MAAM,CAACQ,gBAAgB,IAAI,SAAS;MACjEC,SAAS,EAAET,MAAM,CAACU,gBAAgB;MAClCC,WAAW,EAAE;QAAErB,EAAE,EAAE;MAAU;IAC/B;EACF,CAAC,CAAC;AACJ;AAEA,SAASsB,gBAAgBA,CAACZ,MAA2B,EAAQ;EAC3D,MAAM;IAAEa;EAAW,CAAC,GAAGb,MAAM;EAC7B,MAAMc,SAAS,GAAGjD,YAAY,CAAC,CAAC;EAEhCQ,SAAS,CAAC,MAAM;IACd,IAAI2B,MAAM,CAACe,eAAe,EAAEC,MAAM,IAAI1C,QAAQ,CAAC2C,EAAE,KAAK,SAAS,EAAE;MAC/DnC,gBAAgB,CAACkB,MAAM,CAACe,eAAe,CAAC;IAC1C;;IAEA;IACA/C,sBAAsB,CAAC8C,SAAS,CAAC,CAACI,IAAI,CAAErB,OAAO,IAAK;MAClD,IAAIA,OAAO,EAAE;QACX,MAAMC,IAAI,GAAGF,uBAAuB,CAACC,OAAO,CAAC;QAC7CG,MAAM,CAACmB,oBAAoB,GAAGrB,IAAI,EAAED,OAAO,CAACuB,SAAS,CAAC;MACxD;IACF,CAAC,CAAC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;EAEN/C,SAAS,CAAC,MAAM;IACd,MAAMgD,oBAAoB,GAAGpD,SAAS,CAAC6C,SAAS,EAAGjB,OAAO,IAAK;MAC7DE,6BAA6B,CAACF,OAAO,EAAEG,MAAM,CAAC;IAChD,CAAC,CAAC;;IAEF;IACA,MAAMsB,mBAAmB,GAAGpD,uBAAuB,CAAC4C,SAAS,EAAGjB,OAAO,IAAK;MAC1E,MAAMC,IAAI,GAAGF,uBAAuB,CAACC,OAAO,CAAC;MAC7CG,MAAM,CAACmB,oBAAoB,GAAGrB,IAAI,EAAED,OAAO,CAACuB,SAAS,CAAC;IACxD,CAAC,CAAC;IAEF,MAAMG,0BAA0B,GAAG5D,OAAO,CAAC6D,iBAAiB,CAAEC,KAAY,IAAK;MAC7E,IAAIA,KAAK,CAACC,IAAI,KAAK9D,SAAS,CAAC+D,KAAK,IAAIF,KAAK,CAACG,MAAM,CAACzB,YAAY,EAAE;QAC/D,MAAML,IAAI,GAAI2B,KAAK,CAACG,MAAM,CAACzB,YAAY,CAACL,IAAI,IAAI,CAAC,CAAsB;QACvEE,MAAM,CAACmB,oBAAoB,GAAGrB,IAAI,EAAE2B,KAAK,CAACG,MAAM,CAACzB,YAAY,CAACb,EAAE,CAAC;MACnE;IACF,CAAC,CAAC;IAEF,OAAO,MAAM;MACX+B,oBAAoB,CAAC,CAAC;MACtBC,mBAAmB,CAAC,CAAC;MACrBC,0BAA0B,CAAC,CAAC;IAC9B,CAAC;IACD;EACF,CAAC,EAAE,CAACvB,MAAM,CAAC,CAAC;EAEZ3B,SAAS,CAAC,MAAM;IACd,IAAI,CAACwC,UAAU,EAAE;IAEjB,MAAMgB,uBAAuB,GAAG,MAAAA,CAAA,KAAY;MAC1C,IAAI;QACF,MAAMC,KAAK,GAAG,MAAMlD,cAAc,CAAC,CAAC;QACpC,IAAIkD,KAAK,EAAE;UACT,IAAI;YACF,MAAM9B,MAAM,CAAC+B,eAAe,CAACD,KAAK,CAAC;UACrC,CAAC,CAAC,OAAOE,KAAK,EAAE;YACdC,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;UAChD;QACF;MACF,CAAC,CAAC,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;MACtB;IACF,CAAC;IAEDH,uBAAuB,CAAC,CAAC;IACzB;EACF,CAAC,EAAE,CAAChB,UAAU,CAAC,CAAC;AAClB;AAEA,eAAeqB,iBAAiBA,CAAA,EAAkB;EAChD,MAAMnD,QAAQ,GAAG,MAAMpB,OAAO,CAACsB,WAAW,CAAC,CAAC;EAC5C,MAAMM,OAAO,CAACC,GAAG,CAACT,QAAQ,CAACK,GAAG,CAAEC,OAAO,IAAK1B,OAAO,CAACwE,aAAa,CAAC9C,OAAO,CAACC,EAAE,CAAC,CAAC,CAAC;AACjF;AAEA,eAAe8C,iBAAiBA,CAACC,MAAgB,EAAiB;EAChE,MAAMvB,SAAS,GAAGjD,YAAY,CAAC,CAAC;EAChC,MAAM0B,OAAO,CAACC,GAAG,CAAC6C,MAAM,CAACjD,GAAG,CAAEkD,KAAK,IAAKnE,gBAAgB,CAAC2C,SAAS,EAAEwB,KAAK,CAAC,CAAC,CAAC;AAC9E;AAEA,eAAeC,qBAAqBA,CAACF,MAAgB,EAAiB;EACpE,MAAMvB,SAAS,GAAGjD,YAAY,CAAC,CAAC;EAChC,MAAM0B,OAAO,CAACC,GAAG,CAAC6C,MAAM,CAACjD,GAAG,CAAEkD,KAAK,IAAKlE,oBAAoB,CAAC0C,SAAS,EAAEwB,KAAK,CAAC,CAAC,CAAC;AAClF;AAEA,SACEJ,iBAAiB,EACjBtD,cAAc,EACdE,gBAAgB,EAChBP,qBAAqB,EACrB6D,iBAAiB,EACjBG,qBAAqB,EACrB3B,gBAAgB;AAElB,eAAeA,gBAAgB","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AxiosError } from 'axios';
|
|
2
2
|
import { RansackParams } from './ransack';
|
|
3
3
|
interface ApiErrorResponseObject {
|
|
4
|
-
|
|
4
|
+
type: string;
|
|
5
5
|
message?: string;
|
|
6
6
|
detail?: string;
|
|
7
|
+
errors?: Record<string, unknown>;
|
|
7
8
|
}
|
|
8
9
|
type ApiError = AxiosError<ApiErrorResponseObject>;
|
|
9
10
|
interface PaginationParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,KAAK,QAAQ,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAEnD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;AAE/C,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AndroidChannel } from '@notifee/react-native';
|
|
2
|
+
export type { AndroidChannel };
|
|
3
|
+
export interface NotificationData {
|
|
4
|
+
url?: string;
|
|
5
|
+
channelId?: string;
|
|
6
|
+
[key: string]: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface NotificationsConfig {
|
|
9
|
+
onTokenAcquired: (token: string) => Promise<void>;
|
|
10
|
+
isSignedIn: boolean;
|
|
11
|
+
androidChannels?: AndroidChannel[];
|
|
12
|
+
androidSmallIcon?: string;
|
|
13
|
+
defaultChannelId?: string;
|
|
14
|
+
onNotificationOpened?: (data: NotificationData, messageId?: string) => void;
|
|
15
|
+
}
|
|
16
|
+
declare function requestUserPermission(): Promise<boolean>;
|
|
17
|
+
declare function getDeviceToken(): Promise<string | null>;
|
|
18
|
+
declare function registerChannels(channels: AndroidChannel[]): Promise<void>;
|
|
19
|
+
declare function useNotifications(config: NotificationsConfig): void;
|
|
20
|
+
declare function deleteAllChannels(): Promise<void>;
|
|
21
|
+
declare function subscribeToTopics(topics: string[]): Promise<void>;
|
|
22
|
+
declare function unsubscribeFromTopics(topics: string[]): Promise<void>;
|
|
23
|
+
export { deleteAllChannels, getDeviceToken, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications, };
|
|
24
|
+
export default useNotifications;
|
|
25
|
+
//# sourceMappingURL=useNotifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAgB,EAGd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAe/B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,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,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7E;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;AA0BD,iBAAS,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAkE3D;AAED,iBAAe,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAED,iBAAe,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;AAED,iBAAe,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;AAED,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AxiosError } from 'axios';
|
|
2
2
|
import { RansackParams } from './ransack';
|
|
3
3
|
interface ApiErrorResponseObject {
|
|
4
|
-
|
|
4
|
+
type: string;
|
|
5
5
|
message?: string;
|
|
6
6
|
detail?: string;
|
|
7
|
+
errors?: Record<string, unknown>;
|
|
7
8
|
}
|
|
8
9
|
type ApiError = AxiosError<ApiErrorResponseObject>;
|
|
9
10
|
interface PaginationParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,KAAK,QAAQ,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAEnD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;AAE/C,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AndroidChannel } from '@notifee/react-native';
|
|
2
|
+
export type { AndroidChannel };
|
|
3
|
+
export interface NotificationData {
|
|
4
|
+
url?: string;
|
|
5
|
+
channelId?: string;
|
|
6
|
+
[key: string]: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface NotificationsConfig {
|
|
9
|
+
onTokenAcquired: (token: string) => Promise<void>;
|
|
10
|
+
isSignedIn: boolean;
|
|
11
|
+
androidChannels?: AndroidChannel[];
|
|
12
|
+
androidSmallIcon?: string;
|
|
13
|
+
defaultChannelId?: string;
|
|
14
|
+
onNotificationOpened?: (data: NotificationData, messageId?: string) => void;
|
|
15
|
+
}
|
|
16
|
+
declare function requestUserPermission(): Promise<boolean>;
|
|
17
|
+
declare function getDeviceToken(): Promise<string | null>;
|
|
18
|
+
declare function registerChannels(channels: AndroidChannel[]): Promise<void>;
|
|
19
|
+
declare function useNotifications(config: NotificationsConfig): void;
|
|
20
|
+
declare function deleteAllChannels(): Promise<void>;
|
|
21
|
+
declare function subscribeToTopics(topics: string[]): Promise<void>;
|
|
22
|
+
declare function unsubscribeFromTopics(topics: string[]): Promise<void>;
|
|
23
|
+
export { deleteAllChannels, getDeviceToken, registerChannels, requestUserPermission, subscribeToTopics, unsubscribeFromTopics, useNotifications, };
|
|
24
|
+
export default useNotifications;
|
|
25
|
+
//# sourceMappingURL=useNotifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNotifications.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useNotifications.ts"],"names":[],"mappings":"AAAA,OAAgB,EAGd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAe/B,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,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,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7E;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;AA0BD,iBAAS,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAkE3D;AAED,iBAAe,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAED,iBAAe,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;AAED,iBAAe,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE;AAED,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grupalia/rn-ui-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.0",
|
|
4
4
|
"description": "Grupalia React Native UI Kit",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/module/index.d.ts",
|
|
@@ -54,7 +54,9 @@
|
|
|
54
54
|
"react-native-webview": "^13.12.5",
|
|
55
55
|
"react-use-wizard": "^2.3.0",
|
|
56
56
|
"tailwindcss": "3.3.2",
|
|
57
|
-
"yup": "^1.7.1"
|
|
57
|
+
"yup": "^1.7.1",
|
|
58
|
+
"@react-native-firebase/messaging": "~22",
|
|
59
|
+
"@notifee/react-native": "^7.8.2"
|
|
58
60
|
},
|
|
59
61
|
"devDependencies": {
|
|
60
62
|
"@babel/core": "^7.20.0",
|
|
@@ -106,7 +108,9 @@
|
|
|
106
108
|
"tailwindcss": "3.3.2",
|
|
107
109
|
"typescript": "~5.3.3",
|
|
108
110
|
"vitest": "^3.2.4",
|
|
109
|
-
"@types/yup": "^0.32.0"
|
|
111
|
+
"@types/yup": "^0.32.0",
|
|
112
|
+
"@react-native-firebase/messaging": "~22",
|
|
113
|
+
"@notifee/react-native": "^7.8.2"
|
|
110
114
|
},
|
|
111
115
|
"exports": {
|
|
112
116
|
".": {
|