From 3bbee15c3a1f8c8424588c61560c4027fcb7ff5f Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Wed, 4 Mar 2026 16:39:57 +0800 Subject: [PATCH] =?UTF-8?q?Perbaikan=20Bug=20&=20Error=20Handling:=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=E2=94=82=20=20=20=201.=20Device=20Token=20Re?= =?UTF-8?q?gistration=20Error=20(HTTP=20500)=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20?= =?UTF-8?q?=20=20-=20File:=20service/api-device-token.ts=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82?= =?UTF-8?q?=20=20=20=E2=94=82=20=20=20=20=20=20=20-=20Fix:=20Hapus=20neste?= =?UTF-8?q?d=20data=20wrapper=20pada=20payload=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20=20=20?= =?UTF-8?q?-=20Improvement:=20Tambahkan=20error=20logging=20detail=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=202.=20Uncaught?= =?UTF-8?q?=20Promise=20Errors=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20=20=20-=20File:=20?= =?UTF-8?q?components/Notification/NotificationInitializer.tsx=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20?= =?UTF-8?q?=20=20=E2=94=82=20=20=20=20=20=20=20-=20Fix:=20Better=20error?= =?UTF-8?q?=20handling=20untuk=20device=20token=20registration=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20?= =?UTF-8?q?=20=E2=94=82=20=20=20=20=20=20=20-=20File:=20app/(application)/?= =?UTF-8?q?(user)/home.tsx=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20=20=20-=20Fix:?= =?UTF-8?q?=20Add=20.catch()=20untuk=20userData()=20dan=20error=20handling?= =?UTF-8?q?=20apiUser()=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20=20=20-=20File:=20app?= =?UTF-8?q?/(application)/(user)/profile/[id]/index.tsx=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20=20=20-=20Fix:=20Add?= =?UTF-8?q?=20error=20handling=20untuk=20apiProfile(),=20apiUser(),=20user?= =?UTF-8?q?Data()=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=203.=20U?= =?UTF-8?q?I=20Improvements=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20?= =?UTF-8?q?=20=20=20-=20File:=20app/(application)/(user)/home.tsx=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=20=20=20=20-=20Feature:=204=20skeleton=20lin?= =?UTF-8?q?gkaran=20untuk=20loading=20state=20grid=20features=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=204.=20Maps=20Migrat?= =?UTF-8?q?ion=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20=20=20=20-?= =?UTF-8?q?=20File:=20app/(application)/admin/maps.tsx=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=20=20=20=20-=20Change:=20Replace=20react-nat?= =?UTF-8?q?ive-maps=20dengan=20MapsV2Custom=20(Maplibre)=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Cleanup:=20Hapus=20unused=20imports=20dan=20interf?= =?UTF-8?q?aces=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20Files=20M?= =?UTF-8?q?odified=20(7)=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20?= =?UTF-8?q?-=20app/(application)/(user)/home.tsx=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=E2=94=82=20=20=20=20-=20app/(application)/(u?= =?UTF-8?q?ser)/profile/[id]/index.tsx=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20-=20app/(application)?= =?UTF-8?q?/admin/maps.tsx=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82?= =?UTF-8?q?=20=20=20=20-=20components/Notification/NotificationInitializer?= =?UTF-8?q?.tsx=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20?= =?UTF-8?q?=20=20=20-=20service/api-device-token.ts=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20-=20const?= =?UTF-8?q?ants/constans-value.ts=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=E2=94=82=20=20=20=E2=94=82=20=20=20=20-=20screens/Home/bottomF?= =?UTF-8?q?eatureSection.tsx=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=E2=94=82=20=20=20=E2=94=82=20=20=20=20?= =?UTF-8?q?-=20screens/UserSeach/MainView=5FV2.tsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### No Issue --- app/(application)/(user)/home.tsx | 35 +++++- .../(user)/profile/[id]/index.tsx | 49 ++++++-- app/(application)/admin/maps.tsx | 110 ++++-------------- constants/constans-value.ts | 2 +- .../project.pbxproj | 36 ++++++ screens/Home/bottomFeatureSection.tsx | 38 +----- screens/UserSeach/MainView_V2.tsx | 4 +- 7 files changed, 139 insertions(+), 135 deletions(-) diff --git a/app/(application)/(user)/home.tsx b/app/(application)/(user)/home.tsx index 9d29187..b6c5996 100644 --- a/app/(application)/(user)/home.tsx +++ b/app/(application)/(user)/home.tsx @@ -12,23 +12,26 @@ import Home_ImageSection from "@/screens/Home/imageSection"; import TabSection from "@/screens/Home/tabSection"; import { tabsHome } from "@/screens/Home/tabsList"; import Home_FeatureSection from "@/screens/Home/topFeatureSection"; +import { apiJobGetAll } from "@/service/api-client/api-job"; import { apiUser } from "@/service/api-client/api-user"; import { apiVersion } from "@/service/api-config"; import { GStyles } from "@/styles/global-styles"; import { Ionicons } from "@expo/vector-icons"; import { Redirect, router, Stack, useFocusEffect } from "expo-router"; import { useCallback, useState } from "react"; -import { RefreshControl, TouchableOpacity, View } from "react-native"; +import { RefreshControl, View } from "react-native"; export default function Application() { const { token, user, userData } = useAuth(); const [data, setData] = useState(); const [refreshing, setRefreshing] = useState(false); const { syncUnreadCount } = useNotificationStore(); + const [listData, setListData] = useState(null); useFocusEffect( useCallback(() => { onLoadData(); + onLoadDataJob(); checkVersion(); userData(token as string).catch((error) => { console.log("[ERROR userData]", error?.message); @@ -50,6 +53,29 @@ export default function Application() { } } + const onLoadDataJob = async () => { + try { + const response = await apiJobGetAll({ + category: "beranda", + }); + const result = response.data + .sort( + (a: any, b: any) => + new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() + ) + .slice(0, 2); + setListData(result); + } catch (error) { + console.log("[ERROR]", error); + } + }; + + useFocusEffect( + useCallback(() => { + onLoadData(); + }, []) + ); + const checkVersion = async () => { try { const response = await apiVersion(); @@ -62,12 +88,13 @@ export default function Application() { const onRefresh = useCallback(() => { setRefreshing(true); onLoadData(); + onLoadDataJob(); checkVersion(); setRefreshing(false); }, []); if (data && data?.active === false) { - console.log("User is not active"); + console.warn("User is not active"); return ( @@ -76,7 +103,7 @@ export default function Application() { } if (data && data?.Profile === null) { - console.log("Profile is null"); + console.warn("Profile is null"); return ( @@ -170,7 +197,7 @@ export default function Application() { )} {data ? ( - + ) : ( )} diff --git a/app/(application)/(user)/profile/[id]/index.tsx b/app/(application)/(user)/profile/[id]/index.tsx index a7eda85..06c3339 100644 --- a/app/(application)/(user)/profile/[id]/index.tsx +++ b/app/(application)/(user)/profile/[id]/index.tsx @@ -1,7 +1,6 @@ /* eslint-disable react-hooks/exhaustive-deps */ -import { LoaderCustom, StackCustom } from "@/components"; +import { NewWrapper, StackCustom } from "@/components"; import CustomSkeleton from "@/components/_ShareComponent/SkeletonCustom"; -import ViewWrapper from "@/components/_ShareComponent/ViewWrapper"; import LeftButtonCustom from "@/components/Button/BackButton"; import DrawerCustom from "@/components/Drawer/DrawerCustom"; import { MainColor } from "@/constants/color-palet"; @@ -17,8 +16,8 @@ import { GStyles } from "@/styles/global-styles"; import { IProfile } from "@/types/Type-Profile"; import { Ionicons } from "@expo/vector-icons"; import { Stack, useFocusEffect, useLocalSearchParams } from "expo-router"; -import React, { useCallback, useState } from "react"; -import { TouchableOpacity } from "react-native"; +import { useCallback, useState } from "react"; +import { RefreshControl, TouchableOpacity } from "react-native"; export default function Profile() { const { id } = useLocalSearchParams(); @@ -26,6 +25,7 @@ export default function Profile() { const [data, setData] = useState(); const [dataToken, setDataToken] = useState(); const [listPortofolio, setListPortofolio] = useState(); + const [refreshing, setRefreshing] = useState(false); const { token, logout, isAdmin, user, userData } = useAuth(); @@ -55,13 +55,21 @@ export default function Profile() { }; const onLoadData = async (id: string) => { - const response = await apiProfile({ id: id }); - setData(response.data); + try { + const response = await apiProfile({ id: id }); + setData(response.data); + } catch (error) { + console.log("[ERROR onLoadData]", error); + } }; const onLoadUserByToken = async () => { - const response = await apiUser(user?.id as string); - setDataToken(response?.data?.Profile); + try { + const response = await apiUser(user?.id as string); + setDataToken(response?.data?.Profile); + } catch (error) { + console.log("[ERROR onLoadUserByToken]", error); + } }; const onLoadPortofolio = async (id: string) => { @@ -75,10 +83,20 @@ export default function Profile() { .slice(0, 2); setListPortofolio(lastTwoByDate); } catch (error) { - console.log("[ERROR]", error); + console.log("[ERROR onLoadPortofolio]", error); } }; + const onRefresh = useCallback(() => { + setRefreshing(true); + onLoadData(id as string); + onLoadPortofolio(id as string); + onLoadUserByToken(); + isUserCheck(); + userData(token as string); + setRefreshing(false); + }, [id, token]); + return ( <> {/* Main View */} - + + } + > {!data || !dataToken ? ( @@ -114,7 +141,7 @@ export default function Profile() { /> )} - + {/* Drawer Komponen Eksternal */} (null); const [loadList, setLoadList] = useState(false); @@ -72,74 +54,30 @@ export default function AdminMaps() { } }; + const markers: MapMarker[] = list?.map((item) => ({ + id: item.id, + coordinate: [item.longitude, item.latitude] as [number, number], + imageId: item.Portofolio?.logoId, + onSelected: () => { + setOpenDrawer(true); + setSelected({ + id: item?.id, + bidangBisnis: item?.Portofolio?.MasterBidangBisnis?.name, + nomorTelepon: item?.Portofolio?.tlpn, + alamatBisnis: item?.Portofolio?.alamatKantor, + namePin: item?.namePin, + imageId: item?.imageId, + portofolioId: item?.Portofolio?.id, + latitude: item?.latitude, + longitude: item?.longitude, + }); + }, + })) || []; + return ( <> - {/* */} - - {loadList ? ( - - ) : ( - - {list?.map((item: any, index: number) => { - return ( - { - setOpenDrawer(true); - setSelected({ - id: item?.id, - bidangBisnis: - item?.Portofolio?.MasterBidangBisnis?.name, - nomorTelepon: item?.Portofolio?.tlpn, - alamatBisnis: item?.Portofolio?.alamatKantor, - namePin: item?.namePin, - imageId: item?.imageId, - portofolioId: item?.Portofolio?.id, - latitude: item?.latitude, - longitude: item?.longitude, - }); - }} - // Gunakan gambar kustom jika tersedia - > - - - - - ); - })} - - )} - + setOpenDrawer(false)} height={"auto"} > - + {selected.imageId && ( + + )} (null); - - const onLoadData = async () => { - try { - const response = await apiJobGetAll({ - category: "beranda", - }); - - console.log("[DATA JOB]", JSON.stringify(response.data, null, 2)); - const result = response.data - .sort( - (a: any, b: any) => - new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() - ) - .slice(0, 2); - setListData(result); - } catch (error) { - console.log("[ERROR]", error); - } - }; - - useFocusEffect( - useCallback(() => { - onLoadData(); - }, []) - ); +export default function Home_BottomFeatureSection({ + listData, +}: { + listData: any[] | null; +}) { return ( <> router.push("/job")}> diff --git a/screens/UserSeach/MainView_V2.tsx b/screens/UserSeach/MainView_V2.tsx index 0be71d8..9632072 100644 --- a/screens/UserSeach/MainView_V2.tsx +++ b/screens/UserSeach/MainView_V2.tsx @@ -139,8 +139,8 @@ export default function UserSearchMainView_V2() { searchQuery: search, emptyMessage: "Tidak ada pengguna ditemukan", emptySearchMessage: "Tidak ada hasil pencarian", - skeletonCount: 5, - skeletonHeight: 150, + skeletonCount: PAGINATION_DEFAULT_TAKE, + skeletonHeight: 100, loadingFooterText: "Memuat lebih banyak pengguna...", isInitialLoad, });