fix: 🐛 Fixes for logged-out view

This commit is contained in:
Jesse Wierzbinski 2024-12-03 13:44:18 +01:00
parent f672ce5a69
commit caf4759d74
No known key found for this signature in database
3 changed files with 28 additions and 25 deletions

View file

@ -49,16 +49,26 @@
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuGroup> </DropdownMenuGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem @click="signOut()"> <DropdownMenuItem @click="signOut()" v-if="identity">
<LogOut /> <LogOut />
Log out Log out
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem :as="NuxtLink" href="/register" v-else>
<LogIn />
Register
</DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { BadgeCheck, ChevronsUpDown, LogOut, UserPlus } from "lucide-vue-next"; import {
BadgeCheck,
ChevronsUpDown,
LogOut,
UserPlus,
LogIn,
} from "lucide-vue-next";
import { toast } from "vue-sonner"; import { toast } from "vue-sonner";
import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar"; import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
import { import {
@ -71,6 +81,7 @@ import {
DropdownMenuTrigger, DropdownMenuTrigger,
} from "../ui/dropdown-menu"; } from "../ui/dropdown-menu";
import { SidebarMenuButton } from "../ui/sidebar"; import { SidebarMenuButton } from "../ui/sidebar";
import { NuxtLink } from "#components";
const appData = useAppData(); const appData = useAppData();

View file

@ -25,7 +25,9 @@
<SidebarGroup> <SidebarGroup>
<SidebarGroupLabel>Navigation</SidebarGroupLabel> <SidebarGroupLabel>Navigation</SidebarGroupLabel>
<SidebarMenu> <SidebarMenu>
<SidebarMenuItem v-for="item in data.other" :key="item.name"> <SidebarMenuItem v-for="item in data.other.filter(
i => i.requiresLogin ? !!identity : true,
)" :key="item.name">
<SidebarMenuButton as-child> <SidebarMenuButton as-child>
<NuxtLink :href="item.url"> <NuxtLink :href="item.url">
<component :is="item.icon" /> <component :is="item.icon" />
@ -35,11 +37,10 @@
</SidebarMenuItem> </SidebarMenuItem>
</SidebarMenu> </SidebarMenu>
</SidebarGroup> </SidebarGroup>
<SidebarGroup class="mt-auto"> <SidebarGroup v-if="identity" class="mt-auto">
<SidebarGroupLabel>More</SidebarGroupLabel> <SidebarGroupLabel>More</SidebarGroupLabel>
<SidebarMenu> <SidebarMenu>
<Collapsible v-for="item in data.navMain" :key="item.title" as-child <Collapsible v-for="item in data.navMain" :key="item.title" as-child class="group/collapsible">
class="group/collapsible">
<SidebarMenuItem> <SidebarMenuItem>
<CollapsibleTrigger as-child> <CollapsibleTrigger as-child>
<SidebarMenuButton :tooltip="item.title"> <SidebarMenuButton :tooltip="item.title">
@ -75,12 +76,12 @@
</SidebarMenuItem> </SidebarMenuItem>
<SidebarMenuItem class="flex flex-col gap-2"> <SidebarMenuItem class="flex flex-col gap-2">
<Button variant="default" size="lg" class="w-full group-data-[collapsible=icon]:px-4" <Button variant="default" size="lg" class="w-full group-data-[collapsible=icon]:px-4"
v-if="identity" v-if="identity" @click="useEvent('composer:open')">
@click="useEvent('composer:open')">
<Pen /> <Pen />
<span class="group-data-[collapsible=icon]:hidden">Compose</span> <span class="group-data-[collapsible=icon]:hidden">Compose</span>
</Button> </Button>
<Button variant="destructive" size="lg" class="w-full group-data-[collapsible=icon]:px-4" v-if="$pwa?.needRefresh" @click="$pwa?.updateServiceWorker(true)"> <Button variant="destructive" size="lg" class="w-full group-data-[collapsible=icon]:px-4"
v-if="$pwa?.needRefresh" @click="$pwa?.updateServiceWorker(true)">
<DownloadCloud /> <DownloadCloud />
<span class="group-data-[collapsible=icon]:hidden">Update</span> <span class="group-data-[collapsible=icon]:hidden">Update</span>
</Button> </Button>
@ -93,36 +94,22 @@
<script lang="ts" setup> <script lang="ts" setup>
import { import {
BadgeCheck,
BedSingle, BedSingle,
Bell, Bell,
ChevronRight, ChevronRight,
ChevronsUpDown,
DownloadCloud, DownloadCloud,
Globe, Globe,
House, House,
LogOut,
MapIcon, MapIcon,
Pen, Pen,
RefreshCcw,
Settings2, Settings2,
} from "lucide-vue-next"; } from "lucide-vue-next";
import { toast } from "vue-sonner"; import { Avatar, AvatarImage } from "~/components/ui/avatar";
import { Avatar, AvatarFallback, AvatarImage } from "~/components/ui/avatar";
import { import {
Collapsible, Collapsible,
CollapsibleContent, CollapsibleContent,
CollapsibleTrigger, CollapsibleTrigger,
} from "~/components/ui/collapsible"; } from "~/components/ui/collapsible";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "~/components/ui/dropdown-menu";
import { import {
Sidebar, Sidebar,
SidebarContent, SidebarContent,
@ -173,26 +160,31 @@ const data = {
name: "Home", name: "Home",
url: "/home", url: "/home",
icon: House, icon: House,
requiresLogin: true,
}, },
{ {
name: "Public", name: "Public",
url: "/public", url: "/public",
icon: MapIcon, icon: MapIcon,
requiresLogin: false,
}, },
{ {
name: "Local", name: "Local",
url: "/local", url: "/local",
icon: BedSingle, icon: BedSingle,
requiresLogin: false,
}, },
{ {
name: "Global", name: "Global",
url: "/global", url: "/global",
icon: Globe, icon: Globe,
requiresLogin: false,
}, },
{ {
name: "Notifications", name: "Notifications",
url: "/notifications", url: "/notifications",
icon: Bell, icon: Bell,
requiresLogin: true,
}, },
], ],
}; };

View file

@ -45,6 +45,6 @@ import RightSidebar from "./right-sidebar.vue";
<slot /> <slot />
</div> </div>
</SidebarInset> </SidebarInset>
<RightSidebar /> <RightSidebar v-if="identity" />
</SidebarProvider> </SidebarProvider>
</template> </template>