Add:
- hooks/
- ios.build.device : untuk mendownload di ios

Fix:
- service/api.t : mengatur api
- context/AuthContext.tsx: Provider untuk access token

### No Issue
This commit is contained in:
2025-08-21 15:22:14 +08:00
parent 7a7bfd3ab9
commit 21c6460220
12 changed files with 380 additions and 142 deletions

View File

@@ -3,6 +3,7 @@ import AlertCustom from "@/components/Alert/AlertCustom";
import LeftButtonCustom from "@/components/Button/BackButton";
import DrawerCustom from "@/components/Drawer/DrawerCustom";
import { MainColor } from "@/constants/color-palet";
import { useAuth } from "@/hooks/use-auth";
import { drawerItemsProfile } from "@/screens/Profile/ListPage";
import Profile_MenuDrawerSection from "@/screens/Profile/menuDrawerSection";
import ProfileSection from "@/screens/Profile/ProfileSection";
@@ -17,6 +18,8 @@ export default function Profile() {
const [isDrawerOpen, setIsDrawerOpen] = useState(false);
const [showLogoutAlert, setShowLogoutAlert] = useState(false);
const { logout } = useAuth();
const openDrawer = () => {
setIsDrawerOpen(true);
};
@@ -65,6 +68,7 @@ export default function Profile() {
drawerItems={drawerItemsProfile({ id: id as string })}
setShowLogoutAlert={setShowLogoutAlert}
setIsDrawerOpen={setIsDrawerOpen}
logout={logout}
/>
</DrawerCustom>

View File

@@ -1,12 +1,87 @@
import { InformationBox, ViewWrapper } from "@/components";
import {
AlertDefaultSystem,
BoxButtonOnFooter,
ButtonCenteredOnly,
ButtonCustom,
InformationBox,
StackCustom,
ViewWrapper,
} from "@/components";
import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
import { useAuth } from "@/hooks/use-auth";
import { Ionicons } from "@expo/vector-icons";
import { router } from "expo-router";
import Toast from "react-native-toast-message";
export default function WaitingRoom() {
const { token, userData, isLoading, logout } = useAuth();
async function handleCheck() {
try {
const response = await userData(token as string);
console.log("response check", JSON.stringify(response, null, 2));
if (response.active) {
Toast.show({
type: "success",
text1: "Akun anda telah aktif", // text2: "Anda berhasil login",
});
router.replace("/(application)/(user)/home");
} else {
Toast.show({
type: "error",
text1: "Akun anda belum aktif",
text2: "Silahkan hubungi admin",
});
}
} catch (error) {
console.log("Error check", error);
}
}
const logoutButton = () => {
return (
<>
<BoxButtonOnFooter>
<ButtonCustom
backgroundColor="red"
textColor="white"
iconLeft={
<Ionicons name="log-out" size={ICON_SIZE_BUTTON} color="white" />
}
onPress={() => {
AlertDefaultSystem({
title: "Keluar",
message: "Apakah anda yakin ingin keluar?",
textLeft: "Batal",
textRight: "Ya",
onPressRight: () => {
logout();
},
})
}}
>
Keluar
</ButtonCustom>
</BoxButtonOnFooter>
</>
);
};
return (
<>
<ViewWrapper>
<InformationBox
text="Permohonan akses Anda sedang dalam proses verifikasi oleh admin. Harap tunggu, Anda akan menerima pemberitahuan melalui Whatsapp setelah disetujui."
/>
<ViewWrapper footerComponent={logoutButton()}>
<StackCustom>
<InformationBox text="Permohonan akses Anda sedang dalam proses verifikasi oleh admin. Harap tunggu, Anda akan menerima pemberitahuan melalui Whatsapp setelah disetujui." />
<ButtonCenteredOnly
isLoading={isLoading}
onPress={() => {
handleCheck();
}}
icon="refresh-ccw"
>
Check
</ButtonCenteredOnly>
</StackCustom>
</ViewWrapper>
</>
);

View File

@@ -9,7 +9,12 @@ import {
import DrawerAdmin from "@/components/Drawer/DrawerAdmin";
import NavbarMenu from "@/components/Drawer/NavbarMenu";
import { AccentColor, MainColor } from "@/constants/color-palet";
import { ICON_SIZE_MEDIUM, ICON_SIZE_SMALL, ICON_SIZE_XLARGE } from "@/constants/constans-value";
import {
ICON_SIZE_MEDIUM,
ICON_SIZE_SMALL,
ICON_SIZE_XLARGE,
} from "@/constants/constans-value";
import { useAuth } from "@/hooks/use-auth";
import { adminListMenu } from "@/screens/Admin/listPageAdmin";
import { GStyles } from "@/styles/global-styles";
import { FontAwesome6, Ionicons } from "@expo/vector-icons";
@@ -19,6 +24,9 @@ import { useState } from "react";
export default function AdminLayout() {
const [openDrawerNavbar, setOpenDrawerNavbar] = useState(false);
const [openDrawerUser, setOpenDrawerUser] = useState(false);
const { logout } = useAuth();
return (
<>
<Stack
@@ -74,32 +82,32 @@ export default function AdminLayout() {
<Stack.Screen name="collaboration/publish" />
<Stack.Screen name="collaboration/group" />
<Stack.Screen name="collaboration/reject" />
<Stack.Screen name="collaboration/[id]/[status]"/>
<Stack.Screen name="collaboration/[id]/group"/>
<Stack.Screen name="collaboration/[id]/[status]" />
<Stack.Screen name="collaboration/[id]/group" />
{/* ================== Collaboration End ================== */}
{/* ================== Forum Start ================== */}
<Stack.Screen name="forum/index" />
<Stack.Screen name="forum/[id]/index" />
<Stack.Screen name="forum/report-comment"/>
<Stack.Screen name="forum/report-posting"/>
<Stack.Screen name="forum/report-comment" />
<Stack.Screen name="forum/report-posting" />
<Stack.Screen name="forum/[id]/list-report-posting" />
<Stack.Screen name="forum/[id]/list-report-comment"/>
<Stack.Screen name="forum/[id]/list-report-comment" />
{/* ================== Forum End ================== */}
{/* ================== Voting Start ================== */}
<Stack.Screen name="voting/index" />
<Stack.Screen name="voting/[status]/status" />
<Stack.Screen name="voting/[id]/[status]/index" />
<Stack.Screen name="voting/[id]/reject-input"/>
<Stack.Screen name="voting/[id]/reject-input" />
{/* ================== Voting End ================== */}
{/* ================== Event Start ================== */}
<Stack.Screen name="event/index" />
<Stack.Screen name="event/[status]/status" />
<Stack.Screen name="event/type-of-event"/>
<Stack.Screen name="event/type-create"/>
<Stack.Screen name="event/type-update"/>
<Stack.Screen name="event/type-of-event" />
<Stack.Screen name="event/type-create" />
<Stack.Screen name="event/type-update" />
{/* <Stack.Screen name="event/[id]/[status]/index" />
<Stack.Screen name="event/[id]/reject-input"/> */}
{/* ================== Event End ================== */}
@@ -223,7 +231,7 @@ export default function AdminLayout() {
textLeft: "Batal",
textRight: "Keluar",
onPressRight: () => {
router.replace("/");
logout();
},
});
}