import AppHeader from "@/components/AppHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ImageUser from "@/components/imageNew"; import Text from "@/components/Text"; import { ConstEnv } from "@/constants/ConstEnv"; import Styles from "@/constants/Styles"; import { apiCreateDivision } from "@/lib/api"; import { setFormCreateDivision } from "@/lib/divisionCreate"; import { setUpdateDivision } from "@/lib/divisionUpdate"; import { useAuthSession } from "@/providers/AuthProvider"; import { useTheme } from "@/providers/ThemeProvider"; import { AntDesign } from "@expo/vector-icons"; import { StackActions, useNavigation } from "@react-navigation/native"; import { router, Stack, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { Pressable, 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 CreateDivisionAddAdmin() { const { colors } = useTheme(); const { token, decryptToken } = useAuthSession() const navigation = useNavigation() const { id } = useLocalSearchParams<{ id: string }>() const [dataOld, setDataOld] = useState([]) const [data, setData] = useState([]) const [selectMember, setSelectMember] = useState([]) const update = useSelector((state: any) => state.divisionCreate) const updateDivision = useSelector((state: any) => state.divisionUpdate) const dispatch = useDispatch() const [loading, setLoading] = useState(false) async function handleLoadMember() { setData(update.member) } useEffect(() => { handleLoadMember() }, []) function onChoose(val: string) { if (selectMember.some((i: any) => i == val)) { setSelectMember(selectMember.filter((i: any) => i != val)) } else { setSelectMember([...selectMember, val]) } } async function handleAddMember() { try { setLoading(true) const hasil = await decryptToken(String(token?.current)) const response = await apiCreateDivision({ ...update, admin: selectMember, user: hasil }) if (response.success) { Toast.show({ type: 'small', text1: 'Berhasil membuat divisi', }) dispatch(setFormCreateDivision({ admin: [], member: [], data: { idGroup: '', name: '', desc: '' } })) dispatch(setUpdateDivision(!updateDivision)) navigation.dispatch(StackActions.pop(3)) // router.replace(`/division/`) } 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 Admin Divisi', headerTitleAlign: 'center', // headerRight: () => ( // { // handleAddMember() // }} // /> // ) header: () => ( router.back()} right={ { handleAddMember() }} />} /> ) }} /> { data.length > 0 ? data.map((item: any, index: any) => { const found = dataOld.some((i: any) => i.idUser == item.id) return ( { !found && onChoose(item.idUser) }} > {item.name} { found && sudah menjadi anggota } { selectMember.some((i: any) => i == item.idUser) && } ) } ) : Tidak ada data } ) }