Forum Screens (User Phase 5 - 17 files):
- Migrate all forum list, detail, create, and report screens to OS_Wrapper.
- ViewBeranda, ViewBeranda2, ViewBeranda3: List screens with pull-to-refresh.
- DetailForum, DetailForum2: Comment sections with headers (apply disableFlexGrow fix).
- create, edit, report-*, other-report-*, preview-report-*: Forms with keyboard handling.
Admin Phase 9 (User Access - 2 files):
- index.tsx: List with search and pagination.
- [id]/index.tsx: Detail with status toggle footer.
Scroll Fixes (Critical Bugs):
- Fix "Ghost Scroll" in Android FlatList: Removed TouchableWithoutFeedback and KeyboardAvoidingView wrappers in List Mode.
- Fix Large Header Cut-off: Added optional disableFlexGrow={true} to OS_Wrapper for screens with complex ListHeaderComponents (e.g., Forum Detail).
- Fix Keyboard Dismiss: Changed keyboardShouldPersistTaps to "handled" so taps on empty areas dismiss the keyboard while allowing scroll.
Documentation:
- Update TASK-005 with complete Phase 5 details and new progress totals.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
92 lines
2.7 KiB
TypeScript
92 lines
2.7 KiB
TypeScript
import {
|
|
BaseBox,
|
|
OS_Wrapper,
|
|
Spacing,
|
|
StackCustom,
|
|
TextCustom,
|
|
} from "@/components";
|
|
import ListSkeletonComponent from "@/components/_ShareComponent/ListSkeletonComponent";
|
|
import NoDataText from "@/components/_ShareComponent/NoDataText";
|
|
import CustomSkeleton from "@/components/_ShareComponent/SkeletonCustom";
|
|
import { apiForumGetReportPosting } from "@/service/api-client/api-forum";
|
|
import { useFocusEffect, useLocalSearchParams } from "expo-router";
|
|
import _ from "lodash";
|
|
import { useCallback, useState } from "react";
|
|
|
|
export default function ForumPreviewReportPosting() {
|
|
const { id } = useLocalSearchParams();
|
|
const [data, setData] = useState<any | null>(null);
|
|
const [listData, setListData] = useState<any | null>(null);
|
|
const [loading, setLoading] = useState<boolean>(false);
|
|
// Status
|
|
|
|
useFocusEffect(
|
|
useCallback(() => {
|
|
onLoadData(id as string);
|
|
}, [id])
|
|
);
|
|
|
|
const onLoadData = async (id: string) => {
|
|
try {
|
|
setLoading(true);
|
|
const response = await apiForumGetReportPosting({ id });
|
|
setData(response.data);
|
|
setListData(response?.data?.Forum_ReportPosting);
|
|
} catch (error) {
|
|
console.log("[ERROR]", error);
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<OS_Wrapper>
|
|
<StackCustom>
|
|
<TextCustom color="red" bold>
|
|
Postingan anda telah melanggar aturan forum ! Admin mengambil
|
|
tindakan untuk menghapus komentar anda!
|
|
</TextCustom>
|
|
{loading ? (
|
|
<CustomSkeleton height={100} />
|
|
) : (
|
|
<BaseBox>
|
|
<TextCustom>"{data?.diskusi ? data?.diskusi : "-"}"</TextCustom>
|
|
</BaseBox>
|
|
)}
|
|
</StackCustom>
|
|
|
|
<Spacing height={10} />
|
|
<TextCustom bold>Beberapa laporan yang telah diterima</TextCustom>
|
|
<Spacing height={10} />
|
|
|
|
{loading ? (
|
|
<ListSkeletonComponent />
|
|
) : _.isEmpty(listData) ? (
|
|
<NoDataText />
|
|
) : (
|
|
listData?.map((e: any) => (
|
|
<BaseBox key={e?.id}>
|
|
{e?.deskripsi ? (
|
|
<StackCustom gap={"sm"}>
|
|
<TextCustom bold>Laporan Lainnya</TextCustom>
|
|
<TextCustom>{e?.deskripsi}</TextCustom>
|
|
</StackCustom>
|
|
) : (
|
|
<StackCustom gap={"sm"}>
|
|
<TextCustom bold>
|
|
{e?.ForumMaster_KategoriReport?.title}
|
|
</TextCustom>
|
|
<TextCustom>
|
|
{e?.ForumMaster_KategoriReport?.deskripsi}
|
|
</TextCustom>
|
|
</StackCustom>
|
|
)}
|
|
</BaseBox>
|
|
))
|
|
)}
|
|
</OS_Wrapper>
|
|
</>
|
|
);
|
|
}
|