upd: notifikasi
Deskripsi: - notifikasi saat allowed device - ios dan android No Issues
This commit is contained in:
@@ -46,7 +46,7 @@ export default function ListSetting() {
|
|||||||
try {
|
try {
|
||||||
const token = await getToken();
|
const token = await getToken();
|
||||||
if (token) {
|
if (token) {
|
||||||
await apiUnregisteredToken({ user: entities.id, token });
|
await apiUnregisteredToken({ user: entities.id, token, category: "unregister" });
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('Error unregistering token:', error);
|
console.warn('Error unregistering token:', error);
|
||||||
|
|||||||
@@ -745,7 +745,7 @@ export const apiRegisteredToken = async (data: { user: string, token: string, ca
|
|||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const apiUnregisteredToken = async (data: { user: string, token: string }) => {
|
export const apiUnregisteredToken = async (data: { user: string, token: string, category?: string }) => {
|
||||||
const response = await api.put(`/mobile/auth-token`, data)
|
const response = await api.put(`/mobile/auth-token`, data)
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -66,11 +66,39 @@ export const openSettings = () => {
|
|||||||
|
|
||||||
export const requestPermission = async () => {
|
export const requestPermission = async () => {
|
||||||
try {
|
try {
|
||||||
const { status: newStatus } = await Notifications.requestPermissionsAsync();
|
const { status: currentStatus } = await Notifications.getPermissionsAsync();
|
||||||
await AsyncStorage.setItem('@notification_permission', newStatus === 'granted' ? "true" : "false");
|
|
||||||
return newStatus === 'granted';
|
// Jika belum pernah ditentukan (undetermined), baru panggil request
|
||||||
|
if (currentStatus === 'undetermined') {
|
||||||
|
const { status: newStatus } = await Notifications.requestPermissionsAsync();
|
||||||
|
await AsyncStorage.setItem('@notification_permission', newStatus === 'granted' ? 'true' : 'false');
|
||||||
|
return newStatus === 'granted';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Jika sudah pernah ditentukan (granted/denied), update storage sesuai OS
|
||||||
|
// Tapi jika granted, kita cek storage dlu sapa tau user pernah matiin manual di app
|
||||||
|
const osPermission = await checkPermission();
|
||||||
|
const existing = await AsyncStorage.getItem('@notification_permission');
|
||||||
|
|
||||||
|
if (osPermission === false) {
|
||||||
|
await AsyncStorage.setItem('@notification_permission', 'false');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (osPermission === true) {
|
||||||
|
// Jika OS ijinkan, tapi di storage belum ada, set true
|
||||||
|
if (existing === null) {
|
||||||
|
await AsyncStorage.setItem('@notification_permission', 'true');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Jika OS ijinkan dan di storage ada, ikuti storage (toggle manual user)
|
||||||
|
return existing === 'true';
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn('Error requesting notification permissions:', err);
|
console.warn('Error requesting notification permissions:', err);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user