Implement one signal and save token of user

This commit is contained in:
Maarten 2024-08-08 15:15:31 +02:00
parent 7d6909f5c2
commit 195b9aaebc
5 changed files with 54 additions and 8 deletions

View file

@ -5,6 +5,7 @@ import CalendarPicker from 'react-native-calendar-picker';
import Ionicons from '@expo/vector-icons/Ionicons';
import { useIsFocused } from '@react-navigation/core';
import { useSelector } from 'react-redux';
import { LogLevel, OneSignal } from 'react-native-onesignal';
import { ThemedText } from '@/lib/components/ThemedText';
import { ThemedView } from '@/lib/components/ThemedView';
@ -13,6 +14,7 @@ import { useColorScheme } from '@/lib/hooks/useColorScheme';
import { useToken } from '@/lib/context/AppProvider';
import { Request } from '@/lib/services/request';
import List from '@/lib/components/List';
import { Message } from '@/lib/services/message';
export default function HomeScreen() {
const colorScheme = useColorScheme() ?? 'light';
@ -23,6 +25,37 @@ export default function HomeScreen() {
const [ name, setName ] = useState( ' ' ); // Default empty space to prevent layout shifting
const [ dates, setDates ] = useState<any | null>( [] );
const [ types, setTypes ] = useState<any | null>( [] );
const [ onesignalLoaded, setOnesignalLoaded ] = useState<any | null>( false );
const loadOneSignal = () => {
// Remove this method to stop OneSignal Debugging
OneSignal.Debug.setLogLevel(LogLevel.Verbose);
// OneSignal Initialization
OneSignal.initialize("6ef15aa7-9dc0-4d8b-b6b1-e2005bcd3dc6");
// Request permission
OneSignal.Notifications.requestPermission(true)
// Retrieve one signal user token
OneSignal.User.pushSubscription.getIdAsync().then((notificationsToken) => {
if (notificationsToken) {
Request.post( 'sessions/update', { token: token, notifications_token: notificationsToken } ).then( (response) => {
if (!response.success) {
Message.error( 'Notificaties zijn uitgeschakeld door een onbekende error' );
}
} );
}
})
// Disable loading again
setOnesignalLoaded(true);
}
// Load OneSignal
useEffect( () => {
loadOneSignal();
}, [onesignalLoaded] );
// Load session
useEffect( () => {

View file

@ -24,8 +24,8 @@ import { setSession, setReloadCalendar } from '@/lib/store/dataStore';
export default function SettingsScreen() {
const colorScheme = useColorScheme() ?? 'light';
const { token, isLoading } = useToken();
const session = useSelector((state: any) => state.data.session);
const { token, isLoading, setToken } = useToken();
const session = useSelector( (state: any) => state.data.session );
const router = useRouter();
// Name
@ -41,7 +41,7 @@ export default function SettingsScreen() {
useEffect( () => {
setSessionData( session );
}, [session] );
}, [ session ] );
// Set session data in view
const setSessionData = (session: any) => {
@ -81,8 +81,8 @@ export default function SettingsScreen() {
setSessionData( response.session );
// Save to store
store.dispatch(setSession(response.session))
store.dispatch(setReloadCalendar(addressChanged))
store.dispatch( setSession( response.session ) )
store.dispatch( setReloadCalendar( addressChanged ) )
Message.success( 'Opgeslagen!' )
} else {
@ -102,9 +102,10 @@ export default function SettingsScreen() {
text: 'Ja',
onPress: () => {
Request.post( 'sessions/delete' ).then( (response) => {
console.log( 'sessions delete', response );
if (!response.success) {
Message.success( 'Je bent uitgelogd' )
Message.success( 'Je bent uitgelogd' );
setToken( null );
router.replace( '/(onboarding)/start' );
} else {