fix(pages): scope order views to the active role
This commit is contained in:
@@ -12,9 +12,17 @@ import { CheckCircle, Clock, DollarSign, ListOrdered, Star, TrendingUp, Users }
|
||||
import Link from "next/link"
|
||||
import { useEffect, useState } from "react"
|
||||
|
||||
function getOrderRole(role: "consumer" | "player" | "owner" | "admin") {
|
||||
if (role === "consumer" || role === "player" || role === "owner") {
|
||||
return role
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
export default function DashboardPage() {
|
||||
const { currentRole } = useAuthStore()
|
||||
const { currentRole, user } = useAuthStore()
|
||||
const isOwner = currentRole === "owner"
|
||||
const orderRole = getOrderRole(currentRole)
|
||||
|
||||
const [player, setPlayer] = useState<Player | null>(null)
|
||||
const [shop, setShop] = useState<Shop | null>(null)
|
||||
@@ -28,8 +36,8 @@ export default function DashboardPage() {
|
||||
Promise.all([listPlayers(), listShops(), listServices()])
|
||||
.then(([players, shops, services]) => {
|
||||
if (cancelled) return
|
||||
setPlayer(players[0] ?? null)
|
||||
setShop(shops[0] ?? null)
|
||||
setPlayer(players.find((item) => item.user.id === user?.id) ?? null)
|
||||
setShop(shops.find((item) => item.owner.id === user?.id) ?? null)
|
||||
setServices(services)
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -42,14 +50,19 @@ export default function DashboardPage() {
|
||||
return () => {
|
||||
cancelled = true
|
||||
}
|
||||
}, [])
|
||||
}, [user?.id])
|
||||
|
||||
useEffect(() => {
|
||||
let cancelled = false
|
||||
|
||||
void (async () => {
|
||||
try {
|
||||
const orders = await Promise.resolve(listOrders())
|
||||
if (!orderRole) {
|
||||
setOrders([])
|
||||
return
|
||||
}
|
||||
|
||||
const orders = await Promise.resolve(listOrders({ role: orderRole }))
|
||||
if (cancelled) return
|
||||
setOrders(orders)
|
||||
} catch {
|
||||
@@ -61,7 +74,7 @@ export default function DashboardPage() {
|
||||
return () => {
|
||||
cancelled = true
|
||||
}
|
||||
}, [])
|
||||
}, [orderRole])
|
||||
|
||||
const totalOrders = isOwner ? (shop?.totalOrders ?? 0) : (player?.totalOrders ?? 0)
|
||||
const rating = isOwner ? (shop?.rating ?? 0) : (player?.rating ?? 0)
|
||||
|
||||
Reference in New Issue
Block a user