upd: button save

Deskripsi:
- disable button saat udh submit

No Issues
This commit is contained in:
2025-08-04 13:56:33 +08:00
parent b7c44109a1
commit fafb52d87c
31 changed files with 211 additions and 64 deletions

View File

@@ -30,6 +30,7 @@ export default function AddMemberTask() {
const [data, setData] = useState<Props[]>([])
const [selectMember, setSelectMember] = useState<any[]>([])
const [search, setSearch] = useState('')
const [loading, setLoading] = useState(false)
async function handleLoadOldMember() {
try {
@@ -72,6 +73,7 @@ export default function AddMemberTask() {
async function handleAddMember() {
try {
setLoading(true)
const hasil = await decryptToken(String(token?.current))
const response = await apiAddMemberTask({ id: detail, data: { user: hasil, member: selectMember, idDivision: id } })
if (response.success) {
@@ -83,7 +85,9 @@ export default function AddMemberTask() {
}
} catch (error) {
console.error(error)
Toast.show({ type: 'small', text1: 'Gagal menambahkan anggota', })
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoading(false)
}
}
@@ -98,7 +102,7 @@ export default function AddMemberTask() {
headerRight: () => (
<ButtonSaveHeader
category="update"
disable={selectMember.length > 0 ? false : true}
disable={selectMember.length == 0 || loading ? true : false}
onPress={() => {
handleAddMember()
}}

View File

@@ -24,6 +24,7 @@ export default function TaskDivisionAddTask() {
const update = useSelector((state: any) => state.taskUpdate);
const { id, detail } = useLocalSearchParams<{ id: string; detail: string }>();
const [disable, setDisable] = useState(true);
const [loading, setLoading] = useState(false)
const [range, setRange] = useState<{
startDate: DateType;
endDate: DateType;
@@ -73,6 +74,7 @@ export default function TaskDivisionAddTask() {
async function handleCreate() {
try {
setLoading(true)
const hasil = await decryptToken(String(token?.current));
const response = await apiCreateTaskTugas({
data: {
@@ -93,7 +95,9 @@ export default function TaskDivisionAddTask() {
}
} catch (error) {
console.error(error);
Toast.show({ type: 'small', text1: 'Gagal menambah data', })
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoading(false)
}
}
@@ -113,7 +117,7 @@ export default function TaskDivisionAddTask() {
headerRight: () => (
<ButtonSaveHeader
category="create"
disable={disable}
disable={disable || loading}
onPress={() => {
handleCreate();
}}

View File

@@ -19,6 +19,7 @@ export default function TaskDivisionCancel() {
const [reason, setReason] = useState("");
const [error, setError] = useState(false);
const [disable, setDisable] = useState(false);
const [loading, setLoading] = useState(false)
function onValidation(val: string) {
setReason(val);
@@ -43,6 +44,7 @@ export default function TaskDivisionCancel() {
async function handleCancel() {
try {
setLoading(true)
const hasil = await decryptToken(String(token?.current));
const response = await apiCancelTask(
{
@@ -60,7 +62,9 @@ export default function TaskDivisionCancel() {
}
} catch (error) {
console.error(error);
Toast.show({ type: 'small', text1: 'Gagal membatalkan kegiatan', })
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoading(false)
}
}
@@ -79,7 +83,7 @@ export default function TaskDivisionCancel() {
headerTitleAlign: "center",
headerRight: () => (
<ButtonSaveHeader
disable={disable}
disable={disable || loading}
category="cancel"
onPress={() => {
handleCancel();

View File

@@ -19,6 +19,7 @@ export default function TaskDivisionEdit() {
const [disable, setDisable] = useState(false);
const dispatch = useDispatch();
const update = useSelector((state: any) => state.taskUpdate);
const [loading, setLoading] = useState(false)
async function handleLoad() {
try {
@@ -61,6 +62,7 @@ export default function TaskDivisionEdit() {
async function handleUpdate() {
try {
setLoading(true)
const hasil = await decryptToken(String(token?.current));
const response = await apiEditTask(
{
@@ -79,6 +81,8 @@ export default function TaskDivisionEdit() {
} catch (error) {
console.error(error);
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoading(false)
}
}
@@ -98,7 +102,7 @@ export default function TaskDivisionEdit() {
headerRight: () => (
<ButtonSaveHeader
category="update"
disable={disable}
disable={disable || loading}
onPress={() => { handleUpdate() }}
/>
),

View File

@@ -38,6 +38,7 @@ export default function CreateTaskDivision() {
const [title, setTitle] = useState('')
const [error, setError] = useState(false);
const [isModal, setModal] = useState(false)
const [loading, setLoading] = useState(false)
let hitung = 0;
useEffect(() => {
@@ -77,6 +78,7 @@ export default function CreateTaskDivision() {
async function handleCreate() {
try {
setLoading(true)
const hasil = await decryptToken(String(token?.current))
const fd = new FormData()
@@ -102,6 +104,9 @@ export default function CreateTaskDivision() {
}
} catch (error) {
console.error(error)
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoading(false)
}
}
@@ -121,7 +126,7 @@ export default function CreateTaskDivision() {
headerTitleAlign: "center",
headerRight: () => (
<ButtonSaveHeader
disable={title == "" || entitiesMember.length == 0 || taskCreate.length == 0}
disable={title == "" || entitiesMember.length == 0 || taskCreate.length == 0 || loading}
category="create"
onPress={() => { handleCreate() }}
/>

View File

@@ -25,7 +25,6 @@ export default function AddMemberCreateTask() {
const dispatch = useDispatch()
const { token, decryptToken } = useAuthSession()
const { id } = useLocalSearchParams<{ id: string, detail: string }>()
const [dataOld, setDataOld] = useState<Props[]>([])
const [data, setData] = useState<Props[]>([])
const [selectMember, setSelectMember] = useState<any[]>([])
const [search, setSearch] = useState('')

View File

@@ -29,6 +29,7 @@ export default function UpdateProjectTaskDivision() {
startDate: DateType;
endDate: DateType;
}>({ startDate: undefined, endDate: undefined });
const [loadingSubmit, setLoadingSubmit] = useState(false)
const [month, setMonth] = useState<any>();
const [year, setYear] = useState<any>();
const [loading, setLoading] = useState(true);
@@ -73,6 +74,7 @@ export default function UpdateProjectTaskDivision() {
async function handleEdit() {
try {
setLoadingSubmit(true)
const hasil = await decryptToken(String(token?.current));
const response = await apiEditTaskTugas({ data: { title, dateStart: dayjs(range.startDate).format("YYYY-MM-DD"), dateEnd: dayjs(range.endDate).format("YYYY-MM-DD"), user: hasil }, id: detail });
if (response.success) {
@@ -84,7 +86,9 @@ export default function UpdateProjectTaskDivision() {
}
} catch (error) {
console.error(error);
Toast.show({ type: 'small', text1: 'Gagal mengubah data', })
Toast.show({ type: 'small', text1: 'Terjadi kesalahan', })
} finally {
setLoadingSubmit(false)
}
}
@@ -134,7 +138,7 @@ export default function UpdateProjectTaskDivision() {
headerTitleAlign: "center",
headerRight: () => (
<ButtonSaveHeader
disable={disableBtn}
disable={disableBtn || loadingSubmit}
category="update"
onPress={() => {
handleEdit()