- xcode.build.ios
- service/api.ts

### No issue
This commit is contained in:
2025-08-19 17:42:05 +08:00
parent c474ecc809
commit b823dc703f
4 changed files with 53 additions and 12 deletions

View File

@@ -8,9 +8,9 @@ export default function RootLayout() {
return ( return (
<> <>
<SafeAreaProvider> <SafeAreaProvider>
<AuthProvider>
<AppRoot /> <AppRoot />
{/* <AuthProvider> </AuthProvider>
</AuthProvider> */}
</SafeAreaProvider> </SafeAreaProvider>
<Toast /> <Toast />
</> </>

View File

@@ -2,7 +2,8 @@ import ButtonCustom from "@/components/Button/ButtonCustom";
import Spacing from "@/components/_ShareComponent/Spacing"; import Spacing from "@/components/_ShareComponent/Spacing";
import ViewWrapper from "@/components/_ShareComponent/ViewWrapper"; import ViewWrapper from "@/components/_ShareComponent/ViewWrapper";
import { MainColor } from "@/constants/color-palet"; import { MainColor } from "@/constants/color-palet";
import { apiLogin, apiVersion } from "@/service/api"; import { useAuth } from "@/hook/use-auth";
import { apiVersion } from "@/service/api";
import { GStyles } from "@/styles/global-styles"; import { GStyles } from "@/styles/global-styles";
import { router } from "expo-router"; import { router } from "expo-router";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
@@ -16,12 +17,15 @@ export default function LoginView() {
const [inputValue, setInputValue] = useState<string>(""); const [inputValue, setInputValue] = useState<string>("");
const [loading, setLoading] = useState<boolean>(false); const [loading, setLoading] = useState<boolean>(false);
const { loginWithNomor } = useAuth();
useEffect(() => { useEffect(() => {
onLoadVersion(); onLoadVersion();
}, []); }, []);
async function onLoadVersion() { async function onLoadVersion() {
const res = await apiVersion(); const res = await apiVersion();
console.log("Version", res.data);
setVersion(res.data); setVersion(res.data);
} }
@@ -66,24 +70,26 @@ export default function LoginView() {
const fixNumber = inputValue.replace(/\s+/g, ""); const fixNumber = inputValue.replace(/\s+/g, "");
const realNumber = callingCode + fixNumber; const realNumber = callingCode + fixNumber;
try {
setLoading(true); setLoading(true);
const response = await apiLogin({ nomor: realNumber }); // const response = await apiLogin({ nomor: realNumber });
await loginWithNomor(realNumber);
if (response.success) {
Toast.show({ Toast.show({
type: "success", type: "success",
text1: "Sukses", text1: "Sukses",
text2: "Kode OTP berhasil dikirim", text2: "Kode OTP berhasil dikirim",
}); });
router.navigate(`/verification?kodeId=${response.kodeId}`);
setLoading(false); router.navigate(`/verification?nomor=${realNumber}`);
// router.replace("/(application)/coba"); } catch (error) {
} else { console.log("Error login", error);
Toast.show({ Toast.show({
type: "error", type: "error",
text1: "Error", text1: "Error",
text2: response.message, text2: error as string,
}); });
} finally {
setLoading(false); setLoading(false);
} }
} }

View File

@@ -1,3 +1,4 @@
import AsyncStorage from "@react-native-async-storage/async-storage";
import axios, { AxiosInstance } from "axios"; import axios, { AxiosInstance } from "axios";
import Constants from "expo-constants"; import Constants from "expo-constants";
const API_BASE_URL = Constants.expoConfig?.extra?.API_BASE_URL; const API_BASE_URL = Constants.expoConfig?.extra?.API_BASE_URL;
@@ -12,9 +13,18 @@ export const apiClient: AxiosInstance = axios.create({
}, },
}); });
// Endpoint yang TIDAK butuh token
const PUBLIC_ROUTES = [
// "/version",
"/auth/send-otp",
"/auth/verify-otp",
"/auth/register",
"/auth/logout", // opsional, tergantung kebutuhan
];
// apiClient.interceptors.request.use( // apiClient.interceptors.request.use(
// (config) => { // (config) => {
// const token = localStorage.getItem("token"); // const token = AsyncStorage.getItem("authToken");
// if (token) { // if (token) {
// config.headers.Authorization = `Bearer ${token}`; // config.headers.Authorization = `Bearer ${token}`;
// } // }
@@ -25,6 +35,30 @@ export const apiClient: AxiosInstance = axios.create({
// } // }
// ); // );
apiClient.interceptors.request.use(
(config) => {
const token = AsyncStorage.getItem("authToken");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
// const isPublic = PUBLIC_ROUTES.some((route) => config.url?.includes(route));
// if (!isPublic) {
// const token = AsyncStorage.getItem("authToken");
// if (token) {
// config.headers.Authorization = `Bearer ${token}`;
// } else {
// console.warn(`Token tidak ditemukan untuk endpoint: ${config.url}`);
// }
// }
return config;
},
(error) => {
return Promise.reject(error);
}
);
export async function apiVersion() { export async function apiVersion() {
console.log("API_BASE_URL", API_BASE_URL); console.log("API_BASE_URL", API_BASE_URL);
const response = await apiClient.get("/version"); const response = await apiClient.get("/version");

1
xcode.build.ios Normal file
View File

@@ -0,0 +1 @@
npx expo run:ios --device