@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.
- package/LICENSE +55 -0
- package/README.md +67 -0
- package/docs/IOS_NOTIFICATION_EXTENSION_SETUP.md +335 -0
- package/ios/README.md +64 -0
- package/ios/SwanNotificationServiceExtension/Info.plist +31 -0
- package/ios/SwanNotificationServiceExtension/NotificationService.swift +337 -0
- package/ios/SwanNotificationServiceExtension/SwanNotificationServiceExtension.entitlements +10 -0
- package/lib/commonjs/components/FooterView.js +125 -0
- package/lib/commonjs/components/FooterView.js.map +1 -0
- package/lib/commonjs/components/FullScreenView.js +172 -0
- package/lib/commonjs/components/FullScreenView.js.map +1 -0
- package/lib/commonjs/components/HeaderView.js +205 -0
- package/lib/commonjs/components/HeaderView.js.map +1 -0
- package/lib/commonjs/components/PopUpView.js +186 -0
- package/lib/commonjs/components/PopUpView.js.map +1 -0
- package/lib/commonjs/config/BatchConfig.js +53 -0
- package/lib/commonjs/config/BatchConfig.js.map +1 -0
- package/lib/commonjs/constants/ApiUrls.js +56 -0
- package/lib/commonjs/constants/ApiUrls.js.map +1 -0
- package/lib/commonjs/core/EventQueueManager.js +345 -0
- package/lib/commonjs/core/EventQueueManager.js.map +1 -0
- package/lib/commonjs/core/FlushManager.js +245 -0
- package/lib/commonjs/core/FlushManager.js.map +1 -0
- package/lib/commonjs/core/NetworkMonitor.js +97 -0
- package/lib/commonjs/core/NetworkMonitor.js.map +1 -0
- package/lib/commonjs/index.js +3506 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/providers/FirebasePushProvider.js +130 -0
- package/lib/commonjs/providers/FirebasePushProvider.js.map +1 -0
- package/lib/commonjs/providers/NullPushProvider.js +59 -0
- package/lib/commonjs/providers/NullPushProvider.js.map +1 -0
- package/lib/commonjs/providers/PushNotificationProvider.js +30 -0
- package/lib/commonjs/providers/PushNotificationProvider.js.map +1 -0
- package/lib/commonjs/services/DeviceRegistrationService.js +248 -0
- package/lib/commonjs/services/DeviceRegistrationService.js.map +1 -0
- package/lib/commonjs/services/PushTokenService.js +284 -0
- package/lib/commonjs/services/PushTokenService.js.map +1 -0
- package/lib/commonjs/state/AuthStateMachine.js +161 -0
- package/lib/commonjs/state/AuthStateMachine.js.map +1 -0
- package/lib/commonjs/state/DeviceStateMachine.js +104 -0
- package/lib/commonjs/state/DeviceStateMachine.js.map +1 -0
- package/lib/commonjs/state/PushStateMachine.js +129 -0
- package/lib/commonjs/state/PushStateMachine.js.map +1 -0
- package/lib/commonjs/types/EventQueue.js +50 -0
- package/lib/commonjs/types/EventQueue.js.map +1 -0
- package/lib/commonjs/types/SDK.js +2 -0
- package/lib/commonjs/types/SDK.js.map +1 -0
- package/lib/commonjs/utils/FirebaseNotificationManager.js +492 -0
- package/lib/commonjs/utils/FirebaseNotificationManager.js.map +1 -0
- package/lib/commonjs/utils/Logger.js +56 -0
- package/lib/commonjs/utils/Logger.js.map +1 -0
- package/lib/commonjs/utils/SharedCredentialsManager.js +146 -0
- package/lib/commonjs/utils/SharedCredentialsManager.js.map +1 -0
- package/lib/commonjs/version.js +12 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/components/FooterView.js +121 -0
- package/lib/module/components/FooterView.js.map +1 -0
- package/lib/module/components/FullScreenView.js +167 -0
- package/lib/module/components/FullScreenView.js.map +1 -0
- package/lib/module/components/HeaderView.js +199 -0
- package/lib/module/components/HeaderView.js.map +1 -0
- package/lib/module/components/PopUpView.js +181 -0
- package/lib/module/components/PopUpView.js.map +1 -0
- package/lib/module/config/BatchConfig.js +49 -0
- package/lib/module/config/BatchConfig.js.map +1 -0
- package/lib/module/constants/ApiUrls.js +52 -0
- package/lib/module/constants/ApiUrls.js.map +1 -0
- package/lib/module/core/EventQueueManager.js +340 -0
- package/lib/module/core/EventQueueManager.js.map +1 -0
- package/lib/module/core/FlushManager.js +240 -0
- package/lib/module/core/FlushManager.js.map +1 -0
- package/lib/module/core/NetworkMonitor.js +92 -0
- package/lib/module/core/NetworkMonitor.js.map +1 -0
- package/lib/module/index.js +3494 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/providers/FirebasePushProvider.js +124 -0
- package/lib/module/providers/FirebasePushProvider.js.map +1 -0
- package/lib/module/providers/NullPushProvider.js +53 -0
- package/lib/module/providers/NullPushProvider.js.map +1 -0
- package/lib/module/providers/PushNotificationProvider.js +26 -0
- package/lib/module/providers/PushNotificationProvider.js.map +1 -0
- package/lib/module/services/DeviceRegistrationService.js +243 -0
- package/lib/module/services/DeviceRegistrationService.js.map +1 -0
- package/lib/module/services/PushTokenService.js +278 -0
- package/lib/module/services/PushTokenService.js.map +1 -0
- package/lib/module/state/AuthStateMachine.js +155 -0
- package/lib/module/state/AuthStateMachine.js.map +1 -0
- package/lib/module/state/DeviceStateMachine.js +98 -0
- package/lib/module/state/DeviceStateMachine.js.map +1 -0
- package/lib/module/state/PushStateMachine.js +123 -0
- package/lib/module/state/PushStateMachine.js.map +1 -0
- package/lib/module/types/EventQueue.js +46 -0
- package/lib/module/types/EventQueue.js.map +1 -0
- package/lib/module/types/SDK.js +2 -0
- package/lib/module/types/SDK.js.map +1 -0
- package/lib/module/utils/FirebaseNotificationManager.js +486 -0
- package/lib/module/utils/FirebaseNotificationManager.js.map +1 -0
- package/lib/module/utils/Logger.js +52 -0
- package/lib/module/utils/Logger.js.map +1 -0
- package/lib/module/utils/SharedCredentialsManager.js +140 -0
- package/lib/module/utils/SharedCredentialsManager.js.map +1 -0
- package/lib/module/version.js +8 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/components/FooterView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/FooterView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/FullScreenView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/FullScreenView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/HeaderView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/HeaderView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/PopUpView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/PopUpView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/config/BatchConfig.d.ts +7 -0
- package/lib/typescript/commonjs/src/config/BatchConfig.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts +56 -0
- package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts +63 -0
- package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/FlushManager.d.ts +63 -0
- package/lib/typescript/commonjs/src/core/FlushManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts +38 -0
- package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +663 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts +28 -0
- package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts +25 -0
- package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts +105 -0
- package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts +60 -0
- package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/services/PushTokenService.d.ts +82 -0
- package/lib/typescript/commonjs/src/services/PushTokenService.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts +61 -0
- package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts +51 -0
- package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts +61 -0
- package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/EventQueue.d.ts +85 -0
- package/lib/typescript/commonjs/src/types/EventQueue.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/SDK.d.ts +54 -0
- package/lib/typescript/commonjs/src/types/SDK.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts +169 -0
- package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/Logger.d.ts +32 -0
- package/lib/typescript/commonjs/src/utils/Logger.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts +54 -0
- package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/version.d.ts +2 -0
- package/lib/typescript/commonjs/src/version.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/components/FooterView.d.ts +3 -0
- package/lib/typescript/module/src/components/FooterView.d.ts.map +1 -0
- package/lib/typescript/module/src/components/FullScreenView.d.ts +3 -0
- package/lib/typescript/module/src/components/FullScreenView.d.ts.map +1 -0
- package/lib/typescript/module/src/components/HeaderView.d.ts +3 -0
- package/lib/typescript/module/src/components/HeaderView.d.ts.map +1 -0
- package/lib/typescript/module/src/components/PopUpView.d.ts +3 -0
- package/lib/typescript/module/src/components/PopUpView.d.ts.map +1 -0
- package/lib/typescript/module/src/config/BatchConfig.d.ts +7 -0
- package/lib/typescript/module/src/config/BatchConfig.d.ts.map +1 -0
- package/lib/typescript/module/src/constants/ApiUrls.d.ts +56 -0
- package/lib/typescript/module/src/constants/ApiUrls.d.ts.map +1 -0
- package/lib/typescript/module/src/core/EventQueueManager.d.ts +63 -0
- package/lib/typescript/module/src/core/EventQueueManager.d.ts.map +1 -0
- package/lib/typescript/module/src/core/FlushManager.d.ts +63 -0
- package/lib/typescript/module/src/core/FlushManager.d.ts.map +1 -0
- package/lib/typescript/module/src/core/NetworkMonitor.d.ts +38 -0
- package/lib/typescript/module/src/core/NetworkMonitor.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +663 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts +28 -0
- package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/providers/NullPushProvider.d.ts +25 -0
- package/lib/typescript/module/src/providers/NullPushProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts +105 -0
- package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts +60 -0
- package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts.map +1 -0
- package/lib/typescript/module/src/services/PushTokenService.d.ts +82 -0
- package/lib/typescript/module/src/services/PushTokenService.d.ts.map +1 -0
- package/lib/typescript/module/src/state/AuthStateMachine.d.ts +61 -0
- package/lib/typescript/module/src/state/AuthStateMachine.d.ts.map +1 -0
- package/lib/typescript/module/src/state/DeviceStateMachine.d.ts +51 -0
- package/lib/typescript/module/src/state/DeviceStateMachine.d.ts.map +1 -0
- package/lib/typescript/module/src/state/PushStateMachine.d.ts +61 -0
- package/lib/typescript/module/src/state/PushStateMachine.d.ts.map +1 -0
- package/lib/typescript/module/src/types/EventQueue.d.ts +85 -0
- package/lib/typescript/module/src/types/EventQueue.d.ts.map +1 -0
- package/lib/typescript/module/src/types/SDK.d.ts +54 -0
- package/lib/typescript/module/src/types/SDK.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts +169 -0
- package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/Logger.d.ts +32 -0
- package/lib/typescript/module/src/utils/Logger.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts +54 -0
- package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts.map +1 -0
- package/lib/typescript/module/src/version.d.ts +2 -0
- package/lib/typescript/module/src/version.d.ts.map +1 -0
- package/package.json +230 -0
- package/scripts/generate-version.js +25 -0
- 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":[]}
|