upd: fitur homee

Deskripsi:
- tampilan fitur berdasarkan role user login

No Issues;
This commit is contained in:
amel
2025-04-28 17:27:04 +08:00
parent a253adca35
commit c504d184b9
2 changed files with 39 additions and 6 deletions

View File

@@ -1,11 +1,27 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import ButtonBackHeader from "@/components/buttonBackHeader";
import { ButtonFiturMenu } from "@/components/buttonFiturMenu"; import { ButtonFiturMenu } from "@/components/buttonFiturMenu";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
import { apiGetProfile } from "@/lib/api";
import { useAuthSession } from "@/providers/AuthProvider";
import { AntDesign, Entypo, Ionicons, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons"; import { AntDesign, Entypo, Ionicons, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons";
import { router, Stack } from "expo-router"; import { router, Stack } from "expo-router";
import { useEffect, useState } from "react";
import { SafeAreaView, View } from "react-native"; import { SafeAreaView, View } from "react-native";
export default function Feature() { export default function Feature() {
const { token, decryptToken } = useAuthSession()
const [roleUser, setRoleUser] = useState('user')
async function handleUserLogin() {
const hasil = await decryptToken(String(token?.current))
const respons = await apiGetProfile({ id: hasil })
setRoleUser(respons.data.idUserRole)
}
useEffect(() => {
handleUserLogin()
})
return ( return (
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
@@ -22,15 +38,26 @@ export default function Feature() {
<ButtonFiturMenu icon={<MaterialIcons name="campaign" size={35} color="black" />} text="Pengumuman" onPress={() => { router.push('/announcement') }} /> <ButtonFiturMenu icon={<MaterialIcons name="campaign" size={35} color="black" />} text="Pengumuman" onPress={() => { router.push('/announcement') }} />
<ButtonFiturMenu icon={<Ionicons name="chatbubbles-sharp" size={35} color="black" />} text="Diskusi" onPress={() => { router.push('/discussion?active=true') }} /> <ButtonFiturMenu icon={<Ionicons name="chatbubbles-sharp" size={35} color="black" />} text="Diskusi" onPress={() => { router.push('/discussion?active=true') }} />
</View> </View>
<View style={[Styles.rowSpaceBetween, Styles.mb15]}> <View style={[Styles.rowSpaceBetween, Styles.mb15, (roleUser != 'supadmin' && roleUser != 'developer' && roleUser != 'cosupadmin' && Styles.w40)]}>
<ButtonFiturMenu icon={<MaterialIcons name="groups" size={35} color="black" />} text="Anggota" onPress={() => { router.push('/member?active=true') }} /> <ButtonFiturMenu icon={<MaterialIcons name="groups" size={35} color="black" />} text="Anggota" onPress={() => { router.push('/member?active=true') }} />
<ButtonFiturMenu icon={<MaterialCommunityIcons name="account-tie" size={35} color="black" />} text="Jabatan" onPress={() => { router.push('/position?active=true') }} /> <ButtonFiturMenu icon={<MaterialCommunityIcons name="account-tie" size={35} color="black" />} text="Jabatan" onPress={() => { router.push('/position?active=true') }} />
<ButtonFiturMenu icon={<AntDesign name="tags" size={35} color="black" />} text="Lembaga Desa" onPress={() => { router.push('/group?active=true') }} /> {
<ButtonFiturMenu icon={<Ionicons name="color-palette-sharp" size={35} color="black" />} text="Tema" onPress={() => { }} /> roleUser == "cosupadmin" && <ButtonFiturMenu icon={<Entypo name="image-inverted" size={35} color="black" />} text="Banner" onPress={() => { router.push('/banner') }} />
</View> }
<View style={[Styles.rowSpaceBetween, Styles.mb15]}> {
<ButtonFiturMenu icon={<Entypo name="image-inverted" size={35} color="black" />} text="Banner" onPress={() => { router.push('/banner') }} /> (roleUser == "supadmin" || roleUser == "developer") &&
<>
<ButtonFiturMenu icon={<AntDesign name="tags" size={35} color="black" />} text="Lembaga Desa" onPress={() => { router.push('/group?active=true') }} />
<ButtonFiturMenu icon={<Ionicons name="color-palette-sharp" size={35} color="black" />} text="Tema" onPress={() => { }} />
</>
}
</View> </View>
{
(roleUser == "supadmin" || roleUser == "developer") &&
<View style={[Styles.rowSpaceBetween, Styles.mb15]}>
<ButtonFiturMenu icon={<Entypo name="image-inverted" size={35} color="black" />} text="Banner" onPress={() => { router.push('/banner') }} />
</View>
}
</View> </View>
</SafeAreaView> </SafeAreaView>
) )

View File

@@ -173,6 +173,12 @@ const Styles = StyleSheet.create({
w50: { w50: {
width: '50%' width: '50%'
}, },
w40: {
width: '40%'
},
w30: {
width: '30%'
},
round30: { round30: {
borderRadius: 30 borderRadius: 30
}, },