@umituz/react-native-notifications 1.0.0 → 1.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationManager.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/NotificationManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC3B,CAAC;IACF,OAAO,EAAE,GAAG,CAAC;CACd;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,SAAS;IAUhB;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA0B5C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxC;;OAEG;YACW,qBAAqB;IAkCnC;;;;;;;;;;;;;;;;;;OAkBG;IACG,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDjF;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7C;;OAEG;IACG,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAkBnE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAYtC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUlD"}
1
+ {"version":3,"file":"NotificationManager.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/NotificationManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC3B,CAAC;IACF,OAAO,EAAE,GAAG,CAAC;CACd;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,SAAS;IAUhB;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA2B5C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxC;;OAEG;YACW,qBAAqB;IAkCnC;;;;;;;;;;;;;;;;;;OAkBG;IACG,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDjF;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7C;;OAEG;IACG,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAkBnE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAYtC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUlD"}
@@ -53,11 +53,12 @@ export class NotificationManager {
53
53
  console.warn('[NotificationManager] Notifications only work on physical devices');
54
54
  return false;
55
55
  }
56
- const { status: existingStatus } = await Notifications.getPermissionsAsync();
56
+ const permissionsResponse = await Notifications.getPermissionsAsync();
57
+ const existingStatus = permissionsResponse.status || (permissionsResponse.granted ? 'granted' : 'denied');
57
58
  let finalStatus = existingStatus;
58
59
  if (existingStatus !== 'granted') {
59
- const { status } = await Notifications.requestPermissionsAsync();
60
- finalStatus = status;
60
+ const requestResponse = await Notifications.requestPermissionsAsync();
61
+ finalStatus = requestResponse.status || (requestResponse.granted ? 'granted' : 'denied');
61
62
  }
62
63
  if (Platform.OS === 'android') {
63
64
  await this.createAndroidChannels();
@@ -76,8 +77,8 @@ export class NotificationManager {
76
77
  try {
77
78
  if (!Device.isDevice)
78
79
  return false;
79
- const { status } = await Notifications.getPermissionsAsync();
80
- return status === 'granted';
80
+ const permissionsResponse = await Notifications.getPermissionsAsync();
81
+ return permissionsResponse.status === 'granted' || permissionsResponse.granted === true;
81
82
  }
82
83
  catch (error) {
83
84
  console.error('[NotificationManager] Permission check failed:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationManager.js","sourceRoot":"","sources":["../../../src/infrastructure/services/NotificationManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotificationManager.js","sourceRoot":"","sources":["../../../src/infrastructure/services/NotificationManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Notifications Screen - {{APP_NAME}}
3
+ *
4
+ * Simple notification toggle - enable or disable reminders
5
+ * Theme: {{THEME_ID}} ({{CATEGORY}} category)
6
+ */
7
+ import React from 'react';
8
+ export declare const NotificationsScreen: React.FC;
9
+ export default NotificationsScreen;
10
+ //# sourceMappingURL=NotificationsScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationsScreen.d.ts","sourceRoot":"","sources":["../../../src/presentation/screens/NotificationsScreen.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAevC,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAwCvC,CAAC;AA+BF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Notifications Screen - {{APP_NAME}}
3
+ *
4
+ * Simple notification toggle - enable or disable reminders
5
+ * Theme: {{THEME_ID}} ({{CATEGORY}} category)
6
+ */
7
+ import React, { useMemo } from 'react';
8
+ import { View, StyleSheet, ActivityIndicator } from 'react-native';
9
+ import { AtomicIcon, AtomicSwitch, AtomicCard, AtomicText, ScreenLayout, STATIC_TOKENS } from '@umituz/react-native-design-system';
10
+ import { useAppDesignTokens } from '@umituz/react-native-design-system-theme';
11
+ import { useNotificationSettings } from '../../infrastructure/hooks/useNotificationSettings';
12
+ // Note: Translation function should be provided by the app using this package
13
+ // This is a placeholder - apps should wrap this component with their i18n provider
14
+ const t = (key) => {
15
+ // Return key as fallback - apps should provide translation function
16
+ return key;
17
+ };
18
+ export const NotificationsScreen = () => {
19
+ const tokens = useAppDesignTokens();
20
+ const styles = useMemo(() => getStyles(tokens), [tokens]);
21
+ const { notificationsEnabled, setNotificationsEnabled, isLoading } = useNotificationSettings();
22
+ if (isLoading) {
23
+ return (<ScreenLayout testID="notifications-screen">
24
+ <View style={styles.loadingContainer}>
25
+ <ActivityIndicator size="large" color={tokens.colors.primary}/>
26
+ </View>
27
+ </ScreenLayout>);
28
+ }
29
+ return (<ScreenLayout testID="notifications-screen" hideScrollIndicator>
30
+ <AtomicCard style={styles.card}>
31
+ <View style={styles.settingItem}>
32
+ <View style={styles.iconContainer}>
33
+ <AtomicIcon name="Bell" size="lg" color="primary"/>
34
+ </View>
35
+ <View style={styles.textContainer}>
36
+ <AtomicText type="bodyLarge" style={{ color: tokens.colors.textPrimary }}>
37
+ {t('settings.notifications.enableNotifications')}
38
+ </AtomicText>
39
+ <AtomicText type="bodySmall" style={{ color: tokens.colors.textSecondary, marginTop: STATIC_TOKENS.spacing.xs }}>
40
+ {t('settings.notifications.description')}
41
+ </AtomicText>
42
+ </View>
43
+ <AtomicSwitch value={notificationsEnabled} onValueChange={setNotificationsEnabled} testID="notifications-toggle"/>
44
+ </View>
45
+ </AtomicCard>
46
+ </ScreenLayout>);
47
+ };
48
+ const getStyles = (tokens) => StyleSheet.create({
49
+ loadingContainer: {
50
+ flex: 1,
51
+ justifyContent: 'center',
52
+ alignItems: 'center',
53
+ },
54
+ card: {
55
+ padding: STATIC_TOKENS.spacing.lg,
56
+ backgroundColor: tokens.colors.surface,
57
+ },
58
+ settingItem: {
59
+ flexDirection: 'row',
60
+ alignItems: 'center',
61
+ },
62
+ iconContainer: {
63
+ width: 48,
64
+ height: 48,
65
+ borderRadius: 24,
66
+ backgroundColor: tokens.colors.surfaceSecondary,
67
+ justifyContent: 'center',
68
+ alignItems: 'center',
69
+ marginRight: STATIC_TOKENS.spacing.md,
70
+ },
71
+ textContainer: {
72
+ flex: 1,
73
+ marginRight: STATIC_TOKENS.spacing.md,
74
+ },
75
+ });
76
+ export default NotificationsScreen;
77
+ //# sourceMappingURL=NotificationsScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationsScreen.js","sourceRoot":"","sources":["../../../src/presentation/screens/NotificationsScreen.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-notifications",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "Offline-first local notifications system for React Native apps using expo-notifications",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -31,23 +31,28 @@
31
31
  "url": "https://github.com/umituz/react-native-notifications"
32
32
  },
33
33
  "peerDependencies": {
34
- "@react-native-async-storage/async-storage": "^1.21.0",
35
- "expo-notifications": "~0.28.0",
34
+ "@react-native-async-storage/async-storage": "^2.2.0",
35
+ "@umituz/react-native-design-system": "*",
36
+ "@umituz/react-native-design-system-theme": "*",
36
37
  "expo-device": "~6.0.2",
38
+ "expo-notifications": "~0.28.0",
37
39
  "react": ">=18.2.0",
38
40
  "react-native": ">=0.74.0",
39
41
  "zustand": "^5.0.2"
40
42
  },
41
43
  "devDependencies": {
42
- "@react-native-async-storage/async-storage": "^1.24.0",
44
+ "@react-native-async-storage/async-storage": "^1.21.0",
43
45
  "@types/react": "^18.2.45",
44
46
  "@types/react-native": "^0.73.0",
45
- "expo-notifications": "~0.28.0",
47
+ "@umituz/react-native-design-system": "^1.5.28",
48
+ "@umituz/react-native-design-system-theme": "latest",
49
+ "@umituz/react-native-design-system-atoms": "*",
46
50
  "expo-device": "~6.0.2",
51
+ "expo-notifications": "~0.28.0",
47
52
  "react": "^18.2.0",
48
53
  "react-native": "^0.74.0",
49
54
  "typescript": "^5.3.3",
50
- "zustand": "^5.0.2"
55
+ "zustand": "^5.0.8"
51
56
  },
52
57
  "publishConfig": {
53
58
  "access": "public"
@@ -57,6 +62,12 @@
57
62
  "src",
58
63
  "README.md",
59
64
  "LICENSE"
60
- ]
65
+ ],
66
+ "dependencies": {
67
+ "@react-native-community/datetimepicker": "^8.5.0",
68
+ "@react-navigation/native": "^7.1.19",
69
+ "@umituz/react-native-design-system-atoms": "*",
70
+ "expo-linear-gradient": "^15.0.7",
71
+ "react-native-safe-area-context": "^5.6.2"
72
+ }
61
73
  }
62
-
@@ -92,12 +92,13 @@ export class NotificationManager {
92
92
  return false;
93
93
  }
94
94
 
95
- const { status: existingStatus } = await Notifications.getPermissionsAsync();
95
+ const permissionsResponse = await Notifications.getPermissionsAsync();
96
+ const existingStatus = (permissionsResponse as any).status || ((permissionsResponse as any).granted ? 'granted' : 'denied');
96
97
  let finalStatus = existingStatus;
97
98
 
98
99
  if (existingStatus !== 'granted') {
99
- const { status } = await Notifications.requestPermissionsAsync();
100
- finalStatus = status;
100
+ const requestResponse = await Notifications.requestPermissionsAsync();
101
+ finalStatus = (requestResponse as any).status || ((requestResponse as any).granted ? 'granted' : 'denied');
101
102
  }
102
103
 
103
104
  if (Platform.OS === 'android') {
@@ -117,8 +118,8 @@ export class NotificationManager {
117
118
  async hasPermissions(): Promise<boolean> {
118
119
  try {
119
120
  if (!Device.isDevice) return false;
120
- const { status } = await Notifications.getPermissionsAsync();
121
- return status === 'granted';
121
+ const permissionsResponse = await Notifications.getPermissionsAsync();
122
+ return (permissionsResponse as any).status === 'granted' || (permissionsResponse as any).granted === true;
122
123
  } catch (error) {
123
124
  console.error('[NotificationManager] Permission check failed:', error);
124
125
  return false;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Notifications Screen - {{APP_NAME}}
3
+ *
4
+ * Simple notification toggle - enable or disable reminders
5
+ * Theme: {{THEME_ID}} ({{CATEGORY}} category)
6
+ */
7
+
8
+ import React, { useMemo } from 'react';
9
+ import { View, StyleSheet, ActivityIndicator } from 'react-native';
10
+ import { AtomicIcon, AtomicSwitch, AtomicCard, AtomicText, ScreenLayout, STATIC_TOKENS } from '@umituz/react-native-design-system';
11
+
12
+ import { useAppDesignTokens } from '@umituz/react-native-design-system-theme';
13
+ import { useNotificationSettings } from '../../infrastructure/hooks/useNotificationSettings';
14
+ import type { DesignTokens } from '@umituz/react-native-design-system';
15
+
16
+ // Note: Translation function should be provided by the app using this package
17
+ // This is a placeholder - apps should wrap this component with their i18n provider
18
+ const t = (key: string): string => {
19
+ // Return key as fallback - apps should provide translation function
20
+ return key;
21
+ };
22
+
23
+ export const NotificationsScreen: React.FC = () => {
24
+
25
+ const tokens = useAppDesignTokens();
26
+ const styles = useMemo(() => getStyles(tokens), [tokens]);
27
+ const { notificationsEnabled, setNotificationsEnabled, isLoading } = useNotificationSettings();
28
+
29
+ if (isLoading) {
30
+ return (
31
+ <ScreenLayout testID="notifications-screen">
32
+ <View style={styles.loadingContainer}>
33
+ <ActivityIndicator size="large" color={tokens.colors.primary} />
34
+ </View>
35
+ </ScreenLayout>
36
+ );
37
+ }
38
+
39
+ return (
40
+ <ScreenLayout testID="notifications-screen" hideScrollIndicator>
41
+ <AtomicCard style={styles.card}>
42
+ <View style={styles.settingItem}>
43
+ <View style={styles.iconContainer}>
44
+ <AtomicIcon name="Bell" size="lg" color="primary" />
45
+ </View>
46
+ <View style={styles.textContainer}>
47
+ <AtomicText type="bodyLarge" style={{ color: tokens.colors.textPrimary }}>
48
+ {t('settings.notifications.enableNotifications')}
49
+ </AtomicText>
50
+ <AtomicText type="bodySmall" style={{ color: tokens.colors.textSecondary, marginTop: STATIC_TOKENS.spacing.xs }}>
51
+ {t('settings.notifications.description')}
52
+ </AtomicText>
53
+ </View>
54
+ <AtomicSwitch
55
+ value={notificationsEnabled}
56
+ onValueChange={setNotificationsEnabled}
57
+ testID="notifications-toggle"
58
+ />
59
+ </View>
60
+ </AtomicCard>
61
+ </ScreenLayout>
62
+ );
63
+ };
64
+
65
+ const getStyles = (tokens: DesignTokens) => StyleSheet.create({
66
+ loadingContainer: {
67
+ flex: 1,
68
+ justifyContent: 'center',
69
+ alignItems: 'center',
70
+ },
71
+ card: {
72
+ padding: STATIC_TOKENS.spacing.lg,
73
+ backgroundColor: tokens.colors.surface,
74
+ },
75
+ settingItem: {
76
+ flexDirection: 'row',
77
+ alignItems: 'center',
78
+ },
79
+ iconContainer: {
80
+ width: 48,
81
+ height: 48,
82
+ borderRadius: 24,
83
+ backgroundColor: tokens.colors.surfaceSecondary,
84
+ justifyContent: 'center',
85
+ alignItems: 'center',
86
+ marginRight: STATIC_TOKENS.spacing.md,
87
+ },
88
+ textContainer: {
89
+ flex: 1,
90
+ marginRight: STATIC_TOKENS.spacing.md,
91
+ },
92
+ });
93
+
94
+ export default NotificationsScreen;