1. Penambahan Pagination pada Fitur Admin Job
- Menerapkan sistem pagination menggunakan hook usePagination dari hooks/use-pagination.tsx
- Mengintegrasikan komponen-komponen pagination dari helpers/paginationHelpers.tsx
- Menambahkan dukungan infinite scroll dan pull-to-refresh
- Menambahkan loading state, skeleton loader, dan empty state
2. Pembaruan Fungsi API
- Memperbarui fungsi apiAdminJob di service/api-admin/api-admin-job.ts untuk mendukung parameter
pagination
- Menambahkan parameter page dengan nilai default 1
3. Modularisasi Kode
- Memindahkan komponen AdminJobStatus dari app/(application)/admin/job/[status]/status.tsx ke
screens/Admin/Job/ScreenJobStatus.tsx
- Mengganti ViewWrapper dengan NewWrapper untuk tampilan yang lebih fleksibel
- Membuat komponen baru BoxStatusJob.tsx untuk memisahkan logika tampilan item pekerjaan
- Menggunakan komponen BoxStatusJob di dalam ScreenJobStatus untuk menampilkan daftar pekerjaan
4. Perbaikan Struktur dan Organisasi Kode
- Mengorganisir ulang struktur folder untuk komponen admin job
- Memisahkan tanggung jawab antara komponen layar dan komponen item
- Mengoptimalkan performa dengan menggunakan useCallback dan useMemo
File-file yang Diubah
1. screens/Admin/Job/ScreenJobStatus.tsx - Implementasi utama dengan pagination
2. screens/Admin/Job/BoxStatusJob.tsx - Komponen baru untuk menampilkan item pekerjaan
3. service/api-admin/api-admin-job.ts - Penambahan parameter pagination
4. app/(application)/admin/job/[status]/status.tsx - Diperbarui untuk menggunakan komponen baru
### NO Issue
29 lines
825 B
TypeScript
29 lines
825 B
TypeScript
import { Spacing, StackCustom, TextCustom } from "@/components";
|
|
import AdminBasicBox from "@/components/_ShareComponent/Admin/AdminBasicBox";
|
|
import { router } from "expo-router";
|
|
import { View } from "react-native";
|
|
import { Divider } from "react-native-paper";
|
|
|
|
interface BoxStatusJobProps {
|
|
item: any;
|
|
status: string;
|
|
}
|
|
|
|
export function BoxStatusJob({ item, status }: BoxStatusJobProps) {
|
|
return (
|
|
<AdminBasicBox
|
|
style={{ marginHorizontal: 10, marginVertical: 5 }}
|
|
onPress={() => {
|
|
router.push(`/admin/job/${item.id}/${status}`);
|
|
}}
|
|
>
|
|
<StackCustom>
|
|
<View style={{paddingBlock: 8}}>
|
|
<TextCustom size={"large"} align="center" bold truncate={2}>
|
|
{item?.title || "-"}
|
|
</TextCustom>
|
|
</View>
|
|
</StackCustom>
|
|
</AdminBasicBox>
|
|
);
|
|
} |