Fix admin build by wrapping search params in Suspense
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect, useState } from "react";
|
||||
import { Suspense, useEffect, useState } from "react";
|
||||
import Link from "next/link";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
|
||||
@ -109,7 +109,7 @@ function ConfirmModal({
|
||||
);
|
||||
}
|
||||
|
||||
export default function AdminProductsPage() {
|
||||
function AdminProductsPageInner() {
|
||||
const searchParams = useSearchParams();
|
||||
const tab = searchParams.get("tab");
|
||||
const isDeletedTab = tab === "deleted";
|
||||
@ -392,3 +392,11 @@ export default function AdminProductsPage() {
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function AdminProductsPage() {
|
||||
return (
|
||||
<Suspense fallback={<div className="py-24 text-sm font-semibold text-on-surface-variant">Loading products...</div>}>
|
||||
<AdminProductsPageInner />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
|
||||
import { useParams, useRouter, useSearchParams } from "next/navigation";
|
||||
import { useEffect, useState } from "react";
|
||||
import { Suspense, useEffect, useState } from "react";
|
||||
|
||||
const API_BASE = process.env.NEXT_PUBLIC_API_URL || "https://be.inatrading.co.id";
|
||||
|
||||
@ -196,7 +196,7 @@ function ProductColumn({ product, label, accent }: { product: any; label: string
|
||||
|
||||
// ─── Main Page ─────────────────────────────────────────────────────────────
|
||||
|
||||
export default function AdminReviewDetailPage() {
|
||||
function AdminReviewDetailPageInner() {
|
||||
const params = useParams<{ productId: string }>();
|
||||
const router = useRouter();
|
||||
const searchParams = useSearchParams();
|
||||
@ -474,3 +474,11 @@ export default function AdminReviewDetailPage() {
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default function AdminReviewDetailPage() {
|
||||
return (
|
||||
<Suspense fallback={<div className="m-6 py-24 text-sm font-semibold text-slate-400">Loading review detail...</div>}>
|
||||
<AdminReviewDetailPageInner />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
@ -2,13 +2,14 @@
|
||||
|
||||
import Link from "next/link";
|
||||
import { usePathname, useSearchParams } from "next/navigation";
|
||||
import { Suspense } from "react";
|
||||
|
||||
const adminProductSubmenu = [
|
||||
{ label: "All Product", href: "/admin/products" },
|
||||
{ label: "Deleted", href: "/admin/products?tab=deleted" },
|
||||
];
|
||||
|
||||
export function AdminProductSubmenuNav() {
|
||||
function AdminProductSubmenuNavInner() {
|
||||
const pathname = usePathname();
|
||||
const searchParams = useSearchParams();
|
||||
const currentTab = searchParams.get("tab") ?? "";
|
||||
@ -45,3 +46,11 @@ export function AdminProductSubmenuNav() {
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function AdminProductSubmenuNav() {
|
||||
return (
|
||||
<Suspense fallback={null}>
|
||||
<AdminProductSubmenuNavInner />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user