-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.tsx
More file actions
127 lines (113 loc) · 4.02 KB
/
Copy pathApp.tsx
File metadata and controls
127 lines (113 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import { NavigationContainer } from '@react-navigation/native';
import 'react-native-gesture-handler';
// @ts-ignore
import { APP_ID_COSMO_CHAT, REGION_COSMO_CHAT } from '@env';
import { PaperProvider } from 'react-native-paper';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { CometChat } from '@cometchat/chat-sdk-react-native';
import { Provider } from 'react-redux';
import { store } from './src/redux/store';
import { Poppins_400Regular, Poppins_600SemiBold, useFonts } from '@expo-google-fonts/poppins';
import { LogBox, Platform } from 'react-native';
import { useEffect, useRef, useState } from 'react';
import * as Notifications from 'expo-notifications';
import * as Device from 'expo-device';
import Constants from 'expo-constants';
import RegisterNavigation from './src/router/registerNavigation';
import { StatusBar } from 'expo-status-bar';
// Ignore log notification by message
LogBox.ignoreLogs(['Warning: ...']);
//Ignore all log notifications
LogBox.ignoreAllLogs();
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true,
shouldPlaySound: false,
shouldSetBadge: false
})
});
async function registerForPushNotificationsAsync() {
let token;
if (Platform.OS === 'android') {
Notifications.setNotificationChannelAsync('default', {
name: 'default',
importance: Notifications.AndroidImportance.MAX,
vibrationPattern: [0, 250, 250, 250],
lightColor: '#FF231F7C'
});
}
if (Device.isDevice) {
const { status: existingStatus } = await Notifications.getPermissionsAsync();
let finalStatus = existingStatus;
if (existingStatus !== 'granted') {
const { status } = await Notifications.requestPermissionsAsync();
finalStatus = status;
}
if (finalStatus !== 'granted') {
// alert('Failed to get push token for push notification!');
return;
}
token = await Notifications.getExpoPushTokenAsync({
projectId: Constants.expoConfig!.extra!.eas.projectId
});
console.log(token);
} else {
alert('Must use physical device for Push Notifications');
}
return token!.data;
}
export default function App() {
const [expoPushToken, setExpoPushToken] = useState('');
const [notification, setNotification] = useState<Notifications.Notification>();
const notificationListener = useRef<Notifications.Subscription>();
const responseListener = useRef<Notifications.Subscription>();
useEffect(() => {
registerForPushNotificationsAsync().then((token) => setExpoPushToken(token!));
notificationListener.current = Notifications.addNotificationReceivedListener((notification) => {
setNotification(notification);
});
responseListener.current = Notifications.addNotificationResponseReceivedListener((response) => {
console.log(response);
});
return () => {
Notifications.removeNotificationSubscription(notificationListener.current!);
Notifications.removeNotificationSubscription(responseListener.current!);
};
}, []);
const [fontsLoaded, fontError] = useFonts({
Poppins_400Regular,
Poppins_600SemiBold
});
const appID: string = APP_ID_COSMO_CHAT;
const region: string = REGION_COSMO_CHAT;
const appSetting: CometChat.AppSettings = new CometChat.AppSettingsBuilder()
.subscribePresenceForAllUsers()
.setRegion(region)
.autoEstablishSocketConnection(true)
.build();
CometChat.init(appID, appSetting).then(
(initialized: boolean) => {
console.log('Initialization completed successfully', initialized);
},
(error: CometChat.CometChatException) => {
console.log('Initialization failed with error:', error);
}
);
if (!fontsLoaded && !fontError) {
return null;
}
return (
<Provider store={store}>
<PaperProvider>
<SafeAreaProvider>
<NavigationContainer>
<>
<StatusBar style="auto" />
<RegisterNavigation />
</>
</NavigationContainer>
</SafeAreaProvider>
</PaperProvider>
</Provider>
);
}