(() => {
- return mockShops.map((shop) => {
- const shopPlayers = mockPlayers.filter((player) => player.shopId === shop.id)
+ return shops.map((shop) => {
+ const shopPlayers = players.filter((player) => player.shopId === shop.id)
const playerIds = new Set(shopPlayers.map((player) => player.id))
- const services = mockServices.filter((service) => playerIds.has(service.playerId))
+ const shopServices = services.filter((service) => playerIds.has(service.playerId))
const minPrice =
- services.length > 0 ? Math.min(...services.map((service) => service.price)) : 0
+ shopServices.length > 0 ? Math.min(...shopServices.map((service) => service.price)) : 0
const unit =
- services.length > 0
- ? services.reduce((prev, curr) => (prev.price < curr.price ? prev : curr)).unit
+ shopServices.length > 0
+ ? shopServices.reduce((prev, curr) => (prev.price < curr.price ? prev : curr)).unit
: "局"
- const games = [...new Set(services.map((service) => service.gameName))]
+ const shopGames = [...new Set(shopServices.map((service) => service.gameName))]
const hasAvailable = shopPlayers.some((player) => player.status === "available")
return {
shop,
minPrice,
unit,
- games,
+ games: shopGames,
hasAvailable,
}
})
- }, [])
+ }, [players, services, shops])
const filteredPlayers = useMemo(() => {
- return mockPlayers.filter((player) => {
+ return players.filter((player) => {
if (searchQuery) {
const query = searchQuery.toLowerCase()
const matchName = player.user.nickname.toLowerCase().includes(query)
@@ -456,7 +462,7 @@ function SearchPageContent() {
return true
})
- }, [searchQuery, selectedGames, priceRange, onlyOnline, minRating])
+ }, [minRating, onlyOnline, players, priceRange, searchQuery, selectedGames])
const filteredShops = useMemo(() => {
return shopResultItems.filter((item) => {
@@ -559,6 +565,7 @@ function SearchPageContent() {
@@ -16,19 +22,17 @@ interface PageProps {
export default async function ShopPage({ params }: PageProps) {
const { id } = await params
- const shop = mockShops.find((s) => s.id === id)
+ const shop = getShopById(id)
if (!shop) {
notFound()
}
- const shopPlayers = mockPlayers.filter((p) => p.shopId === shop.id)
+ const shopPlayers = listPlayersByShop(shop.id)
const playerIds = shopPlayers.map((p) => p.id)
- const shopServices = mockServices.filter((s) => playerIds.includes(s.playerId))
- const shopReviews = mockReviews.filter((r) => playerIds.includes(r.toUserId))
- const isFavorited = mockFavorites.some(
- (f) => f.userId === "u1" && f.targetType === "shop" && f.targetId === shop.id,
- )
+ const shopServices = listServices().filter((s) => playerIds.includes(s.playerId))
+ const shopReviews = listReviews().filter((r) => playerIds.includes(r.toUserId))
+ const isFavorited = checkFavorited("u1", "shop", shop.id)
const sortedSections = [...shop.templateConfig.sections]
.filter((s) => s.enabled)
diff --git a/app/(main)/user/[id]/page.tsx b/app/(main)/user/[id]/page.tsx
index c582a74..612f58a 100644
--- a/app/(main)/user/[id]/page.tsx
+++ b/app/(main)/user/[id]/page.tsx
@@ -5,25 +5,31 @@ import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
import { Badge } from "@/components/ui/badge"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
-import { mockFavorites, mockPlayers, mockPosts, mockShops, mockUsers } from "@/lib/mock"
+import {
+ getUserById,
+ listFavoritesByUser,
+ listPlayers,
+ listPostsByAuthor,
+ listShops,
+} from "@/lib/api"
export default async function UserProfilePage({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params
- const user = mockUsers.find((u) => u.id === id)
+ const user = getUserById(id)
if (!user) {
notFound()
}
- const userPosts = mockPosts.filter((p) => p.author.id === user.id)
- const userFavorites = mockFavorites.filter((f) => f.userId === user.id)
+ const userPosts = listPostsByAuthor(user.id)
+ const userFavorites = listFavoritesByUser(user.id)
const favoritePlayers = userFavorites
.filter((f) => f.targetType === "player")
- .map((f) => mockPlayers.find((p) => p.id === f.targetId))
+ .map((f) => listPlayers().find((p) => p.id === f.targetId))
.filter((p): p is NonNullable => p != null)
const favoriteShops = userFavorites
.filter((f) => f.targetType === "shop")
- .map((f) => mockShops.find((s) => s.id === f.targetId))
+ .map((f) => listShops().find((s) => s.id === f.targetId))
.filter((s): s is NonNullable => s != null)
return (
diff --git a/app/(order)/order/new/page.tsx b/app/(order)/order/new/page.tsx
index d5b8855..3180d88 100644
--- a/app/(order)/order/new/page.tsx
+++ b/app/(order)/order/new/page.tsx
@@ -11,7 +11,7 @@ import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Separator } from "@/components/ui/separator"
import { Textarea } from "@/components/ui/textarea"
-import { mockPlayers, mockServices } from "@/lib/mock"
+import { getPlayerById, getServiceById } from "@/lib/api"
import { notifySuccess } from "@/lib/toast"
import { useRequireAuth } from "@/lib/use-require-auth"
import { useAuthStore } from "@/store/auth"
@@ -29,8 +29,8 @@ export default function NewOrderPage() {
const deductBalance = useWalletStore((state) => state.deductBalance)
const serviceId = searchParams.get("serviceId")
- const service = mockServices.find((s) => s.id === serviceId)
- const player = service ? mockPlayers.find((p) => p.id === service.playerId) : null
+ const service = serviceId ? getServiceById(serviceId) : undefined
+ const player = service ? getPlayerById(service.playerId) : undefined
const [quantity, setQuantity] = useState(1)
const [note, setNote] = useState("")
diff --git a/lib/api/disputes.ts b/lib/api/disputes.ts
index 5aee7ba..830e90c 100644
--- a/lib/api/disputes.ts
+++ b/lib/api/disputes.ts
@@ -1,9 +1,9 @@
-import { mockDisputes } from "@/lib/mock"
+import { useDisputeStore } from "@/store/disputes"
export function listDisputes() {
- return mockDisputes
+ return useDisputeStore.getState().disputes
}
export function getDisputeByOrderId(orderId: string) {
- return mockDisputes.find((dispute) => dispute.orderId === orderId)
+ return useDisputeStore.getState().disputes.find((dispute) => dispute.orderId === orderId)
}
diff --git a/lib/api/reviews.ts b/lib/api/reviews.ts
index c4da795..1716ffe 100644
--- a/lib/api/reviews.ts
+++ b/lib/api/reviews.ts
@@ -1,13 +1,13 @@
-import { mockReviews } from "@/lib/mock"
+import { useReviewStore } from "@/store/reviews"
export function listReviews() {
- return mockReviews
+ return useReviewStore.getState().reviews
}
export function listReviewsByOrder(orderId: string) {
- return mockReviews.filter((review) => review.orderId === orderId)
+ return useReviewStore.getState().reviews.filter((review) => review.orderId === orderId)
}
export function listReviewsByTargetUser(userId: string) {
- return mockReviews.filter((review) => review.toUserId === userId)
+ return useReviewStore.getState().reviews.filter((review) => review.toUserId === userId)
}
diff --git a/lib/api/transactions.ts b/lib/api/transactions.ts
index 195ead5..7ced12f 100644
--- a/lib/api/transactions.ts
+++ b/lib/api/transactions.ts
@@ -1,5 +1,5 @@
-import { mockTransactions } from "@/lib/mock"
+import { useWalletStore } from "@/store/wallet"
export function listTransactions() {
- return mockTransactions
+ return useWalletStore.getState().transactions
}