diff --git a/app/(application)/division/[id]/(fitur-division)/calendar/[detail]/index.tsx b/app/(application)/division/[id]/(fitur-division)/calendar/[detail]/index.tsx index 9574196..b9e9951 100644 --- a/app/(application)/division/[id]/(fitur-division)/calendar/[detail]/index.tsx +++ b/app/(application)/division/[id]/(fitur-division)/calendar/[detail]/index.tsx @@ -1,12 +1,9 @@ -import ModalConfirmation from "@/components/ModalConfirmation" import AppHeader from "@/components/AppHeader" -import BorderBottomItem from "@/components/borderBottomItem" -import ButtonBackHeader from "@/components/buttonBackHeader" -import HeaderRightCalendarDetail from "@/components/calendar/headerCalendarDetail" import DrawerBottom from "@/components/drawerBottom" +import HeaderRightCalendarDetail from "@/components/calendar/headerCalendarDetail" import ImageUser from "@/components/imageNew" import MenuItemRow from "@/components/menuItemRow" -import Skeleton from "@/components/skeleton" +import ModalConfirmation from "@/components/ModalConfirmation" import Text from "@/components/Text" import { ConstEnv } from "@/constants/ConstEnv" import Styles from "@/constants/Styles" @@ -14,7 +11,7 @@ import { apiDeleteCalendarMember, apiGetCalendarOne, apiGetDivisionOneFeature } import { setUpdateCalendar } from "@/lib/calendarUpdate" import { useAuthSession } from "@/providers/AuthProvider" import { useTheme } from "@/providers/ThemeProvider" -import { MaterialCommunityIcons } from "@expo/vector-icons" +import { MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons" import Clipboard from "@react-native-clipboard/clipboard" import { router, Stack, useLocalSearchParams } from "expo-router" import { useEffect, useState } from "react" @@ -156,135 +153,142 @@ export default function DetailEventCalendar() { setRefreshing(false) }; + const canManage = !((entityUser.role === "user" || entityUser.role === "coadmin") && !isMemberDivision) + + const repeatLabel: Record = { + once: 'Acara 1 Kali', + daily: 'Setiap Hari', + weekly: 'Mingguan', + monthly: 'Bulanan', + yearly: 'Tahunan', + } + + function InfoRow({ icon, label, value, onCopy }: { icon: string, label: string, value?: string, onCopy?: () => void }) { + return ( + + + + + + {label} + {loading + ? + : {value || '-'} + } + + {onCopy && !loading && value && ( + + + + )} + + ) + } + return ( - + { router.back() }} />, - headerTitle: 'Detail Acara', - headerTitleAlign: 'center', - // headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision ? <> : header: () => ( router.back()} right={ - (entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision ? <> : + (entityUser.role === "user" || entityUser.role === "coadmin") && !isMemberDivision + ? <> : } /> ) }} /> - } + showsVerticalScrollIndicator={false} + style={Styles.h100} + refreshControl={} > - - - - - { - loading ? - - : {data?.title} - } + + {/* Info acara */} + + + + + + + Detail Acara + - - - { - loading ? - - : - {data?.dateStart} - } + + + + + + handleCopy(data.linkMeet) : undefined} /> + + + + + + Deskripsi + {loading + ? + : {data?.desc || '-'} + } + + - - - { - loading ? - - : - {data?.timeStart} | {data?.timeEnd} - } + + + {/* Daftar anggota */} + + + + + + + Anggota + {member.length} anggota - - - { - loading ? - - : - + + {member.length === 0 + ? ( + + + Belum ada anggota + + ) + : member.map((item, index) => ( + { + if (!canManage) return + setMemberChoose({ id: item.idUser, name: item.name }) + setModalMember(true) + }} + style={({ pressed }) => [ + Styles.rowItemsCenter, Styles.ph15, { - data?.repeatEventTyper.toString() === 'once' ? 'Acara 1 Kali' : - data?.repeatEventTyper.toString() === 'daily' ? 'Setiap Hari' : - data?.repeatEventTyper.toString() === 'weekly' ? 'Mingguan' : - data?.repeatEventTyper.toString() === 'monthly' ? 'Bulanan' : - data?.repeatEventTyper.toString() === 'yearly' ? 'Tahunan' : - '' - } - - } - - - - { - loading ? - - : - data?.linkMeet ? - { handleCopy(data.linkMeet) }}> - {data.linkMeet} - - : - - } - - - - { - loading ? - - : - {data?.desc} - } - + paddingVertical: 12, gap: 14, + borderBottomWidth: index < member.length - 1 ? 1 : 0, + borderBottomColor: colors.icon + '14', + backgroundColor: pressed && canManage ? colors.icon + '0E' : 'transparent', + }, + ]} + > + + + {item.name} + {item.email} + + {canManage && } + + )) + } - - - Anggota - Total {member.length} Anggota - - - - { - member.map((item, index) => ( - } - title={item.name} - subtitle={item.email} - onPress={() => { - if ((entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision) { - null - } else { - setMemberChoose({ id: item.idUser, name: item.name }) - setModalMember(true) - } - }} - /> - )) - } - -