Compare commits
2 Commits
amalia/03-
...
amalia/04-
| Author | SHA1 | Date | |
|---|---|---|---|
| 608381673f | |||
| 3cc7f76346 |
@@ -46,7 +46,7 @@ export default function ListSetting() {
|
||||
try {
|
||||
const token = await getToken();
|
||||
if (token) {
|
||||
await apiUnregisteredToken({ user: entities.id, token });
|
||||
await apiUnregisteredToken({ user: entities.id, token, category: "unregister" });
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Error unregistering token:', error);
|
||||
|
||||
@@ -745,7 +745,7 @@ export const apiRegisteredToken = async (data: { user: string, token: string, ca
|
||||
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)
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@@ -66,11 +66,39 @@ export const openSettings = () => {
|
||||
|
||||
export const requestPermission = async () => {
|
||||
try {
|
||||
const { status: newStatus } = await Notifications.requestPermissionsAsync();
|
||||
await AsyncStorage.setItem('@notification_permission', newStatus === 'granted' ? "true" : "false");
|
||||
return newStatus === 'granted';
|
||||
const { status: currentStatus } = await Notifications.getPermissionsAsync();
|
||||
|
||||
// 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) {
|
||||
console.warn('Error requesting notification permissions:', err);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user