upd : banner

Deskripsi:
- home > ketika tidak ada data banner
- banner list > ketika tidak ada data banner

No Issues
This commit is contained in:
2025-08-22 12:00:23 +08:00
parent 1dc69b64d2
commit f5c29e86fa
2 changed files with 61 additions and 35 deletions

View File

@@ -5,6 +5,7 @@ import ButtonBackHeader from "@/components/buttonBackHeader"
import DrawerBottom from "@/components/drawerBottom" import DrawerBottom from "@/components/drawerBottom"
import MenuItemRow from "@/components/menuItemRow" import MenuItemRow from "@/components/menuItemRow"
import ModalLoading from "@/components/modalLoading" import ModalLoading from "@/components/modalLoading"
import Text from "@/components/Text"
import { ConstEnv } from "@/constants/ConstEnv" import { ConstEnv } from "@/constants/ConstEnv"
import Styles from "@/constants/Styles" import Styles from "@/constants/Styles"
import { apiDeleteBanner, apiGetBanner } from "@/lib/api" import { apiDeleteBanner, apiGetBanner } from "@/lib/api"
@@ -121,26 +122,36 @@ export default function BannerList() {
} }
style={[Styles.h100]} style={[Styles.h100]}
> >
<View style={[Styles.p15, Styles.mb100]}> {
{entities.map((index: any, key: number) => ( entities.length > 0
<BorderBottomItem ?
key={key} <View style={[Styles.p15, Styles.mb100]}>
onPress={() => { {entities.map((index: any, key: number) => (
setDataId(index.id) <BorderBottomItem
setSelectFile(index) key={key}
setModal(true) onPress={() => {
}} setDataId(index.id)
borderType="all" setSelectFile(index)
icon={ setModal(true)
<Image }}
source={{ uri: `${ConstEnv.url_storage}/files/${index.image}` }} borderType="all"
style={[Styles.imgListBanner]} icon={
<Image
source={{ uri: `${ConstEnv.url_storage}/files/${index.image}` }}
style={[Styles.imgListBanner]}
/>
}
title={index.title}
/> />
} ))}
title={index.title} </View>
/> :
))} <View style={[Styles.p15, Styles.mb100]}>
</View> <Text style={[Styles.textDefault, Styles.cGray, { textAlign: 'center' }]}>Tidak ada data</Text>
</View>
}
</ScrollView> </ScrollView>
<DrawerBottom animation="slide" isVisible={isModal} setVisible={() => setModal(false)} title="Menu"> <DrawerBottom animation="slide" isVisible={isModal} setVisible={() => setModal(false)} title="Menu">

View File

@@ -9,6 +9,7 @@ import { Dimensions, Image, View } from "react-native";
import { useSharedValue } from "react-native-reanimated"; import { useSharedValue } from "react-native-reanimated";
import Carousel, { ICarouselInstance } from "react-native-reanimated-carousel"; import Carousel, { ICarouselInstance } from "react-native-reanimated-carousel";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import Text from "../Text";
export default function CaraouselHome() { export default function CaraouselHome() {
const { decryptToken, token } = useAuthSession() const { decryptToken, token } = useAuthSession()
@@ -21,7 +22,13 @@ export default function CaraouselHome() {
async function handleBannerView() { async function handleBannerView() {
const hasil = await decryptToken(String(token?.current)) const hasil = await decryptToken(String(token?.current))
apiGetBanner({ user: hasil }).then((data) => dispatch(setEntities(data.data))) apiGetBanner({ user: hasil }).then((data) => {
if (data.data.length > 0) {
dispatch(setEntities(data.data))
} else {
dispatch(setEntities([]))
}
})
} }
async function handleUser() { async function handleUser() {
@@ -40,22 +47,30 @@ export default function CaraouselHome() {
return ( return (
<View style={[Styles.mv15]}> <View style={[Styles.mv15]}>
<Carousel {
ref={ref} entities.length > 0 ?
width={width} <Carousel
height={width / 2.5} ref={ref}
data={entities} width={width}
loop={true} height={width / 2.5}
autoPlay={true} data={entities}
autoPlayInterval={5000} loop={true}
onProgressChange={progress} autoPlay={true}
renderItem={({ index }) => ( autoPlayInterval={5000}
<Image onProgressChange={progress}
source={{ uri: `${ConstEnv.url_storage}/files/${entities[index].image}` }} renderItem={({ index }) => (
style={[Styles.caraoselContent]} <Image
source={{ uri: `${ConstEnv.url_storage}/files/${entities[index].image}` }}
style={[Styles.caraoselContent]}
/>
)}
/> />
)} :
/> <View style={[Styles.caraoselContent, { height: width / 2.5 }]}>
<Text style={[Styles.textDefault, Styles.cWhite, { textAlign: 'center' }]}>BANNER</Text>
</View>
}
</View> </View>
) )
} }