@loyalytics/swan-react-native-sdk 2.0.1

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.
Files changed (204) hide show
  1. package/LICENSE +55 -0
  2. package/README.md +67 -0
  3. package/docs/IOS_NOTIFICATION_EXTENSION_SETUP.md +335 -0
  4. package/ios/README.md +64 -0
  5. package/ios/SwanNotificationServiceExtension/Info.plist +31 -0
  6. package/ios/SwanNotificationServiceExtension/NotificationService.swift +337 -0
  7. package/ios/SwanNotificationServiceExtension/SwanNotificationServiceExtension.entitlements +10 -0
  8. package/lib/commonjs/components/FooterView.js +125 -0
  9. package/lib/commonjs/components/FooterView.js.map +1 -0
  10. package/lib/commonjs/components/FullScreenView.js +172 -0
  11. package/lib/commonjs/components/FullScreenView.js.map +1 -0
  12. package/lib/commonjs/components/HeaderView.js +205 -0
  13. package/lib/commonjs/components/HeaderView.js.map +1 -0
  14. package/lib/commonjs/components/PopUpView.js +186 -0
  15. package/lib/commonjs/components/PopUpView.js.map +1 -0
  16. package/lib/commonjs/config/BatchConfig.js +53 -0
  17. package/lib/commonjs/config/BatchConfig.js.map +1 -0
  18. package/lib/commonjs/constants/ApiUrls.js +56 -0
  19. package/lib/commonjs/constants/ApiUrls.js.map +1 -0
  20. package/lib/commonjs/core/EventQueueManager.js +345 -0
  21. package/lib/commonjs/core/EventQueueManager.js.map +1 -0
  22. package/lib/commonjs/core/FlushManager.js +245 -0
  23. package/lib/commonjs/core/FlushManager.js.map +1 -0
  24. package/lib/commonjs/core/NetworkMonitor.js +97 -0
  25. package/lib/commonjs/core/NetworkMonitor.js.map +1 -0
  26. package/lib/commonjs/index.js +3506 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/commonjs/providers/FirebasePushProvider.js +130 -0
  29. package/lib/commonjs/providers/FirebasePushProvider.js.map +1 -0
  30. package/lib/commonjs/providers/NullPushProvider.js +59 -0
  31. package/lib/commonjs/providers/NullPushProvider.js.map +1 -0
  32. package/lib/commonjs/providers/PushNotificationProvider.js +30 -0
  33. package/lib/commonjs/providers/PushNotificationProvider.js.map +1 -0
  34. package/lib/commonjs/services/DeviceRegistrationService.js +248 -0
  35. package/lib/commonjs/services/DeviceRegistrationService.js.map +1 -0
  36. package/lib/commonjs/services/PushTokenService.js +284 -0
  37. package/lib/commonjs/services/PushTokenService.js.map +1 -0
  38. package/lib/commonjs/state/AuthStateMachine.js +161 -0
  39. package/lib/commonjs/state/AuthStateMachine.js.map +1 -0
  40. package/lib/commonjs/state/DeviceStateMachine.js +104 -0
  41. package/lib/commonjs/state/DeviceStateMachine.js.map +1 -0
  42. package/lib/commonjs/state/PushStateMachine.js +129 -0
  43. package/lib/commonjs/state/PushStateMachine.js.map +1 -0
  44. package/lib/commonjs/types/EventQueue.js +50 -0
  45. package/lib/commonjs/types/EventQueue.js.map +1 -0
  46. package/lib/commonjs/types/SDK.js +2 -0
  47. package/lib/commonjs/types/SDK.js.map +1 -0
  48. package/lib/commonjs/utils/FirebaseNotificationManager.js +492 -0
  49. package/lib/commonjs/utils/FirebaseNotificationManager.js.map +1 -0
  50. package/lib/commonjs/utils/Logger.js +56 -0
  51. package/lib/commonjs/utils/Logger.js.map +1 -0
  52. package/lib/commonjs/utils/SharedCredentialsManager.js +146 -0
  53. package/lib/commonjs/utils/SharedCredentialsManager.js.map +1 -0
  54. package/lib/commonjs/version.js +12 -0
  55. package/lib/commonjs/version.js.map +1 -0
  56. package/lib/module/components/FooterView.js +121 -0
  57. package/lib/module/components/FooterView.js.map +1 -0
  58. package/lib/module/components/FullScreenView.js +167 -0
  59. package/lib/module/components/FullScreenView.js.map +1 -0
  60. package/lib/module/components/HeaderView.js +199 -0
  61. package/lib/module/components/HeaderView.js.map +1 -0
  62. package/lib/module/components/PopUpView.js +181 -0
  63. package/lib/module/components/PopUpView.js.map +1 -0
  64. package/lib/module/config/BatchConfig.js +49 -0
  65. package/lib/module/config/BatchConfig.js.map +1 -0
  66. package/lib/module/constants/ApiUrls.js +52 -0
  67. package/lib/module/constants/ApiUrls.js.map +1 -0
  68. package/lib/module/core/EventQueueManager.js +340 -0
  69. package/lib/module/core/EventQueueManager.js.map +1 -0
  70. package/lib/module/core/FlushManager.js +240 -0
  71. package/lib/module/core/FlushManager.js.map +1 -0
  72. package/lib/module/core/NetworkMonitor.js +92 -0
  73. package/lib/module/core/NetworkMonitor.js.map +1 -0
  74. package/lib/module/index.js +3494 -0
  75. package/lib/module/index.js.map +1 -0
  76. package/lib/module/providers/FirebasePushProvider.js +124 -0
  77. package/lib/module/providers/FirebasePushProvider.js.map +1 -0
  78. package/lib/module/providers/NullPushProvider.js +53 -0
  79. package/lib/module/providers/NullPushProvider.js.map +1 -0
  80. package/lib/module/providers/PushNotificationProvider.js +26 -0
  81. package/lib/module/providers/PushNotificationProvider.js.map +1 -0
  82. package/lib/module/services/DeviceRegistrationService.js +243 -0
  83. package/lib/module/services/DeviceRegistrationService.js.map +1 -0
  84. package/lib/module/services/PushTokenService.js +278 -0
  85. package/lib/module/services/PushTokenService.js.map +1 -0
  86. package/lib/module/state/AuthStateMachine.js +155 -0
  87. package/lib/module/state/AuthStateMachine.js.map +1 -0
  88. package/lib/module/state/DeviceStateMachine.js +98 -0
  89. package/lib/module/state/DeviceStateMachine.js.map +1 -0
  90. package/lib/module/state/PushStateMachine.js +123 -0
  91. package/lib/module/state/PushStateMachine.js.map +1 -0
  92. package/lib/module/types/EventQueue.js +46 -0
  93. package/lib/module/types/EventQueue.js.map +1 -0
  94. package/lib/module/types/SDK.js +2 -0
  95. package/lib/module/types/SDK.js.map +1 -0
  96. package/lib/module/utils/FirebaseNotificationManager.js +486 -0
  97. package/lib/module/utils/FirebaseNotificationManager.js.map +1 -0
  98. package/lib/module/utils/Logger.js +52 -0
  99. package/lib/module/utils/Logger.js.map +1 -0
  100. package/lib/module/utils/SharedCredentialsManager.js +140 -0
  101. package/lib/module/utils/SharedCredentialsManager.js.map +1 -0
  102. package/lib/module/version.js +8 -0
  103. package/lib/module/version.js.map +1 -0
  104. package/lib/typescript/commonjs/package.json +1 -0
  105. package/lib/typescript/commonjs/src/components/FooterView.d.ts +3 -0
  106. package/lib/typescript/commonjs/src/components/FooterView.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/src/components/FullScreenView.d.ts +3 -0
  108. package/lib/typescript/commonjs/src/components/FullScreenView.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/src/components/HeaderView.d.ts +3 -0
  110. package/lib/typescript/commonjs/src/components/HeaderView.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/src/components/PopUpView.d.ts +3 -0
  112. package/lib/typescript/commonjs/src/components/PopUpView.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/src/config/BatchConfig.d.ts +7 -0
  114. package/lib/typescript/commonjs/src/config/BatchConfig.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts +56 -0
  116. package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts +63 -0
  118. package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/src/core/FlushManager.d.ts +63 -0
  120. package/lib/typescript/commonjs/src/core/FlushManager.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts +38 -0
  122. package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/src/index.d.ts +663 -0
  124. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts +28 -0
  126. package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts +25 -0
  128. package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts +105 -0
  130. package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts +60 -0
  132. package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/src/services/PushTokenService.d.ts +82 -0
  134. package/lib/typescript/commonjs/src/services/PushTokenService.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts +61 -0
  136. package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts +51 -0
  138. package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts +61 -0
  140. package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/src/types/EventQueue.d.ts +85 -0
  142. package/lib/typescript/commonjs/src/types/EventQueue.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/src/types/SDK.d.ts +54 -0
  144. package/lib/typescript/commonjs/src/types/SDK.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts +169 -0
  146. package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/src/utils/Logger.d.ts +32 -0
  148. package/lib/typescript/commonjs/src/utils/Logger.d.ts.map +1 -0
  149. package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts +54 -0
  150. package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts.map +1 -0
  151. package/lib/typescript/commonjs/src/version.d.ts +2 -0
  152. package/lib/typescript/commonjs/src/version.d.ts.map +1 -0
  153. package/lib/typescript/module/package.json +1 -0
  154. package/lib/typescript/module/src/components/FooterView.d.ts +3 -0
  155. package/lib/typescript/module/src/components/FooterView.d.ts.map +1 -0
  156. package/lib/typescript/module/src/components/FullScreenView.d.ts +3 -0
  157. package/lib/typescript/module/src/components/FullScreenView.d.ts.map +1 -0
  158. package/lib/typescript/module/src/components/HeaderView.d.ts +3 -0
  159. package/lib/typescript/module/src/components/HeaderView.d.ts.map +1 -0
  160. package/lib/typescript/module/src/components/PopUpView.d.ts +3 -0
  161. package/lib/typescript/module/src/components/PopUpView.d.ts.map +1 -0
  162. package/lib/typescript/module/src/config/BatchConfig.d.ts +7 -0
  163. package/lib/typescript/module/src/config/BatchConfig.d.ts.map +1 -0
  164. package/lib/typescript/module/src/constants/ApiUrls.d.ts +56 -0
  165. package/lib/typescript/module/src/constants/ApiUrls.d.ts.map +1 -0
  166. package/lib/typescript/module/src/core/EventQueueManager.d.ts +63 -0
  167. package/lib/typescript/module/src/core/EventQueueManager.d.ts.map +1 -0
  168. package/lib/typescript/module/src/core/FlushManager.d.ts +63 -0
  169. package/lib/typescript/module/src/core/FlushManager.d.ts.map +1 -0
  170. package/lib/typescript/module/src/core/NetworkMonitor.d.ts +38 -0
  171. package/lib/typescript/module/src/core/NetworkMonitor.d.ts.map +1 -0
  172. package/lib/typescript/module/src/index.d.ts +663 -0
  173. package/lib/typescript/module/src/index.d.ts.map +1 -0
  174. package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts +28 -0
  175. package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts.map +1 -0
  176. package/lib/typescript/module/src/providers/NullPushProvider.d.ts +25 -0
  177. package/lib/typescript/module/src/providers/NullPushProvider.d.ts.map +1 -0
  178. package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts +105 -0
  179. package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts.map +1 -0
  180. package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts +60 -0
  181. package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts.map +1 -0
  182. package/lib/typescript/module/src/services/PushTokenService.d.ts +82 -0
  183. package/lib/typescript/module/src/services/PushTokenService.d.ts.map +1 -0
  184. package/lib/typescript/module/src/state/AuthStateMachine.d.ts +61 -0
  185. package/lib/typescript/module/src/state/AuthStateMachine.d.ts.map +1 -0
  186. package/lib/typescript/module/src/state/DeviceStateMachine.d.ts +51 -0
  187. package/lib/typescript/module/src/state/DeviceStateMachine.d.ts.map +1 -0
  188. package/lib/typescript/module/src/state/PushStateMachine.d.ts +61 -0
  189. package/lib/typescript/module/src/state/PushStateMachine.d.ts.map +1 -0
  190. package/lib/typescript/module/src/types/EventQueue.d.ts +85 -0
  191. package/lib/typescript/module/src/types/EventQueue.d.ts.map +1 -0
  192. package/lib/typescript/module/src/types/SDK.d.ts +54 -0
  193. package/lib/typescript/module/src/types/SDK.d.ts.map +1 -0
  194. package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts +169 -0
  195. package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
  196. package/lib/typescript/module/src/utils/Logger.d.ts +32 -0
  197. package/lib/typescript/module/src/utils/Logger.d.ts.map +1 -0
  198. package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts +54 -0
  199. package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts.map +1 -0
  200. package/lib/typescript/module/src/version.d.ts +2 -0
  201. package/lib/typescript/module/src/version.d.ts.map +1 -0
  202. package/package.json +230 -0
  203. package/scripts/generate-version.js +25 -0
  204. package/scripts/setup-ios-extension.js +275 -0
@@ -0,0 +1,492 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.SWAN_NOTIFICATION_EVENTS = void 0;
7
+ var _Logger = _interopRequireDefault(require("./Logger.js"));
8
+ var _reactNative = require("react-native");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /**
11
+ * FirebaseNotificationManager
12
+ * Handles all Firebase Cloud Messaging operations for Swan SDK
13
+ *
14
+ * Features:
15
+ * - Automatic FCM token generation and refresh
16
+ * - Notification handling (foreground, background, quit state)
17
+ * - Event system for notification lifecycle
18
+ * - Permission management
19
+ * - Notification Channel Management (Android)
20
+ */
21
+
22
+ // Define types for Firebase Messaging to avoid direct dependency
23
+
24
+ const SWAN_NOTIFICATION_EVENTS = exports.SWAN_NOTIFICATION_EVENTS = {
25
+ PUSH_NOTIFICATION_RECEIVED: 'swnPushNotificationReceived',
26
+ NOTIFICATION_OPENED: 'swanTapPushNotifiactioncallback',
27
+ TOKEN_RECEIVED: 'swnTokenReceived',
28
+ TOKEN_REFRESH: 'swnTokenRefresh',
29
+ PERMISSION_CHANGED: 'swnPermissionChanged'
30
+ };
31
+ class FirebaseNotificationManager {
32
+ // Firebase Messaging instance
33
+ messaging = null;
34
+
35
+ // Internal reference to notifee for channel management
36
+ notifee = null;
37
+
38
+ // Current FCM token
39
+ fcmToken = null;
40
+
41
+ // Event listeners
42
+ eventListeners = {
43
+ [SWAN_NOTIFICATION_EVENTS.TOKEN_RECEIVED]: [],
44
+ [SWAN_NOTIFICATION_EVENTS.TOKEN_REFRESH]: [],
45
+ [SWAN_NOTIFICATION_EVENTS.PUSH_NOTIFICATION_RECEIVED]: [],
46
+ [SWAN_NOTIFICATION_EVENTS.NOTIFICATION_OPENED]: [],
47
+ [SWAN_NOTIFICATION_EVENTS.PERMISSION_CHANGED]: []
48
+ };
49
+
50
+ // Notification handlers
51
+ unsubscribeTokenRefresh = null;
52
+ unsubscribeOnMessage = null;
53
+ unsubscribeOnNotificationOpenedApp = null;
54
+ backgroundMessageHandler = null;
55
+
56
+ // Singleton instance
57
+ static instance = null;
58
+ constructor() {
59
+ if (FirebaseNotificationManager.instance) {
60
+ return FirebaseNotificationManager.instance;
61
+ }
62
+ FirebaseNotificationManager.instance = this;
63
+ }
64
+
65
+ /**
66
+ * Get singleton instance
67
+ */
68
+ static getInstance() {
69
+ if (!FirebaseNotificationManager.instance) {
70
+ FirebaseNotificationManager.instance = new FirebaseNotificationManager();
71
+ }
72
+ return FirebaseNotificationManager.instance;
73
+ }
74
+
75
+ /**
76
+ * Initialize Firebase Messaging and Notifee (if available)
77
+ * This should be called when SDK is initialized
78
+ */
79
+ async initialize() {
80
+ try {
81
+ // Dynamically import Firebase Messaging
82
+ const messaging = await this.getMessagingModule();
83
+ if (!messaging) {
84
+ _Logger.default.warn('Firebase Messaging not available. Please install @react-native-firebase/messaging');
85
+ return false;
86
+ }
87
+ this.messaging = messaging;
88
+
89
+ // Try to load Notifee for channel management
90
+ await this.loadNotifee();
91
+
92
+ // Setup notification handlers
93
+ await this.setupNotificationHandlers();
94
+
95
+ // Request permission and get token
96
+ await this.requestPermissionAndGetToken();
97
+ _Logger.default.log('Firebase Notification Manager initialized successfully');
98
+ return true;
99
+ } catch (error) {
100
+ _Logger.default.error('Error initializing Firebase Notification Manager:', error);
101
+ return false;
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Dynamically import Firebase Messaging module
107
+ */
108
+ async getMessagingModule() {
109
+ try {
110
+ const firebaseMessaging = require('@react-native-firebase/messaging');
111
+ return firebaseMessaging.default;
112
+ } catch (error) {
113
+ _Logger.default.warn('Firebase Messaging module not found:', error.message);
114
+ return null;
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Dynamically load Notifee
120
+ */
121
+ async loadNotifee() {
122
+ try {
123
+ this.notifee = require('@notifee/react-native').default;
124
+ } catch (error) {
125
+ _Logger.default.log('Notifee not found. Notification channels will not be available.');
126
+ }
127
+ }
128
+
129
+ /**
130
+ * Setup all notification handlers
131
+ */
132
+ async setupNotificationHandlers() {
133
+ if (!this.messaging) {
134
+ _Logger.default.warn('Messaging instance not available, cannot setup notification handlers');
135
+ return;
136
+ }
137
+ try {
138
+ _Logger.default.log('Setting up Firebase notification handlers...');
139
+
140
+ // Handle token refresh
141
+ this.unsubscribeTokenRefresh = this.messaging().onTokenRefresh(async token => {
142
+ _Logger.default.log('FCM Token refreshed:', token);
143
+ this.fcmToken = token;
144
+ this.emitEvent(SWAN_NOTIFICATION_EVENTS.TOKEN_REFRESH, token);
145
+ });
146
+ _Logger.default.log('✓ Token refresh handler registered');
147
+
148
+ // NOTE: Foreground notification handler (onMessage) is registered at module level
149
+ // in index.js using createForegroundMessageHandler(). This is required by Firebase.
150
+ _Logger.default.log('✓ Foreground notification handler (handled via index.js)');
151
+
152
+ // NOTE: Background notification handler (setBackgroundMessageHandler) is registered at module level
153
+ // in index.js using createBackgroundMessageHandler(). This is required by Firebase.
154
+ _Logger.default.log('✓ Background notification handler (handled via index.js)');
155
+
156
+ // NOTE: With data-only FCM messages, Firebase's onNotificationOpenedApp and getInitialNotification
157
+ // are NOT triggered because Firebase only auto-displays messages with "notification" payload.
158
+ // All click tracking is handled via Notifee event handlers (createNotifeeForegroundHandler/createNotifeeBackgroundHandler).
159
+
160
+ // Auto-create predefined notification channels for Android
161
+ if (_reactNative.Platform.OS === 'android') {
162
+ _Logger.default.log('[SwanSDK] Creating predefined notification channels...');
163
+
164
+ // Create all predefined channels
165
+ const channels = [{
166
+ id: 'swan_transactional',
167
+ name: 'Transactional',
168
+ importance: 4,
169
+ // HIGH
170
+ description: 'Important updates like orders, OTPs, and urgent notifications'
171
+ }, {
172
+ id: 'swan_alerts',
173
+ name: 'Alerts',
174
+ importance: 4,
175
+ // HIGH
176
+ description: 'Critical alerts and time-sensitive information'
177
+ }, {
178
+ id: 'swan_promotional',
179
+ name: 'Promotional',
180
+ importance: 3,
181
+ // DEFAULT
182
+ description: 'Marketing messages, offers, and deals'
183
+ }, {
184
+ id: 'swan_general',
185
+ name: 'General',
186
+ importance: 3,
187
+ // DEFAULT
188
+ description: 'General updates and informational messages'
189
+ }, {
190
+ id: 'swan_notifications',
191
+ name: 'Swan Notifications',
192
+ importance: 4,
193
+ // HIGH - Default/backward compatibility
194
+ description: 'Notifications from Swan SDK'
195
+ }];
196
+ for (const channel of channels) {
197
+ await this.createNotificationChannel(channel.id, channel.name, channel.importance, channel.description);
198
+ _Logger.default.log(`[SwanSDK] ✓ Created channel: ${channel.name} (${channel.id})`);
199
+ }
200
+ _Logger.default.log('[SwanSDK] ✓ All notification channels created');
201
+ }
202
+ } catch (error) {
203
+ _Logger.default.error('Error setting up notification handlers:', error);
204
+ }
205
+ }
206
+
207
+ /**
208
+ * Request notification permission and get FCM token
209
+ */
210
+ async requestPermissionAndGetToken() {
211
+ if (!this.messaging) return null;
212
+ try {
213
+ // Check if permission is already granted
214
+ const authStatus = await this.messaging().hasPermission();
215
+ const enabled = authStatus === this.messaging.AuthorizationStatus.AUTHORIZED || authStatus === this.messaging.AuthorizationStatus.PROVISIONAL;
216
+ if (!enabled) {
217
+ // Request permission
218
+ const newAuthStatus = await this.messaging().requestPermission();
219
+ const newEnabled = newAuthStatus === this.messaging.AuthorizationStatus.AUTHORIZED || newAuthStatus === this.messaging.AuthorizationStatus.PROVISIONAL;
220
+ this.emitEvent(SWAN_NOTIFICATION_EVENTS.PERMISSION_CHANGED, {
221
+ granted: newEnabled,
222
+ status: newAuthStatus
223
+ });
224
+ if (!newEnabled) {
225
+ _Logger.default.log('Notification permission not granted');
226
+ return null;
227
+ }
228
+ }
229
+
230
+ // Get existing token or generate new one if none exists
231
+ // DO NOT use refreshToken() here - it deletes the old token which causes
232
+ // "NotRegistered" errors if push is sent before new token syncs to backend
233
+ _Logger.default.log('[SwanSDK] Getting FCM token...');
234
+ const token = await this.messaging().getToken();
235
+ this.fcmToken = token;
236
+ if (!token) {
237
+ _Logger.default.error('[SwanSDK] Failed to get FCM token');
238
+ return null;
239
+ }
240
+ _Logger.default.log('[SwanSDK] ✅ FCM token obtained:', token);
241
+ return token;
242
+ } catch (error) {
243
+ _Logger.default.error('Error requesting permission and getting token:', error);
244
+ return null;
245
+ }
246
+ }
247
+
248
+ /**
249
+ * Get current FCM token
250
+ * @returns {Promise<string|null>} FCM token or null
251
+ */
252
+ async getToken() {
253
+ if (this.fcmToken) {
254
+ return this.fcmToken;
255
+ }
256
+ if (!this.messaging) {
257
+ _Logger.default.warn('Firebase Messaging not initialized');
258
+ return null;
259
+ }
260
+ try {
261
+ // iOS: Register device for remote notifications before getting token
262
+ if (_reactNative.Platform.OS === 'ios') {
263
+ const isRegistered = this.messaging().isDeviceRegisteredForRemoteMessages;
264
+ if (!isRegistered) {
265
+ try {
266
+ _Logger.default.log('[FirebaseNotificationManager] Registering iOS device for remote notifications...');
267
+ await this.messaging().registerDeviceForRemoteMessages();
268
+ _Logger.default.log('[FirebaseNotificationManager] ✅ iOS device registered for remote notifications');
269
+ } catch (error) {
270
+ _Logger.default.warn('[FirebaseNotificationManager] iOS registerDeviceForRemoteMessages error:', error);
271
+ // Continue anyway - might already be registered
272
+ }
273
+ } else {
274
+ _Logger.default.log('[FirebaseNotificationManager] iOS device already registered for remote notifications');
275
+ }
276
+ }
277
+ const token = await this.messaging().getToken();
278
+ this.fcmToken = token;
279
+ return token;
280
+ } catch (error) {
281
+ _Logger.default.error('Error getting FCM token:', error);
282
+ return null;
283
+ }
284
+ }
285
+
286
+ /**
287
+ * Delete FCM token
288
+ */
289
+ async deleteToken() {
290
+ if (!this.messaging) return false;
291
+ try {
292
+ await this.messaging().deleteToken();
293
+ this.fcmToken = null;
294
+ _Logger.default.log('FCM Token deleted');
295
+ return true;
296
+ } catch (error) {
297
+ _Logger.default.error('Error deleting FCM token:', error);
298
+ return false;
299
+ }
300
+ }
301
+
302
+ /**
303
+ * Check if notifications are enabled
304
+ */
305
+ async hasPermission() {
306
+ if (!this.messaging) return false;
307
+ try {
308
+ const authStatus = await this.messaging().hasPermission();
309
+ return authStatus === this.messaging.AuthorizationStatus.AUTHORIZED || authStatus === this.messaging.AuthorizationStatus.PROVISIONAL;
310
+ } catch (error) {
311
+ _Logger.default.error('Error checking permission:', error);
312
+ return false;
313
+ }
314
+ }
315
+
316
+ /**
317
+ * Request notification permission
318
+ */
319
+ async requestPermission() {
320
+ if (!this.messaging) return false;
321
+ try {
322
+ const authStatus = await this.messaging().requestPermission();
323
+ const granted = authStatus === this.messaging.AuthorizationStatus.AUTHORIZED || authStatus === this.messaging.AuthorizationStatus.PROVISIONAL;
324
+ this.emitEvent(SWAN_NOTIFICATION_EVENTS.PERMISSION_CHANGED, {
325
+ granted,
326
+ status: authStatus
327
+ });
328
+ if (granted) {
329
+ // Get token after permission granted
330
+ await this.requestPermissionAndGetToken();
331
+ }
332
+ return granted;
333
+ } catch (error) {
334
+ _Logger.default.error('Error requesting permission:', error);
335
+ return false;
336
+ }
337
+ }
338
+
339
+ /**
340
+ * Create a notification channel
341
+ * @param channelId - Unique channel ID
342
+ * @param channelName - User visible channel name
343
+ * @param importance - Importance level (default: 4 - High)
344
+ * @param description - User visible description
345
+ */
346
+ async createNotificationChannel(channelId, channelName, importance = 4, description) {
347
+ if (_reactNative.Platform.OS !== 'android') return null;
348
+ if (!this.notifee) {
349
+ _Logger.default.warn('Notifee not found. Cannot create notification channel.');
350
+ return null;
351
+ }
352
+ try {
353
+ await this.notifee.createChannel({
354
+ id: channelId,
355
+ name: channelName,
356
+ // Add commonly used settings, could be parameterized if needed
357
+ importance: importance,
358
+ visibility: 1,
359
+ // AndroidVisibility.PUBLIC
360
+ vibration: true,
361
+ description: description
362
+ });
363
+ _Logger.default.log(`Notification channel created: ${channelId}`);
364
+ return channelId;
365
+ } catch (error) {
366
+ _Logger.default.error('Error creating notification channel:', error);
367
+ return null;
368
+ }
369
+ }
370
+
371
+ /**
372
+ * Delete a notification channel
373
+ */
374
+ async deleteNotificationChannel(channelId) {
375
+ if (_reactNative.Platform.OS !== 'android') return false;
376
+ if (!this.notifee) {
377
+ _Logger.default.warn('Notifee not found. Cannot delete notification channel.');
378
+ return false;
379
+ }
380
+ try {
381
+ await this.notifee.deleteChannel(channelId);
382
+ _Logger.default.log(`Notification channel deleted: ${channelId}`);
383
+ return true;
384
+ } catch (error) {
385
+ _Logger.default.error('Error deleting notification channel:', error);
386
+ return false;
387
+ }
388
+ }
389
+
390
+ /**
391
+ * Subscribe to badge count (iOS only)
392
+ */
393
+ async getBadgeCount() {
394
+ if (!this.messaging) return 0;
395
+ try {
396
+ const badge = await this.messaging().getBadge();
397
+ return badge;
398
+ } catch (error) {
399
+ _Logger.default.error('Error getting badge count:', error);
400
+ return 0;
401
+ }
402
+ }
403
+
404
+ /**
405
+ * Set badge count (iOS only)
406
+ */
407
+ async setBadgeCount(count) {
408
+ if (!this.messaging) return false;
409
+ try {
410
+ await this.messaging().setBadge(count);
411
+ return true;
412
+ } catch (error) {
413
+ _Logger.default.error('Error setting badge count:', error);
414
+ return false;
415
+ }
416
+ }
417
+
418
+ /**
419
+ * Register event listener
420
+ * @param {string} eventName - Event name
421
+ * @param {Function} callback - Callback function
422
+ */
423
+ addEventListener(eventName, callback) {
424
+ if (!this.eventListeners[eventName]) {
425
+ // Auto-initialize array if not exists (allows for custom events if needed, though we prefer enum)
426
+ this.eventListeners[eventName] = [];
427
+ }
428
+ this.eventListeners[eventName].push(callback);
429
+ }
430
+
431
+ /**
432
+ * Remove event listener
433
+ * @param {string} eventName - Event name
434
+ * @param {Function} callback - Callback function to remove
435
+ */
436
+ removeEventListener(eventName, callback) {
437
+ if (!this.eventListeners[eventName]) {
438
+ return;
439
+ }
440
+ const index = this.eventListeners[eventName].indexOf(callback);
441
+ if (index > -1) {
442
+ this.eventListeners[eventName].splice(index, 1);
443
+ }
444
+ }
445
+
446
+ /**
447
+ * Emit event to all registered listeners
448
+ * @param {string} eventName - Event name
449
+ * @param {any} data - Event data
450
+ */
451
+ emitEvent(eventName, data) {
452
+ if (!this.eventListeners[eventName]) {
453
+ return;
454
+ }
455
+ this.eventListeners[eventName].forEach(callback => {
456
+ try {
457
+ callback(data);
458
+ } catch (error) {
459
+ _Logger.default.error(`Error in ${eventName} listener:`, error);
460
+ }
461
+ });
462
+ }
463
+
464
+ /**
465
+ * Cleanup all listeners and handlers
466
+ */
467
+ cleanup() {
468
+ // Unsubscribe from all Firebase listeners
469
+ if (this.unsubscribeTokenRefresh) {
470
+ this.unsubscribeTokenRefresh();
471
+ this.unsubscribeTokenRefresh = null;
472
+ }
473
+ if (this.unsubscribeOnMessage) {
474
+ this.unsubscribeOnMessage();
475
+ this.unsubscribeOnMessage = null;
476
+ }
477
+ if (this.unsubscribeOnNotificationOpenedApp) {
478
+ this.unsubscribeOnNotificationOpenedApp();
479
+ this.unsubscribeOnNotificationOpenedApp = null;
480
+ }
481
+
482
+ // Clear all event listeners
483
+ Object.keys(this.eventListeners).forEach(key => {
484
+ this.eventListeners[key] = [];
485
+ });
486
+ this.fcmToken = null;
487
+ this.messaging = null;
488
+ _Logger.default.log('Firebase Notification Manager cleaned up');
489
+ }
490
+ }
491
+ var _default = exports.default = FirebaseNotificationManager;
492
+ //# sourceMappingURL=FirebaseNotificationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Logger","_interopRequireDefault","require","_reactNative","e","__esModule","default","SWAN_NOTIFICATION_EVENTS","exports","PUSH_NOTIFICATION_RECEIVED","NOTIFICATION_OPENED","TOKEN_RECEIVED","TOKEN_REFRESH","PERMISSION_CHANGED","FirebaseNotificationManager","messaging","notifee","fcmToken","eventListeners","unsubscribeTokenRefresh","unsubscribeOnMessage","unsubscribeOnNotificationOpenedApp","backgroundMessageHandler","instance","constructor","getInstance","initialize","getMessagingModule","Logger","warn","loadNotifee","setupNotificationHandlers","requestPermissionAndGetToken","log","error","firebaseMessaging","message","onTokenRefresh","token","emitEvent","Platform","OS","channels","id","name","importance","description","channel","createNotificationChannel","authStatus","hasPermission","enabled","AuthorizationStatus","AUTHORIZED","PROVISIONAL","newAuthStatus","requestPermission","newEnabled","granted","status","getToken","isRegistered","isDeviceRegisteredForRemoteMessages","registerDeviceForRemoteMessages","deleteToken","channelId","channelName","createChannel","visibility","vibration","deleteNotificationChannel","deleteChannel","getBadgeCount","badge","getBadge","setBadgeCount","count","setBadge","addEventListener","eventName","callback","push","removeEventListener","index","indexOf","splice","data","forEach","cleanup","Object","keys","key","_default"],"sourceRoot":"../../../src","sources":["utils/FirebaseNotificationManager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * Logger utility for Swan SDK
9
+ * Allows enabling/disabling internal SDK logs
10
+ */
11
+ class Logger {
12
+ static enabled = false;
13
+
14
+ /**
15
+ * Enable or disable logs
16
+ * @param enabled - boolean to enable/disable logs
17
+ */
18
+ static enableLogs(enabled) {
19
+ Logger.enabled = enabled;
20
+ }
21
+
22
+ /**
23
+ * Log message to console
24
+ * @param message - Message to log
25
+ * @param args - Additional arguments
26
+ */
27
+ static log(message, ...args) {
28
+ if (Logger.enabled) {
29
+ console.log(`[SwanSDK] ${message}`, ...args);
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Log warning to console
35
+ * @param message - Warning message
36
+ * @param args - Additional arguments
37
+ */
38
+ static warn(message, ...args) {
39
+ if (Logger.enabled) {
40
+ console.warn(`[SwanSDK] ${message}`, ...args);
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Log error to console
46
+ * @param message - Error message
47
+ * @param args - Additional arguments
48
+ */
49
+ static error(message, ...args) {
50
+ if (Logger.enabled) {
51
+ console.error(`[SwanSDK] ${message}`, ...args);
52
+ }
53
+ }
54
+ }
55
+ var _default = exports.default = Logger;
56
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Logger","enabled","enableLogs","log","message","args","console","warn","error","_default","exports","default"],"sourceRoot":"../../../src","sources":["utils/Logger.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA,MAAMA,MAAM,CAAC;EACT,OAAeC,OAAO,GAAG,KAAK;;EAE9B;AACJ;AACA;AACA;EACI,OAAOC,UAAUA,CAACD,OAAgB,EAAE;IAChCD,MAAM,CAACC,OAAO,GAAGA,OAAO;EAC5B;;EAEA;AACJ;AACA;AACA;AACA;EACI,OAAOE,GAAGA,CAACC,OAAe,EAAE,GAAGC,IAAW,EAAE;IACxC,IAAIL,MAAM,CAACC,OAAO,EAAE;MAChBK,OAAO,CAACH,GAAG,CAAC,aAAaC,OAAO,EAAE,EAAE,GAAGC,IAAI,CAAC;IAChD;EACJ;;EAEA;AACJ;AACA;AACA;AACA;EACI,OAAOE,IAAIA,CAACH,OAAe,EAAE,GAAGC,IAAW,EAAE;IACzC,IAAIL,MAAM,CAACC,OAAO,EAAE;MAChBK,OAAO,CAACC,IAAI,CAAC,aAAaH,OAAO,EAAE,EAAE,GAAGC,IAAI,CAAC;IACjD;EACJ;;EAEA;AACJ;AACA;AACA;AACA;EACI,OAAOG,KAAKA,CAACJ,OAAe,EAAE,GAAGC,IAAW,EAAE;IAC1C,IAAIL,MAAM,CAACC,OAAO,EAAE;MAChBK,OAAO,CAACE,KAAK,CAAC,aAAaJ,OAAO,EAAE,EAAE,GAAGC,IAAI,CAAC;IAClD;EACJ;AACJ;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcX,MAAM","ignoreList":[]}