Integrasi API: App Information & Maps
Add: - service/api-admin/api-master-admin.ts Fix: app/(application)/admin/app-information/business-field/[id]/index.tsx app/(application)/admin/app-information/business-field/create.tsx app/(application)/admin/app-information/index.tsx app/(application)/admin/app-information/information-bank/[id]/index.tsx app/(application)/admin/app-information/information-bank/create.tsx app/(application)/admin/maps.tsx screens/Admin/App-Information/BusinessFieldSection.tsx screens/Admin/App-Information/InformationBankSection.tsx screens/Admin/App-Information/StickerSection.tsx screens/Authentication/LoginView.tsx service/api-client/api-master.ts - Perbaikan berupa integrasi API ### No Issue
This commit is contained in:
@@ -1,18 +1,89 @@
|
||||
/* eslint-disable react-hooks/exhaustive-deps */
|
||||
import {
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
StackCustom,
|
||||
TextCustom,
|
||||
TextInputCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import { router } from "expo-router";
|
||||
import { MainColor } from "@/constants/color-palet";
|
||||
import {
|
||||
apiAdminMasterBusinessFieldById,
|
||||
apiAdminMasterBusinessFieldUpdate,
|
||||
} from "@/service/api-admin/api-master-admin";
|
||||
import { router, useFocusEffect, useLocalSearchParams } from "expo-router";
|
||||
import { useCallback, useState } from "react";
|
||||
import { Switch } from "react-native-paper";
|
||||
import Toast from "react-native-toast-message";
|
||||
|
||||
export default function AdminAppInformation_BusinessFieldDetail() {
|
||||
const { id } = useLocalSearchParams();
|
||||
const [data, setData] = useState<any | null>(null);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
useFocusEffect(
|
||||
useCallback(() => {
|
||||
onLoadDetail();
|
||||
}, [id])
|
||||
);
|
||||
|
||||
const onLoadDetail = async () => {
|
||||
try {
|
||||
const response = await apiAdminMasterBusinessFieldById({
|
||||
id: id as string,
|
||||
});
|
||||
|
||||
setData(response.data);
|
||||
} catch (error) {
|
||||
console.log("[ERROR]", error);
|
||||
setData(null);
|
||||
}
|
||||
};
|
||||
|
||||
const handlerSubmit = async () => {
|
||||
if (!data.name) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Lengkapi Data",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const response = await apiAdminMasterBusinessFieldUpdate({
|
||||
id: id as string,
|
||||
data: data,
|
||||
});
|
||||
|
||||
if (!response.success) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Gagal update data",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
Toast.show({
|
||||
type: "success",
|
||||
text1: "Data berhasil di update",
|
||||
});
|
||||
router.back();
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
const buttonSubmit = (
|
||||
<BoxButtonOnFooter>
|
||||
<ButtonCustom
|
||||
onPress={() => router.back()}
|
||||
disabled={!data?.name}
|
||||
isLoading={isLoading}
|
||||
onPress={() => handlerSubmit()}
|
||||
>
|
||||
Update
|
||||
</ButtonCustom>
|
||||
@@ -28,6 +99,15 @@ export default function AdminAppInformation_BusinessFieldDetail() {
|
||||
label="Nama Bidang Bisnis"
|
||||
placeholder="Masukan Nama Bidang Bisnis"
|
||||
required
|
||||
value={data?.name}
|
||||
onChangeText={(value) => setData({ ...data, name: value })}
|
||||
/>
|
||||
|
||||
<TextCustom>Status Aktivasi</TextCustom>
|
||||
<Switch
|
||||
color={MainColor.yellow}
|
||||
value={data?.active}
|
||||
onValueChange={(value) => setData({ ...data, active: value })}
|
||||
/>
|
||||
</StackCustom>
|
||||
</ViewWrapper>
|
||||
|
||||
@@ -6,13 +6,52 @@ import {
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import { apiAdminMasterBusinessFieldCreate } from "@/service/api-admin/api-master-admin";
|
||||
import { router } from "expo-router";
|
||||
import { useState } from "react";
|
||||
import Toast from "react-native-toast-message";
|
||||
|
||||
export default function AdminAppInformation_BusinessFieldCreate() {
|
||||
const [data, setData] = useState<any>({
|
||||
name: "",
|
||||
});
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
const handlerSubmit = async () => {
|
||||
if (!data.name) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Lengkapi Data",
|
||||
});
|
||||
return;
|
||||
}
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const response = await apiAdminMasterBusinessFieldCreate({ data: data });
|
||||
|
||||
if (response.success) {
|
||||
Toast.show({
|
||||
type: "success",
|
||||
text1: "Data berhasil di tambah",
|
||||
});
|
||||
router.back();
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("[ERROR]", error);
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Gagal tambah data",
|
||||
});
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
const buttonSubmit = (
|
||||
<BoxButtonOnFooter>
|
||||
<ButtonCustom
|
||||
onPress={() => router.back()}
|
||||
onPress={() => handlerSubmit()}
|
||||
isLoading={isLoading}
|
||||
>
|
||||
Tambah
|
||||
</ButtonCustom>
|
||||
@@ -28,6 +67,8 @@ export default function AdminAppInformation_BusinessFieldCreate() {
|
||||
label="Nama Bidang Bisnis"
|
||||
placeholder="Masukan Nama Bidang Bisnis"
|
||||
required
|
||||
value={data.name}
|
||||
onChangeText={(value) => setData({ ...data, name: value })}
|
||||
/>
|
||||
</StackCustom>
|
||||
</ViewWrapper>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
import {
|
||||
ScrollableCustom,
|
||||
StackCustom,
|
||||
ViewWrapper
|
||||
} from "@/components";
|
||||
import { ScrollableCustom, StackCustom, ViewWrapper } from "@/components";
|
||||
import AdminActionIconPlus from "@/components/_ShareComponent/Admin/ActionIconPlus";
|
||||
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
|
||||
import AdminAppInformation_BusinessFieldSection from "@/screens/Admin/App-Information/BusinessFieldSection";
|
||||
@@ -10,6 +6,7 @@ import AdminAppInformation_Bank from "@/screens/Admin/App-Information/Informatio
|
||||
import AdminAppInformation_StickerSection from "@/screens/Admin/App-Information/StickerSection";
|
||||
import { router } from "expo-router";
|
||||
import { useState } from "react";
|
||||
import { Alert } from "react-native";
|
||||
|
||||
export default function AdminInformation() {
|
||||
const [activeCategory, setActiveCategory] = useState<string | null>("bank");
|
||||
@@ -57,7 +54,8 @@ export default function AdminInformation() {
|
||||
} else if (activeCategory === "business") {
|
||||
router.push("/admin/app-information/business-field/create");
|
||||
} else if (activeCategory === "sticker") {
|
||||
router.push("/admin/app-information/sticker/create");
|
||||
Alert.alert("Coming Soon", "Next Update");
|
||||
// router.push("/admin/app-information/sticker/create");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -1,18 +1,90 @@
|
||||
/* eslint-disable react-hooks/exhaustive-deps */
|
||||
import {
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
StackCustom,
|
||||
TextInputCustom,
|
||||
ViewWrapper,
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
CenterCustom,
|
||||
Grid,
|
||||
StackCustom,
|
||||
TextCustom,
|
||||
TextInputCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import { router } from "expo-router";
|
||||
import { MainColor } from "@/constants/color-palet";
|
||||
import {
|
||||
apiAdminMasterBankById,
|
||||
apiAdminMasterBankUpdate,
|
||||
} from "@/service/api-admin/api-master-admin";
|
||||
import { router, useFocusEffect, useLocalSearchParams } from "expo-router";
|
||||
import { useCallback, useState } from "react";
|
||||
import { Switch } from "react-native-paper";
|
||||
import Toast from "react-native-toast-message";
|
||||
|
||||
export default function AdminAppInformation_BankDetail() {
|
||||
const { id } = useLocalSearchParams();
|
||||
const [data, setData] = useState<any | null>(null);
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
|
||||
useFocusEffect(
|
||||
useCallback(() => {
|
||||
onLoadList();
|
||||
}, [id])
|
||||
);
|
||||
|
||||
const onLoadList = async () => {
|
||||
try {
|
||||
const response = await apiAdminMasterBankById({ id: id as string });
|
||||
|
||||
if (response.success) {
|
||||
setData(response.data);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("[ERROR]", error);
|
||||
}
|
||||
};
|
||||
|
||||
const handlerUpdate = async () => {
|
||||
if (!data.namaBank || !data.namaAkun || !data.norek) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Lengkapi Data",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await apiAdminMasterBankUpdate({
|
||||
id: id as string,
|
||||
data: data,
|
||||
});
|
||||
|
||||
if (!response.success) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Gagal update data",
|
||||
});
|
||||
} else {
|
||||
Toast.show({
|
||||
type: "success",
|
||||
text1: "Success",
|
||||
text2: "Data berhasil di update",
|
||||
});
|
||||
router.back();
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("[ERROR]", error);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
const buttonSubmit = (
|
||||
<BoxButtonOnFooter>
|
||||
<ButtonCustom
|
||||
onPress={() => router.back()}
|
||||
disabled={!data?.namaBank || !data?.namaAkun || !data?.norek}
|
||||
isLoading={isLoading}
|
||||
onPress={() => handlerUpdate()}
|
||||
>
|
||||
Update
|
||||
</ButtonCustom>
|
||||
@@ -25,22 +97,46 @@ export default function AdminAppInformation_BankDetail() {
|
||||
<AdminBackButtonAntTitle title="Update Bank" />
|
||||
|
||||
<StackCustom>
|
||||
<TextInputCustom
|
||||
label="Nama Bank"
|
||||
placeholder="Masukan Nama Bank"
|
||||
required
|
||||
/>
|
||||
<Grid>
|
||||
<Grid.Col span={6}>
|
||||
<TextInputCustom
|
||||
label="Nama Bank"
|
||||
placeholder="Masukan Nama Bank"
|
||||
required
|
||||
value={data?.namaBank}
|
||||
onChangeText={(value) =>
|
||||
setData({ ...data, namaBank: value })
|
||||
}
|
||||
/>
|
||||
</Grid.Col>
|
||||
<Grid.Col span={6} style={{ alignItems: "center" }}>
|
||||
<TextCustom>Status Aktivasi</TextCustom>
|
||||
<CenterCustom>
|
||||
<Switch
|
||||
onValueChange={(value) =>
|
||||
setData({ ...data, isActive: value })
|
||||
}
|
||||
color={MainColor.yellow}
|
||||
value={data?.isActive}
|
||||
/>
|
||||
</CenterCustom>
|
||||
</Grid.Col>
|
||||
</Grid>
|
||||
|
||||
<TextInputCustom
|
||||
label="Nama Rekening"
|
||||
placeholder="Masukan Nama Rekening"
|
||||
required
|
||||
value={data?.namaAkun}
|
||||
onChangeText={(value) => setData({ ...data, namaAkun: value })}
|
||||
/>
|
||||
|
||||
<TextInputCustom
|
||||
label="Nomor Rekening"
|
||||
placeholder="Masukan Nomor Rekening"
|
||||
required
|
||||
value={data?.norek}
|
||||
onChangeText={(value) => setData({ ...data, norek: value })}
|
||||
/>
|
||||
</StackCustom>
|
||||
</StackCustom>
|
||||
|
||||
@@ -1,19 +1,51 @@
|
||||
import {
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
StackCustom,
|
||||
TextInputCustom,
|
||||
ViewWrapper
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
StackCustom,
|
||||
TextInputCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import { apiAdminMasterBankCreate } from "@/service/api-admin/api-master-admin";
|
||||
import { router } from "expo-router";
|
||||
import { useState } from "react";
|
||||
import Toast from "react-native-toast-message";
|
||||
|
||||
export default function AdminAppInformation_BankCreate() {
|
||||
const [data, setData] = useState<any>({
|
||||
namaBank: "",
|
||||
namaAkun: "",
|
||||
norek: "",
|
||||
});
|
||||
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
|
||||
const handlerSubmit = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await apiAdminMasterBankCreate({ data: data });
|
||||
|
||||
if (response.success) {
|
||||
Toast.show({
|
||||
type: "success",
|
||||
text1: "Data berhasil di tambah",
|
||||
});
|
||||
router.back();
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("[ERROR]", error);
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Gagal tambah data",
|
||||
});
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
const buttonSubmit = (
|
||||
<BoxButtonOnFooter>
|
||||
<ButtonCustom
|
||||
onPress={() => router.back()}
|
||||
>
|
||||
<ButtonCustom isLoading={isLoading} onPress={handlerSubmit}>
|
||||
Tambah
|
||||
</ButtonCustom>
|
||||
</BoxButtonOnFooter>
|
||||
@@ -29,18 +61,25 @@ export default function AdminAppInformation_BankCreate() {
|
||||
label="Nama Bank"
|
||||
placeholder="Masukan Nama Bank"
|
||||
required
|
||||
value={data.namaBank}
|
||||
onChangeText={(value) => setData({ ...data, namaBank: value })}
|
||||
/>
|
||||
|
||||
<TextInputCustom
|
||||
label="Nama Rekening"
|
||||
placeholder="Masukan Nama Rekening"
|
||||
required
|
||||
value={data.namaAkun}
|
||||
onChangeText={(value) => setData({ ...data, namaAkun: value })}
|
||||
/>
|
||||
|
||||
<TextInputCustom
|
||||
keyboardType="numeric"
|
||||
label="Nomor Rekening"
|
||||
placeholder="Masukan Nomor Rekening"
|
||||
required
|
||||
value={data.norek}
|
||||
onChangeText={(value) => setData({ ...data, norek: value })}
|
||||
/>
|
||||
</StackCustom>
|
||||
</StackCustom>
|
||||
|
||||
Reference in New Issue
Block a user