diff --git a/bun.lock b/bun.lock index 2bfe326..c15cfc7 100644 --- a/bun.lock +++ b/bun.lock @@ -19,9 +19,9 @@ "expo": "^54.0.0", "expo-camera": "~17.0.7", "expo-clipboard": "~8.0.7", - "expo-constants": "~18.0.10", + "expo-constants": "^18.0.10", "expo-dev-client": "~6.0.12", - "expo-device": "~8.0.9", + "expo-device": "^8.0.9", "expo-document-picker": "~14.0.7", "expo-file-system": "^19.0.15", "expo-font": "~14.0.8", @@ -29,7 +29,7 @@ "expo-image": "~3.0.8", "expo-image-picker": "~17.0.8", "expo-linking": "~8.0.8", - "expo-notifications": "~0.32.13", + "expo-notifications": "^0.32.13", "expo-router": "~6.0.1", "expo-splash-screen": "~31.0.9", "expo-status-bar": "~3.0.8", diff --git a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj index b574e81..88b92e1 100644 --- a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj +++ b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj @@ -294,8 +294,11 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-HIPMIBadungConnect/Pods-HIPMIBadungConnect-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/EXApplication/ExpoApplication_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXNotifications/ExpoNotifications_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoDevice/ExpoDevice_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/ExpoSystemUI/ExpoSystemUI_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage/RNCAsyncStorage_resources.bundle", @@ -328,8 +331,11 @@ ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoApplication_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoNotifications_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoDevice_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoSystemUI_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNCAsyncStorage_resources.bundle", diff --git a/ios/HIPMIBadungConnect/PrivacyInfo.xcprivacy b/ios/HIPMIBadungConnect/PrivacyInfo.xcprivacy index 5bb83c5..c6b452e 100644 --- a/ios/HIPMIBadungConnect/PrivacyInfo.xcprivacy +++ b/ios/HIPMIBadungConnect/PrivacyInfo.xcprivacy @@ -4,6 +4,16 @@ NSPrivacyAccessedAPITypes + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 0A2A.1 + 3B52.1 + + NSPrivacyAccessedAPIType NSPrivacyAccessedAPICategoryUserDefaults @@ -14,12 +24,10 @@ NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPICategorySystemBootTime NSPrivacyAccessedAPITypeReasons - 0A2A.1 - 3B52.1 - C617.1 + 35F9.1 @@ -31,14 +39,6 @@ 85F4.1 - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategorySystemBootTime - NSPrivacyAccessedAPITypeReasons - - 35F9.1 - - NSPrivacyCollectedDataTypes diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 516649c..be278fd 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,5 +1,7 @@ PODS: - - EXConstants (18.0.8): + - EXApplication (7.0.7): + - ExpoModulesCore + - EXConstants (18.0.10): - ExpoModulesCore - EXImageLoader (6.0.0): - ExpoModulesCore @@ -7,6 +9,8 @@ PODS: - EXJSONUtils (0.15.0) - EXManifests (1.0.8): - ExpoModulesCore + - EXNotifications (0.32.13): + - ExpoModulesCore - Expo (54.0.2): - ExpoModulesCore - hermes-engine @@ -211,6 +215,8 @@ PODS: - ZXingObjC/PDF417 - ExpoClipboard (8.0.7): - ExpoModulesCore + - ExpoDevice (8.0.9): + - ExpoModulesCore - ExpoDocumentPicker (14.0.7): - ExpoModulesCore - ExpoFileSystem (19.0.15): @@ -264,7 +270,7 @@ PODS: - ExpoModulesCore - ExpoSystemUI (6.0.7): - ExpoModulesCore - - ExpoWebBrowser (15.0.7): + - ExpoWebBrowser (15.0.9): - ExpoModulesCore - EXUpdatesInterface (2.0.0): - ExpoModulesCore @@ -2422,10 +2428,12 @@ PODS: - ZXingObjC/Core DEPENDENCIES: + - EXApplication (from `../node_modules/expo-application/ios`) - EXConstants (from `../node_modules/expo-constants/ios`) - EXImageLoader (from `../node_modules/expo-image-loader/ios`) - EXJSONUtils (from `../node_modules/expo-json-utils/ios`) - EXManifests (from `../node_modules/expo-manifests/ios`) + - EXNotifications (from `../node_modules/expo-notifications/ios`) - Expo (from `../node_modules/expo`) - expo-dev-client (from `../node_modules/expo-dev-client/ios`) - expo-dev-launcher (from `../node_modules/expo-dev-launcher`) @@ -2434,6 +2442,7 @@ DEPENDENCIES: - ExpoAsset (from `../node_modules/expo-asset/ios`) - ExpoCamera (from `../node_modules/expo-camera/ios`) - ExpoClipboard (from `../node_modules/expo-clipboard/ios`) + - ExpoDevice (from `../node_modules/expo-device/ios`) - ExpoDocumentPicker (from `../node_modules/expo-document-picker/ios`) - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) - ExpoFont (from `../node_modules/expo-font/ios`) @@ -2543,6 +2552,8 @@ SPEC REPOS: - ZXingObjC EXTERNAL SOURCES: + EXApplication: + :path: "../node_modules/expo-application/ios" EXConstants: :path: "../node_modules/expo-constants/ios" EXImageLoader: @@ -2551,6 +2562,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-json-utils/ios" EXManifests: :path: "../node_modules/expo-manifests/ios" + EXNotifications: + :path: "../node_modules/expo-notifications/ios" Expo: :path: "../node_modules/expo" expo-dev-client: @@ -2567,6 +2580,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-camera/ios" ExpoClipboard: :path: "../node_modules/expo-clipboard/ios" + ExpoDevice: + :path: "../node_modules/expo-device/ios" ExpoDocumentPicker: :path: "../node_modules/expo-document-picker/ios" ExpoFileSystem: @@ -2760,10 +2775,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - EXConstants: 7e4654405af367ff908c863fe77a8a22d60bd37d + EXApplication: 296622817d459f46b6c5fe8691f4aac44d2b79e7 + EXConstants: fd688cef4e401dcf798a021cfb5d87c890c30ba3 EXImageLoader: 189e3476581efe3ad4d1d3fb4735b7179eb26f05 EXJSONUtils: 1d3e4590438c3ee593684186007028a14b3686cd EXManifests: 224345a575fca389073c416297b6348163f28d1a + EXNotifications: a62e1f8e3edd258dc3b155d3caa49f32920f1c6c Expo: 9e6ddfbc1f5aefde22029899293c701f1d34c2b1 expo-dev-client: f3434d6ca09ecb14ae48c2a3912bdbb07464cc85 expo-dev-launcher: b9538b1e0dc3fd2ddad75017b6ee9c8dfb206925 @@ -2772,6 +2789,7 @@ SPEC CHECKSUMS: ExpoAsset: 84810d6fed8179f04d4a7a4a6b37028bbd726e26 ExpoCamera: ae1d6691b05b753261a845536d2b19a9788a8750 ExpoClipboard: af650d14765f19c60ce2a1eaf9dfe6445eff7365 + ExpoDevice: 148accb4071873d19fba80a2506c58ffa433d620 ExpoDocumentPicker: 2200eefc2817f19315fa18f0147e0b80ece86926 ExpoFileSystem: 5fb091ea11198e109ceef2bdef2e6e66523e62c4 ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 @@ -2785,7 +2803,7 @@ SPEC CHECKSUMS: ExpoSplashScreen: 0634b705953e6934a5156397162eefc1ee5d6a7c ExpoSymbols: 1ae04ce686de719b9720453b988d8bc5bf776c68 ExpoSystemUI: 6cd74248a2282adf6dec488a75fa532d69dee314 - ExpoWebBrowser: 533bc2a1b188eec1c10e4926decf658f1687b5e5 + ExpoWebBrowser: b973e1351fdcf5fec0c400997b1851f5a8219ec3 EXUpdatesInterface: 5adf50cb41e079c861da6d9b4b954c3db9a50734 FBLazyVector: 9e0cd874afd81d9a4d36679daca991b58b260d42 hermes-engine: 35c763d57c9832d0eef764316ca1c4d043581394 diff --git a/package.json b/package.json index 5162d79..d75d616 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "expo": "^54.0.0", "expo-camera": "~17.0.7", "expo-clipboard": "~8.0.7", - "expo-constants": "~18.0.10", + "expo-constants": "^18.0.10", "expo-dev-client": "~6.0.12", - "expo-device": "~8.0.9", + "expo-device": "^8.0.9", "expo-document-picker": "~14.0.7", "expo-file-system": "^19.0.15", "expo-font": "~14.0.8", @@ -36,7 +36,7 @@ "expo-image": "~3.0.8", "expo-image-picker": "~17.0.8", "expo-linking": "~8.0.8", - "expo-notifications": "~0.32.13", + "expo-notifications": "^0.32.13", "expo-router": "~6.0.1", "expo-splash-screen": "~31.0.9", "expo-status-bar": "~3.0.8", diff --git a/screens/Authentication/VerificationView.tsx b/screens/Authentication/VerificationView.tsx index 6b4e9af..0be0100 100644 --- a/screens/Authentication/VerificationView.tsx +++ b/screens/Authentication/VerificationView.tsx @@ -5,6 +5,7 @@ import { MainColor } from "@/constants/color-palet"; import { useAuth } from "@/hooks/use-auth"; import { apiCheckCodeOtp } from "@/service/api-config"; import { GStyles } from "@/styles/global-styles"; +import { registerForPushNotificationsAsync } from "@/utils/notifications"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { router, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; @@ -28,7 +29,7 @@ export default function VerificationView() { nomor === "6282340374412"; // --- Context --- - const { validateOtp, isLoading } = useAuth(); + const { validateOtp, isLoading, loginWithNomor } = useAuth(); useEffect(() => { setUserNumber(nomor?.replace(/^\+/, "") || ""); @@ -70,6 +71,9 @@ export default function VerificationView() { try { setLoading(true); + await loginWithNomor(nomor as string); + setRecodeOtp(true); + // ❌ Kamu tidak punya nomor di sini, jadi pastikan `nomor` tersedia // Sebaiknya simpan nomor saat login, atau gunakan dari `useLocalSearchParams` router.setParams({ nomor }); // opsional @@ -100,6 +104,14 @@ export default function VerificationView() { // 🔁 VERIFIKASI NORMAL (untuk pengguna sungguhan) try { const response = await validateOtp(nomor as string); + // registerForPushNotificationsAsync().then((token) => { + // if (token) { + // console.log("Expo Push Token:", token); + // // TODO: Kirim token ke backend kamu + // } else { + // console.log("Failed to get Expo Push Token"); + // } + // }); router.replace(response); } catch (error) { console.log("Error verification", error); diff --git a/utils/notifications.ts b/utils/notifications.ts index 31879e1..ccafecf 100644 --- a/utils/notifications.ts +++ b/utils/notifications.ts @@ -4,17 +4,27 @@ import Constants from 'expo-constants'; import * as Device from 'expo-device'; +// Notifications.setNotificationHandler({ +// handleNotification: async () => ({ +// shouldShowAlert: true, +// shouldPlaySound: true, +// shouldSetBadge: false, +// shouldShowBanner: true, +// shouldShowList: true, +// }), +// }); + Notifications.setNotificationHandler({ handleNotification: async () => ({ - shouldShowAlert: true, - shouldPlaySound: true, + shouldPlaySound: false, shouldSetBadge: false, shouldShowBanner: true, shouldShowList: true, }), }); -export default async function registerForPushNotificationsAsync() { + +export async function registerForPushNotificationsAsync() { if (!Device.isDevice) { console.warn("Push notifications don't work on simulator"); return null;