import ButtonBackHeader from "@/components/buttonBackHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ImageUser from "@/components/imageNew"; import ImageWithLabel from "@/components/imageWithLabel"; import InputSearch from "@/components/inputSearch"; import Text from "@/components/Text"; import { ConstEnv } from "@/constants/ConstEnv"; import Styles from "@/constants/Styles"; import { apiCreateCalendar, apiGetDivisionMember } from "@/lib/api"; import { setFormCreateCalendar } from "@/lib/calendarCreate"; import { setUpdateCalendar } from "@/lib/calendarUpdate"; import { useAuthSession } from "@/providers/AuthProvider"; import { AntDesign } from "@expo/vector-icons"; import { router, Stack, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { Pressable, SafeAreaView, ScrollView, View } from "react-native"; import Toast from "react-native-toast-message"; import { useDispatch, useSelector } from "react-redux"; type Props = { idUser: string, name: string, img: string } export default function CreateCalendarAddMember() { const { token, decryptToken } = useAuthSession() const { id } = useLocalSearchParams<{ id: string }>() const [data, setData] = useState([]) const [selectMember, setSelectMember] = useState([]) const [search, setSearch] = useState('') const update = useSelector((state: any) => state.calendarCreate) const dispatch = useDispatch() const updateRefresh = useSelector((state: any) => state.calendarUpdate) const [loading, setLoading] = useState(false) async function handleLoadMemberDivision() { const hasil = await decryptToken(String(token?.current)) const responMemberDivision = await apiGetDivisionMember({ id: id, user: hasil, search: search }) setData(responMemberDivision.data) if (update.member.length > 0) { setSelectMember(update.member) } } useEffect(() => { handleLoadMemberDivision() }, [search]); function onChoose(val: string, label: string, img?: string) { if (selectMember.some((i: any) => i.idUser == val)) { setSelectMember(selectMember.filter((i: any) => i.idUser != val)) } else { setSelectMember([...selectMember, { idUser: val, name: label, img }]) } } async function handleAddMember() { try { setLoading(true) const hasil = await decryptToken(String(token?.current)) const response = await apiCreateCalendar({ data: { ...update, user: hasil, idDivision: id, member: selectMember } }) if (response.success) { Toast.show({ type: 'small', text1: 'Berhasil membuat acara', }) dispatch(setFormCreateCalendar({ title: "", desc: "", dateStart: "", timeStart: "", timeEnd: "", repeatEventType: "", repeatValue: 1, linkMeet: "", member: [], })) dispatch(setUpdateCalendar({ ...updateRefresh, data: !updateRefresh.data })); router.replace(`/division/${id}/calendar`) } else { Toast.show({ type: 'small', text1: response.message, }) } } catch (error) { console.error(error) Toast.show({ type: 'small', text1: 'Terjadi kesalahan', }) } finally { setLoading(false) } } return ( { router.back() }} />, headerTitle: 'Pilih Anggota', headerTitleAlign: 'center', headerRight: () => ( { handleAddMember() }} /> ) }} /> setSearch(val)} value={search} /> { selectMember.length > 0 ? { selectMember.map((item: any, index: any) => ( onChoose(item.idUser, item.name, item.img)} /> )) } : Tidak ada member yang dipilih } { data.length > 0 ? data.map((item: any, index: any) => { return ( { onChoose(item.idUser, item.name, item.img) }} > {item.name} { selectMember.some((i: any) => i.idUser == item.idUser) && } ) } ) : Tidak ada data } ) }