│ │ │ 1. Device Token Registration Error (HTTP 500) │ │ - File: service/api-device-token.ts │ │ - Fix: Hapus nested data wrapper pada payload │ │ - Improvement: Tambahkan error logging detail │ │ │ │ 2. Uncaught Promise Errors │ │ - File: components/Notification/NotificationInitializer.tsx │ │ - Fix: Better error handling untuk device token registration │ │ - File: app/(application)/(user)/home.tsx │ │ - Fix: Add .catch() untuk userData() dan error handling apiUser() │ │ - File: app/(application)/(user)/profile/[id]/index.tsx │ │ - Fix: Add error handling untuk apiProfile(), apiUser(), userData() │ │ │ │ 3. UI Improvements │ │ - File: app/(application)/(user)/home.tsx │ │ - Feature: 4 skeleton lingkaran untuk loading state grid features │ │ │ │ 4. Maps Migration │ │ - File: app/(application)/admin/maps.tsx │ │ - Change: Replace react-native-maps dengan MapsV2Custom (Maplibre) │ │ - Cleanup: Hapus unused imports dan interfaces │ │ │ │ Files Modified (7) │ │ - app/(application)/(user)/home.tsx │ │ - app/(application)/(user)/profile/[id]/index.tsx │ │ - app/(application)/admin/maps.tsx │ │ - components/Notification/NotificationInitializer.tsx │ │ - service/api-device-token.ts │ │ - constants/constans-value.ts │ │ - screens/Home/bottomFeatureSection.tsx │ │ - screens/UserSeach/MainView_V2.tsx ### No Issue
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { ClickableCustom, TextCustom } from "@/components";
|
|
import Spacing from "@/components/_ShareComponent/Spacing";
|
|
import { router } from "expo-router";
|
|
import { View } from "react-native";
|
|
import Icon from "react-native-vector-icons/FontAwesome";
|
|
import { stylesHome } from "./homeViewStyle";
|
|
|
|
export default function Home_BottomFeatureSection({
|
|
listData,
|
|
}: {
|
|
listData: any[] | null;
|
|
}) {
|
|
return (
|
|
<>
|
|
<ClickableCustom onPress={() => router.push("/job")}>
|
|
<View style={stylesHome.jobVacancyContainer}>
|
|
<View style={stylesHome.jobVacancyHeader}>
|
|
<Icon name="briefcase" size={24} color="white" />
|
|
<Spacing width={10} />
|
|
<TextCustom bold size="large">
|
|
Job Vacancy
|
|
</TextCustom>
|
|
</View>
|
|
|
|
<View style={stylesHome.vacancyList}>
|
|
{/* Vacancy Item 1 */}
|
|
{listData?.map((item: any, index: number) => (
|
|
<View style={stylesHome.vacancyItem} key={index}>
|
|
<View style={stylesHome.vacancyDetails}>
|
|
<TextCustom bold color="yellow" truncate size="large">
|
|
{item.title}
|
|
</TextCustom>
|
|
<Spacing height={5} />
|
|
<TextCustom truncate={2}>{item.deskripsi}</TextCustom>
|
|
</View>
|
|
</View>
|
|
))}
|
|
</View>
|
|
</View>
|
|
</ClickableCustom>
|
|
</>
|
|
);
|
|
}
|