Fix rejected Apple
Add: - utils/viersionBadge.ts Fix: - app.config.js - context/AuthContext.tsx - ios/HIPMIBadungConnect/Info.plist - screens/Authentication/LoginView.tsx - screens/Authentication/VerificationView.tsx - service/api-config.ts ### No Issue
This commit is contained in:
@@ -19,7 +19,7 @@ export default {
|
||||
"NSLocationWhenInUseUsageDescription": "Aplikasi membutuhkan akses lokasi untuk menampilkan peta.",
|
||||
},
|
||||
associatedDomains: ["applinks:cld-dkr-staging-hipmi.wibudev.com"],
|
||||
buildNumber: "10",
|
||||
buildNumber: "12",
|
||||
},
|
||||
|
||||
android: {
|
||||
|
||||
@@ -72,10 +72,13 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
|
||||
const loginWithNomor = async (nomor: string) => {
|
||||
setIsLoading(true);
|
||||
try {
|
||||
console.log("[Masuk provider]", nomor);
|
||||
const response = await apiLogin({ nomor: nomor });
|
||||
console.log("[RESPONSE AUTH]", JSON.stringify(response));
|
||||
|
||||
|
||||
if (response.success) {
|
||||
console.log("[Keluar provider]", nomor);
|
||||
Toast.show({
|
||||
type: "success",
|
||||
text1: "Sukses",
|
||||
@@ -83,10 +86,15 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
|
||||
});
|
||||
|
||||
await AsyncStorage.setItem("kode_otp", response.kodeId);
|
||||
router.replace(`/verification?nomor=${nomor}`);
|
||||
router.push(`/verification?nomor=${nomor}`);
|
||||
return;
|
||||
} else {
|
||||
router.replace(`/register?nomor=${nomor}`);
|
||||
router.push(`/register?nomor=${nomor}`);
|
||||
Toast.show({
|
||||
type: "info",
|
||||
text1: "Info",
|
||||
text2: "Silahkan mendaftar",
|
||||
});
|
||||
return;
|
||||
}
|
||||
} catch (error: any) {
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>10</string>
|
||||
<string>12</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { NewWrapper } from "@/components";
|
||||
import ButtonCustom from "@/components/Button/ButtonCustom";
|
||||
import Spacing from "@/components/_ShareComponent/Spacing";
|
||||
import ViewWrapper from "@/components/_ShareComponent/ViewWrapper";
|
||||
@@ -5,9 +6,11 @@ import { MainColor } from "@/constants/color-palet";
|
||||
import { useAuth } from "@/hooks/use-auth";
|
||||
import { apiVersion } from "@/service/api-config";
|
||||
import { GStyles } from "@/styles/global-styles";
|
||||
import { Redirect, router } from "expo-router";
|
||||
import versionBadge from "@/utils/viersionBadge";
|
||||
import VersionBadge from "@/utils/viersionBadge";
|
||||
import { Redirect } from "expo-router";
|
||||
import { useEffect, useState } from "react";
|
||||
import { Text, View } from "react-native";
|
||||
import { RefreshControl, Text, View } from "react-native";
|
||||
import PhoneInput, { ICountry } from "react-native-international-phone-number";
|
||||
import Toast from "react-native-toast-message";
|
||||
|
||||
@@ -16,6 +19,7 @@ export default function LoginView() {
|
||||
const [selectedCountry, setSelectedCountry] = useState<null | ICountry>(null);
|
||||
const [inputValue, setInputValue] = useState<string>("");
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
const [refreshing, setRefreshing] = useState<boolean>(false);
|
||||
|
||||
const { loginWithNomor, token, isAdmin, isUserActive } = useAuth();
|
||||
|
||||
@@ -25,7 +29,18 @@ export default function LoginView() {
|
||||
|
||||
async function onLoadVersion() {
|
||||
const res = await apiVersion();
|
||||
setVersion(res.data);
|
||||
|
||||
if (res.success) {
|
||||
setVersion(versionBadge());
|
||||
}
|
||||
}
|
||||
|
||||
async function handleRefresh() {
|
||||
setRefreshing(true);
|
||||
await onLoadVersion();
|
||||
setInputValue("");
|
||||
setLoading(false);
|
||||
setRefreshing(false);
|
||||
}
|
||||
|
||||
function handleInputValue(phoneNumber: string) {
|
||||
@@ -65,8 +80,6 @@ export default function LoginView() {
|
||||
const isValid = await validateData();
|
||||
if (!isValid) return;
|
||||
|
||||
// const callingCode = selectedCountry?.callingCode.replace(/^\+/, "") || "";
|
||||
// const fixNumber = inputValue.replace(/\s+/g, "");
|
||||
const callingCode = selectedCountry?.callingCode.replace(/^\+/, "") || "";
|
||||
let fixNumber = inputValue.replace(/\s+/g, "").replace(/^0+/, "");
|
||||
|
||||
@@ -74,9 +87,7 @@ export default function LoginView() {
|
||||
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await loginWithNomor(realNumber);
|
||||
console.log("[RESPONSE UI]", response);
|
||||
|
||||
await loginWithNomor(realNumber);
|
||||
} catch (error) {
|
||||
console.log("Error login", error);
|
||||
Toast.show({
|
||||
@@ -130,7 +141,12 @@ export default function LoginView() {
|
||||
}
|
||||
|
||||
return (
|
||||
<ViewWrapper withBackground>
|
||||
<NewWrapper
|
||||
withBackground
|
||||
refreshControl={
|
||||
<RefreshControl refreshing={refreshing} onRefresh={handleRefresh} />
|
||||
}
|
||||
>
|
||||
<View style={GStyles.authContainer}>
|
||||
<View>
|
||||
<View style={GStyles.authContainerTitle}>
|
||||
@@ -174,6 +190,6 @@ export default function LoginView() {
|
||||
Coba
|
||||
</ButtonCustom> */}
|
||||
</View>
|
||||
</ViewWrapper>
|
||||
</NewWrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ import Toast from "react-native-toast-message";
|
||||
export default function VerificationView() {
|
||||
const { nomor } = useLocalSearchParams<{ nomor: string }>();
|
||||
|
||||
console.log("[NOMOR]", nomor);
|
||||
|
||||
const [inputOtp, setInputOtp] = useState<string>("");
|
||||
const [userNumber, setUserNumber] = useState<string>("");
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
@@ -52,7 +54,7 @@ export default function VerificationView() {
|
||||
try {
|
||||
const response = await apiCheckCodeOtp({ kodeId });
|
||||
console.log(
|
||||
"Response check code otp >>",
|
||||
"[OTP] >>",
|
||||
JSON.stringify(response.otp, null, 2)
|
||||
);
|
||||
// Kita tidak perlu simpan codeOtp di state karena verifikasi dilakukan di backend
|
||||
|
||||
@@ -14,6 +14,7 @@ apiConfig.interceptors.request.use(
|
||||
async (config) => {
|
||||
console.log("API_BASE_URL >>", API_BASE_URL);
|
||||
const token = await AsyncStorage.getItem("authToken");
|
||||
// console.log("[TOKEN] >>", token);
|
||||
if (token) {
|
||||
// config.timeout = 10000;
|
||||
config.headers["Content-Type"] = "application/json";
|
||||
@@ -33,7 +34,7 @@ export async function apiVersion() {
|
||||
}
|
||||
|
||||
export async function apiLogin({ nomor }: { nomor: string }) {
|
||||
const response = await apiConfig.post("/mobile/auth/login", {
|
||||
const response = await apiConfig.post("/auth/mobile-login", {
|
||||
nomor: nomor,
|
||||
});
|
||||
return response.data;;
|
||||
@@ -45,7 +46,7 @@ export async function apiCheckCodeOtp({ kodeId }: { kodeId: string }) {
|
||||
}
|
||||
|
||||
export async function apiValidationCode({ nomor }: { nomor: string }) {
|
||||
const response = await apiConfig.post(`/auth/validasi`, {
|
||||
const response = await apiConfig.post(`/auth/mobile-validasi`, {
|
||||
nomor: nomor,
|
||||
});
|
||||
return response.data;
|
||||
@@ -56,7 +57,7 @@ export async function apiRegister({
|
||||
}: {
|
||||
data: { nomor: string; username: string; termsOfServiceAccepted: boolean };
|
||||
}) {
|
||||
const response = await apiConfig.post(`/mobile/auth/register`, {
|
||||
const response = await apiConfig.post(`/auth/mobile-register`, {
|
||||
data: data,
|
||||
});
|
||||
return response.data;
|
||||
|
||||
18
utils/viersionBadge.ts
Normal file
18
utils/viersionBadge.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
// VersionBadge.tsx
|
||||
import Constants from "expo-constants";
|
||||
import { Platform } from "react-native";
|
||||
|
||||
export default function versionBadge() {
|
||||
const expoConfig = Constants.expoConfig;
|
||||
|
||||
const version = expoConfig?.version; // "1.0.1"
|
||||
const iosBuild = expoConfig?.ios?.buildNumber; // "10"
|
||||
const androidBuild = expoConfig?.android?.versionCode; // 2
|
||||
|
||||
const build =
|
||||
Platform.OS === "ios" ? iosBuild : androidBuild;
|
||||
|
||||
const result = `${version} ( ${build} )`;
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user