Files
hipmi-mobile/app/(application)/admin/job/index.tsx
bagasbanuna 0823a1c26a feat: Complete Admin Phase 6 Job screens migration
- Migrate 4 admin job screens to OS_Wrapper (dashboard, list, detail, form)
- Add enableKeyboardHandling to reject-input form screen
- Update TASK-005 with Admin Phase 6 completion status
- Total: 132 files migrated (~79% complete)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-14 12:24:58 +08:00

75 lines
1.9 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-unused-vars */
import { OS_Wrapper, Spacing, StackCustom } from "@/components";
import {
IconPublish,
IconReject,
IconReview,
} from "@/components/_Icon/IconComponent";
import AdminComp_BoxDashboard from "@/components/_ShareComponent/Admin/BoxDashboard";
import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
import { MainColor } from "@/constants/color-palet";
import { apiAdminJob } from "@/service/api-admin/api-admin-job";
import { useFocusEffect } from "expo-router";
import { useCallback, useState } from "react";
export default function AdminJob() {
const [data, setData] = useState<any | null>(null);
const [loadList, setLoadList] = useState(false);
useFocusEffect(
useCallback(() => {
handlerLoadList();
}, [])
);
const handlerLoadList = async () => {
try {
setLoadList(true);
const response = await apiAdminJob({
category: "dashboard",
});
if (response.success) {
setData(response.data);
}
} catch (error) {
console.log("[ERROR]", error);
} finally {
setLoadList(false);
}
};
return (
<>
<OS_Wrapper>
<AdminTitlePage title="Job Vacancy" />
<Spacing />
<StackCustom gap={"xs"}>
{listData(data).map((item: any, i: number) => (
<AdminComp_BoxDashboard key={i} item={item} />
))}
</StackCustom>
</OS_Wrapper>
</>
);
}
const listData = (data: any) => [
{
label: "Publish",
value: (data && data?.publish) || 0,
icon: <IconPublish size={25} color={MainColor.green} />,
},
{
label: "Review",
value: (data && data?.review) || 0,
icon: <IconReview size={25} color={MainColor.orange} />,
},
{
label: "Reject",
value: (data && data?.reject) || 0,
icon: <IconReject size={25} color={MainColor.red} />,
},
];