Properly hide admin button when user is not admin (#1465)

This commit is contained in:
Zoe Roux 2026-04-18 18:01:08 +02:00 committed by GitHub
parent 6018808e46
commit 4d1ff67cd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 12 deletions

View File

@ -2,6 +2,7 @@ import { Slot } from "expo-router";
import { NativeTabs } from "expo-router/unstable-native-tabs";
import { useTranslation } from "react-i18next";
import { Platform } from "react-native";
import { useAccount } from "~/providers/account-context";
export const unstable_settings = {
initialRouteName: "index",
@ -9,6 +10,7 @@ export const unstable_settings = {
export default function TabsLayout() {
const { t } = useTranslation();
const account = useAccount();
if (Platform.OS === "web") return <Slot />;
@ -39,7 +41,7 @@ export default function TabsLayout() {
{t("navbar.profile")}
</NativeTabs.Trigger.Label>
</NativeTabs.Trigger>
<NativeTabs.Trigger name="admin">
<NativeTabs.Trigger name="admin" hidden={!account?.isAdmin}>
<NativeTabs.Trigger.Icon
sf={{ default: "person.3", selected: "person.3.fill" }}
md="admin_panel_settings"

View File

@ -58,9 +58,6 @@ export default function AdminTabsLayout() {
tabBarStyle: {
backgroundColor: accent as string,
borderBottomColor: borderColor as string,
borderBottomWidth: 1,
elevation: 0,
shadowOpacity: 0,
},
tabBarIndicatorStyle: {
backgroundColor: activeColor as string,

View File

@ -51,6 +51,7 @@ import { cn, useQueryState } from "~/utils";
export const NavbarLeft = () => {
const { t } = useTranslation();
const account = useAccount();
if (Platform.OS !== "web") return <NavbarTitle />;
@ -63,14 +64,16 @@ export const NavbarLeft = () => {
label={t("navbar.profile")}
icon={Person}
/>
<Menu Trigger={NavbarLink} label={t("navbar.admin")} icon={Admin}>
<Menu.Item
label={t("admin.unmatched.label")}
icon={Search}
href="/admin/unmatched"
/>
<Menu.Item label="Users" icon={Admin} href="/admin/users" />
</Menu>
{account?.isAdmin && (
<Menu Trigger={NavbarLink} label={t("navbar.admin")} icon={Admin}>
<Menu.Item
label={t("admin.unmatched.label")}
icon={Search}
href="/admin/unmatched"
/>
<Menu.Item label="Users" icon={Admin} href="/admin/users" />
</Menu>
)}
</View>
);
};