@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.
@@ -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":"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","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;AA6BzC,SAIEA,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["RansackParams"],"sourceRoot":"../../../src","sources":["api/types.ts"],"mappings":";;AACA,SAASA,aAAa,QAAQ,cAAW;AA8BzC,SAIEA,aAAa","ignoreList":[]}
@@ -7,4 +7,5 @@ export * from "./useTimezonedDate.js";
7
7
  export * from "./useAppUpdateCheck.js";
8
8
  export * from "./useCurrentTime.js";
9
9
  export * from "./useRefreshRegistry.js";
10
+ export * from "./useNotifications.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -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":"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","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  import { AxiosError } from 'axios';
2
2
  import { RansackParams } from './ransack';
3
3
  interface ApiErrorResponseObject {
4
- status?: number;
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;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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
+ {"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"}
@@ -5,4 +5,5 @@ export * from './useTimezonedDate';
5
5
  export * from './useAppUpdateCheck';
6
6
  export * from './useCurrentTime';
7
7
  export * from './useRefreshRegistry';
8
+ export * from './useNotifications';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -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
- status?: number;
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;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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
+ {"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"}
@@ -5,4 +5,5 @@ export * from './useTimezonedDate';
5
5
  export * from './useAppUpdateCheck';
6
6
  export * from './useCurrentTime';
7
7
  export * from './useRefreshRegistry';
8
+ export * from './useNotifications';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -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.89.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
  ".": {