Files
hipmi-mobile/screens/Forum/DiscussionBoxSection.tsx
Bagasbanuna02 a474aebb94 Forum:
Fix: link dari avatar ke forumku & penambahan tombol create di forumku jika id forum milik user yang sama seperti user login

### No issue
2025-09-29 10:28:53 +08:00

144 lines
3.9 KiB
TypeScript

import {
AvatarComp,
BaseBox,
ClickableCustom,
Grid,
Spacing,
TextCustom,
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
import { GStyles } from "@/styles/global-styles";
import { formatChatTime } from "@/utils/formatChatTime";
import { Entypo, Ionicons } from "@expo/vector-icons";
import { Href, router } from "expo-router";
import { View } from "react-native";
export default function Forum_BoxDetailSection({
data,
isTruncate,
href,
isRightComponent = true,
onSetData,
}: {
data: any;
isTruncate?: boolean;
href?: Href;
isRightComponent?: boolean;
onSetData: ({
setDataId,
setStatus,
setOpenDrawer,
setAuthorId,
}: {
setDataId: string;
setStatus: string;
setOpenDrawer: boolean;
setAuthorId: string;
}) => void;
}) {
const deskripsiView = (
<View style={GStyles.forumBox}>
{isTruncate ? (
<TextCustom truncate={2}>{data?.diskusi}</TextCustom>
) : (
<TextCustom>{data?.diskusi}</TextCustom>
)}
</View>
);
return (
<>
<BaseBox>
<View>
<Grid>
<Grid.Col span={2}>
<AvatarComp
fileId={data?.Author?.Profile?.imageId}
href={`/forum/${data?.Author?.id}/forumku`}
size={"base"}
/>
</Grid.Col>
<Grid.Col span={6}>
<TextCustom truncate>{data?.Author?.username}</TextCustom>
{data?.ForumMaster_StatusPosting?.status === "Open" ? (
<TextCustom bold size="small" color="green">
{data?.ForumMaster_StatusPosting?.status}
</TextCustom>
) : (
<TextCustom bold size="small" color="red">
{data?.ForumMaster_StatusPosting?.status}
</TextCustom>
)}
</Grid.Col>
<Grid.Col
span={4}
style={{
justifyContent: "flex-start",
alignItems: "flex-end",
}}
>
{isRightComponent && (
<ClickableCustom
onPress={() => {
onSetData({
setDataId: data?.id,
setStatus: data?.ForumMaster_StatusPosting?.status,
setAuthorId: data?.Author?.id,
setOpenDrawer: true,
});
}}
style={{
alignItems: "flex-end",
}}
>
<Entypo
name="dots-three-horizontal"
color={MainColor.white}
size={ICON_SIZE_SMALL}
/>
</ClickableCustom>
)}
</Grid.Col>
</Grid>
{href ? (
<ClickableCustom onPress={() => router.push(href as any)}>
{deskripsiView}
</ClickableCustom>
) : (
deskripsiView
)}
<Spacing height={10} />
<Grid>
<Grid.Col span={6}>
<View
style={{
flexDirection: "row",
alignItems: "center",
gap: 10,
}}
>
<Ionicons
name="chatbubble-outline"
size={ICON_SIZE_SMALL}
color={MainColor.white}
/>
<TextCustom>{data?.count}</TextCustom>
</View>
</Grid.Col>
<Grid.Col span={6} style={{ alignItems: "flex-end" }}>
<TextCustom truncate size="small" color="gray">
{formatChatTime(data?.createdAt)}
</TextCustom>
</Grid.Col>
</Grid>
</View>
</BaseBox>
</>
);
}