Fix admin build by wrapping search params in Suspense
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect, useState } from "react";
|
import { Suspense, useEffect, useState } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useSearchParams } from "next/navigation";
|
import { useSearchParams } from "next/navigation";
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ function ConfirmModal({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function AdminProductsPage() {
|
function AdminProductsPageInner() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const tab = searchParams.get("tab");
|
const tab = searchParams.get("tab");
|
||||||
const isDeletedTab = tab === "deleted";
|
const isDeletedTab = tab === "deleted";
|
||||||
@ -392,3 +392,11 @@ export default function AdminProductsPage() {
|
|||||||
</div>
|
</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";
|
"use client";
|
||||||
|
|
||||||
import { useParams, useRouter, useSearchParams } from "next/navigation";
|
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";
|
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 ─────────────────────────────────────────────────────────────
|
// ─── Main Page ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
export default function AdminReviewDetailPage() {
|
function AdminReviewDetailPageInner() {
|
||||||
const params = useParams<{ productId: string }>();
|
const params = useParams<{ productId: string }>();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const searchParams = useSearchParams();
|
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 Link from "next/link";
|
||||||
import { usePathname, useSearchParams } from "next/navigation";
|
import { usePathname, useSearchParams } from "next/navigation";
|
||||||
|
import { Suspense } from "react";
|
||||||
|
|
||||||
const adminProductSubmenu = [
|
const adminProductSubmenu = [
|
||||||
{ label: "All Product", href: "/admin/products" },
|
{ label: "All Product", href: "/admin/products" },
|
||||||
{ label: "Deleted", href: "/admin/products?tab=deleted" },
|
{ label: "Deleted", href: "/admin/products?tab=deleted" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export function AdminProductSubmenuNav() {
|
function AdminProductSubmenuNavInner() {
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const currentTab = searchParams.get("tab") ?? "";
|
const currentTab = searchParams.get("tab") ?? "";
|
||||||
@ -45,3 +46,11 @@ export function AdminProductSubmenuNav() {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function AdminProductSubmenuNav() {
|
||||||
|
return (
|
||||||
|
<Suspense fallback={null}>
|
||||||
|
<AdminProductSubmenuNavInner />
|
||||||
|
</Suspense>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user