firebase implementation pull code

This commit is contained in:
Jaanu423
2025-10-06 12:57:00 +05:30
13 changed files with 1230 additions and 20 deletions
+2 -1
View File
@@ -1,6 +1,6 @@
export const BASE_URL = "https://api.godemo.in/FundCollect/api/"
// export const BASE_URL = "https://api.godemo.in/FundCollect/api/"
export const BASE_URL = "http://192.168.1.9:9060/api/"
export const LOGIN_URL = `${BASE_URL}user/generate/otp?mobiles=`
export const VARIFY_OTP_URL = `${BASE_URL}user/otp/verify`
export const ORGRAGISTRATION = `${BASE_URL}organizer/registration/apply`
@@ -22,4 +22,5 @@ export const UPDATE_BANK_URL = `${BASE_URL}user/bank/update`;
export const CONTRIBUTE = `${BASE_URL}payments/groups/`;
export const TRANSACTION = `${BASE_URL}payments/my-transactions`;
export const UPLOAD_GROUP_IMAGE = `${BASE_URL}fund/groups/`;
export const STORE_FCM_TOKEN = `${BASE_URL}token/store?fcmToken=`
+101
View File
@@ -0,0 +1,101 @@
import messaging from '@react-native-firebase/messaging';
import notifee, { AndroidImportance } from '@notifee/react-native';
import axios from 'axios';
import { apiCall } from '../ApiHelper';
// replace with your backend
class FirebaseService {
// 🔹 Request notification permission
static async requestPermission() {
await messaging().requestPermission();
await notifee.requestPermission();
}
// 🔹 Display local notification
static async displayNotification(title: string, body: string) {
await notifee.displayNotification({
title,
body,
android: {
channelId: 'default',
smallIcon: 'ic_launcher', // ensure you have this icon in android/app/src/main/res/mipmap
importance: AndroidImportance.HIGH,
pressAction: {
id: 'default',
},
},
});
}
// 🔹 Get & send token to backend
static async getFcmToken(userId: string) {
try {
const token = await messaging().getToken();
console.log('FCM Token:', token);
await apiCall(`https://api.godemo.in/FundCollect/api/token/store?fcmToken=${token}&userId=${userId}`, 'POST');
console.log('FCM Token sent to backend');
return token;
} catch (error) {
console.error('Error getting FCM token:', error);
return null;
}
}
// 🔹 Delete token from backend
static async deleteFcmToken() {
try {
const token = await messaging().getToken();
await apiCall(`https://api.godemo.in/FundCollect/api/token/remove?fcmToken=${token}`, 'DELETE');
console.log('FCM Token deleted from backend');
} catch (error) {
console.error('Error deleting FCM token:', error);
}
}
// 🔹 Foreground notifications
static foregroundListener() {
return messaging().onMessage(async remoteMessage => {
console.log('Foreground message:', remoteMessage);
if (remoteMessage.notification) {
await this.displayNotification(
remoteMessage.notification.title ?? 'New Message',
remoteMessage.notification.body ?? ''
);
}
});
}
// 🔹 Background & Quit state
static backgroundHandler() {
messaging().setBackgroundMessageHandler(async remoteMessage => {
console.log('Background message:', remoteMessage);
if (remoteMessage.notification) {
await this.displayNotification(
remoteMessage.notification.title ?? 'New Message',
remoteMessage.notification.body ?? ''
);
}
});
messaging().onNotificationOpenedApp(remoteMessage => {
console.log('App opened from background:', remoteMessage);
});
messaging().getInitialNotification().then(remoteMessage => {
if (remoteMessage) {
console.log('App opened from quit state:', remoteMessage);
}
});
}
// 🔹 Token auto-refresh
static tokenRefreshHandler() {
return messaging().onTokenRefresh(async token => {
console.log('New refreshed FCM Token:', token);
// 👉 send to backend
});
}
}
export default FirebaseService;