diff --git a/app/(application)/discussion/[id].tsx b/app/(application)/discussion/[id].tsx index 9e71db3..bcaa79b 100644 --- a/app/(application)/discussion/[id].tsx +++ b/app/(application)/discussion/[id].tsx @@ -20,6 +20,7 @@ import { useHeaderHeight } from '@react-navigation/elements'; import { router, Stack, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { KeyboardAvoidingView, Platform, Pressable, ScrollView, View } from "react-native"; +import Toast from "react-native-toast-message"; import { useSelector } from "react-redux"; type Props = { @@ -54,6 +55,9 @@ export default function DetailDiscussionGeneral() { const arrSkeleton = Array.from({ length: 3 }, (_, index) => index) const reference = ref(getDB(), `/discussion-general/${id}`); const headerHeight = useHeaderHeight(); + const [detailMore, setDetailMore] = useState([]) + const [loadingSendKomentar, setLoadingSendKomentar] = useState(false) + useEffect(() => { const onValueChange = reference.on('value', snapshot => { @@ -116,16 +120,21 @@ export default function DetailDiscussionGeneral() { async function handleKomentar() { try { + setLoadingSendKomentar(true) if (komentar != '') { const hasil = await decryptToken(String(token?.current)) const response = await apiSendDiscussionGeneralCommentar({ id: id, data: { desc: komentar, user: hasil } }) if (response.success) { setKomentar('') updateTrigger() + } else { + Toast.show({ type: 'small', text1: 'Gagal menambahkan komentar' }) } } } catch (error) { console.error(error) + } finally { + setLoadingSendKomentar(false) } } @@ -195,6 +204,16 @@ export default function DetailDiscussionGeneral() { title={item.username} rightTopInfo={item.createdAt} desc={item.comment} + descEllipsize={detailMore.includes(item.id) ? false : true} + onPress={() => { + setDetailMore((prev: any) => { + if (prev.includes(item.id)) { + return prev.filter((id: string) => id !== item.id) + } else { + return [...prev, item.id] + } + }) + }} /> ) }) @@ -225,14 +244,14 @@ export default function DetailDiscussionGeneral() { multiline itemRight={ { - (komentar != '' && !regexOnlySpacesOrEnter.test(komentar) && data?.status === 1 && data?.isActive && (memberDiscussion || (entityUser.role != "user" && entityUser.role != "coadmin"))) + (!loadingSendKomentar && komentar != '' && !regexOnlySpacesOrEnter.test(komentar) && data?.status === 1 && data?.isActive && (memberDiscussion || (entityUser.role != "user" && entityUser.role != "coadmin"))) && handleKomentar() }} style={[ Platform.OS == 'android' && Styles.mb12, ]} > - + } /> diff --git a/app/(application)/division/[id]/(fitur-division)/discussion/[detail]/index.tsx b/app/(application)/division/[id]/(fitur-division)/discussion/[detail]/index.tsx index 2031dae..764c855 100644 --- a/app/(application)/division/[id]/(fitur-division)/discussion/[detail]/index.tsx +++ b/app/(application)/division/[id]/(fitur-division)/discussion/[detail]/index.tsx @@ -64,6 +64,7 @@ export default function DiscussionDetail() { const reference = ref(getDB(), `/discussion-division/${detail}`); const [refreshing, setRefreshing] = useState(false) const headerHeight = useHeaderHeight(); + const [detailMore, setDetailMore] = useState([]) useEffect(() => { @@ -276,7 +277,16 @@ export default function DiscussionDetail() { title={item.username} rightTopInfo={item.createdAt} desc={item.comment} - descEllipsize={false} + descEllipsize={detailMore.includes(item.id) ? false : true} + onPress={() => { + setDetailMore((prev: any) => { + if (prev.includes(item.id)) { + return prev.filter((id: string) => id !== item.id) + } else { + return [...prev, item.id] + } + }) + }} /> )) }