Donasi. Berikut adalah ringkasan perubahan yang telah dilakukan:
1. Menerapkan sistem pagination pada berbagai komponen layar donasi:
- ScreenBeranda.tsx
- ScreenMyDonation.tsx
- ScreenRecapOfNews.tsx
- ScreenListOfNews.tsx
- ScreenListOfDonatur.tsx
- ScreenFundDisbursement.tsx
2. Memperbarui fungsi-fungsi API untuk mendukung parameter page:
- apiDonationGetAll
- apiDonationGetNewsById
- apiDonationListOfDonaturById
- apiDonationDisbursementOfFundsListById
3. Mengganti komponen wrapper lama (ViewWrapper) dengan NewWrapper yang mendukung sistem pagination
4. Membuat komponen layar terpisah untuk meningkatkan modularitas kode
5. Memperbaiki berbagai error yang terjadi, termasuk masalah dengan import komponen dan struktur JSX
### No Issue
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
// utils/formatChatTime.ts
|
|
import dayjs from 'dayjs';
|
|
import relativeTime from 'dayjs/plugin/relativeTime';
|
|
import 'dayjs/locale/id';
|
|
|
|
dayjs.extend(relativeTime);
|
|
dayjs.locale('id');
|
|
|
|
/**
|
|
* Format waktu pesan untuk tampilan chat
|
|
* @param date ISO string atau Date object
|
|
* @returns string formatted time
|
|
*/
|
|
export const formatChatTime = (date: string | Date): string => {
|
|
const messageDate = dayjs(date);
|
|
const now = dayjs();
|
|
|
|
// Hari ini
|
|
if (messageDate.isSame(now, 'day')) {
|
|
return messageDate.format('HH.mm'); // "14.30"
|
|
}
|
|
|
|
// Kemarin
|
|
if (messageDate.isSame(now.subtract(1, 'day'), 'day')) {
|
|
return `Kemarin, ${messageDate.format('HH.mm')}`; // "Kemarin, 14.30"
|
|
}
|
|
|
|
// Dalam 7 hari terakhir (termasuk hari ini & kemarin sudah di-handle, jadi aman)
|
|
if (now.diff(messageDate, 'day') < 7) {
|
|
return `${messageDate.format('dddd')}, ${messageDate.format('HH.mm')}`; // "Senin, 13.00"
|
|
}
|
|
|
|
// Lebih dari 7 hari lalu
|
|
return messageDate.format('DD/MM/YYYY, HH.mm'); // "05/11/2025, 14.00"
|
|
}; |