upd: upd new folder
Deskripsi: - bisa membuat folder baru saat salin atau pindah file pada fitur dokumen divisi No Issues
This commit is contained in:
65
components/document/modalNewFolder.tsx
Normal file
65
components/document/modalNewFolder.tsx
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import Styles from "@/constants/Styles";
|
||||||
|
import { apiCreateFolderDocument } from "@/lib/api";
|
||||||
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
|
import { useLocalSearchParams } from "expo-router";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { Pressable, View } from "react-native";
|
||||||
|
import Toast from "react-native-toast-message";
|
||||||
|
import Text from "../Text";
|
||||||
|
import { InputForm } from "../inputForm";
|
||||||
|
import ModalFloat from "../modalFloat";
|
||||||
|
|
||||||
|
export function ModalNewFolder({ path, onCreated }: { path: string, onCreated: () => void }) {
|
||||||
|
const { token, decryptToken } = useAuthSession()
|
||||||
|
const [newFolder, setNewFolder] = useState(false)
|
||||||
|
const [name, setName] = useState("")
|
||||||
|
const [loadingFolder, setLoadingFolder] = useState(false)
|
||||||
|
const { id } = useLocalSearchParams<{ id: string }>();
|
||||||
|
|
||||||
|
|
||||||
|
async function handleCreateFolder() {
|
||||||
|
try {
|
||||||
|
setLoadingFolder(true)
|
||||||
|
const hasil = await decryptToken(String(token?.current))
|
||||||
|
const response = await apiCreateFolderDocument({ data: { user: hasil, name, path, idDivision: id } })
|
||||||
|
if (response.success) {
|
||||||
|
Toast.show({ type: 'small', text1: 'Berhasil membuat folder baru', })
|
||||||
|
} else {
|
||||||
|
Toast.show({ type: 'small', text1: response.message, })
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
|
||||||
|
} finally {
|
||||||
|
onCreated()
|
||||||
|
setLoadingFolder(false)
|
||||||
|
setNewFolder(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Pressable style={[Styles.pv05, Styles.borderRight, { width: '50%' }]} onPress={() => setNewFolder(true)}>
|
||||||
|
<Text style={[Styles.textDefaultSemiBold, { textAlign: 'center' }]}>FOLDER BARU</Text>
|
||||||
|
</Pressable>
|
||||||
|
|
||||||
|
<ModalFloat
|
||||||
|
title="Buat Folder Baru"
|
||||||
|
isVisible={newFolder}
|
||||||
|
setVisible={() => { setNewFolder(false) }}
|
||||||
|
disableSubmit={name == "" || loadingFolder}
|
||||||
|
onSubmit={() => { handleCreateFolder() }}
|
||||||
|
>
|
||||||
|
<View>
|
||||||
|
<InputForm
|
||||||
|
type="default"
|
||||||
|
placeholder="Nama Folder"
|
||||||
|
required
|
||||||
|
label="Nama Folder"
|
||||||
|
onChange={(value: string) => { setName(value) }}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</ModalFloat>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ import { Pressable, View } from "react-native"
|
|||||||
import BorderBottomItem from "../borderBottomItem"
|
import BorderBottomItem from "../borderBottomItem"
|
||||||
import DrawerBottom from "../drawerBottom"
|
import DrawerBottom from "../drawerBottom"
|
||||||
import Text from "../Text"
|
import Text from "../Text"
|
||||||
|
import { ModalNewFolder } from "./modalNewFolder"
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean
|
open: boolean
|
||||||
@@ -106,9 +107,7 @@ export default function ModalSalinMove({ open, close, category, onConfirm, dataC
|
|||||||
}
|
}
|
||||||
</View>
|
</View>
|
||||||
<View style={[Styles.rowOnly, Styles.mt15, Styles.absolute0]}>
|
<View style={[Styles.rowOnly, Styles.mt15, Styles.absolute0]}>
|
||||||
<Pressable style={[Styles.pv05, Styles.borderRight, { width: '50%' }]} onPress={() => close(false)}>
|
<ModalNewFolder path={path} onCreated={() => getData()} />
|
||||||
<Text style={[Styles.textDefaultSemiBold, { textAlign: 'center' }]}>BATAL</Text>
|
|
||||||
</Pressable>
|
|
||||||
<Pressable style={[Styles.pv05, { width: '50%' }]} onPress={() => onConfirm(path)}>
|
<Pressable style={[Styles.pv05, { width: '50%' }]} onPress={() => onConfirm(path)}>
|
||||||
<Text style={[Styles.textDefaultSemiBold, { textAlign: 'center' }]}>{category == 'copy' ? 'SALIN' : 'PINDAH'}</Text>
|
<Text style={[Styles.textDefaultSemiBold, { textAlign: 'center' }]}>{category == 'copy' ? 'SALIN' : 'PINDAH'}</Text>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
|
|||||||
Reference in New Issue
Block a user