changes shopping
This commit is contained in:
1 parent
62ab5b2608
commit
f4bc93bc8a
17 files changed
+2290
-1025
No files matched your search
@@ -0,0 +1,56 @@
|
||||
import type { Metadata } from "next";
|
||||
import { cookies } from "next/headers";
|
||||
import { redirect } from "next/navigation";
|
||||
import Header from "@/components/Header";
|
||||
import { AdminItemCreatePage } from "@/components/admin/items/AdminItemCreatePage";
|
||||
import { getSession } from "@/lib/redis/session";
|
||||
import { getUserById } from "@/lib/prisma/queries/users";
|
||||
import { searchAdminItems } from "@/lib/prisma/queries/items";
|
||||
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
return {
|
||||
title: "Novo item | Painel Administrativo",
|
||||
description: "Cadastre um novo item unificado no catálogo administrativo.",
|
||||
};
|
||||
}
|
||||
|
||||
export default async function AdminNewItemPage({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string }>;
|
||||
}) {
|
||||
const { locale } = await params;
|
||||
|
||||
const cookieStore = await cookies();
|
||||
const sessionId = cookieStore.get("sessionId")?.value;
|
||||
|
||||
if (!sessionId) {
|
||||
redirect(`/${locale}`);
|
||||
}
|
||||
|
||||
const session = await getSession(sessionId);
|
||||
if (!session) {
|
||||
redirect(`/${locale}`);
|
||||
}
|
||||
|
||||
const adminUser = await getUserById(session.userId);
|
||||
if (!adminUser || adminUser.user_id !== 1) {
|
||||
redirect(`/${locale}`);
|
||||
}
|
||||
|
||||
const initialItems = await searchAdminItems({ page: 1, pageSize: 1 });
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-background">
|
||||
<Header />
|
||||
<main className="container mx-auto px-4 py-10">
|
||||
<AdminItemCreatePage
|
||||
locale={locale}
|
||||
categories={initialItems.categories ?? []}
|
||||
serverOptions={initialItems.servers ?? []}
|
||||
/>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ export default async function AdminPage({
|
||||
adminUser={adminUser}
|
||||
initialTiers={normalizedTiers}
|
||||
itemsData={initialItems}
|
||||
locale={locale}
|
||||
initialTab={initialTab}
|
||||
/>
|
||||
</main>
|
||||
|
||||
+26
-48
@@ -1,21 +1,9 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Geist, Geist_Mono, Nunito_Sans } from "next/font/google";
|
||||
import { NextIntlClientProvider } from "next-intl";
|
||||
import { getMessages } from "next-intl/server";
|
||||
import { getMessages, setRequestLocale } from "next-intl/server";
|
||||
import Script from "next/script";
|
||||
import { ThemeProvider } from "@/components/theme-provider";
|
||||
import { QueryProvider } from "@/lib/providers/query-provider";
|
||||
import "../globals.css";
|
||||
|
||||
const nunitoSans = Nunito_Sans({
|
||||
variable: "--font-nunito-sans",
|
||||
subsets: ["latin"],
|
||||
weight: ["200", "300", "400", "500", "600", "700", "800", "900"],
|
||||
});
|
||||
|
||||
const geistMono = Geist_Mono({
|
||||
variable: "--font-geist-mono",
|
||||
subsets: ["latin"],
|
||||
});
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
@@ -98,6 +86,13 @@ export async function generateMetadata({
|
||||
images: ["/og-image.png"],
|
||||
creator: "@tibiatrade",
|
||||
},
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: "/favicon.ico", type: "image/x-icon" },
|
||||
{ url: "/icon.svg", type: "image/svg+xml" },
|
||||
],
|
||||
apple: "/apple-touch-icon.png",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -109,40 +104,33 @@ export default async function LocaleLayout({
|
||||
params: Promise<{ locale: string }>;
|
||||
}) {
|
||||
const { locale } = await params;
|
||||
setRequestLocale(locale);
|
||||
const messages = await getMessages();
|
||||
|
||||
const baseUrl = "https://tibiatrade.evandro.dev.br";
|
||||
|
||||
return (
|
||||
<html lang={locale} suppressHydrationWarning>
|
||||
<head>
|
||||
<link rel="icon" href="/favicon.ico" sizes="any" />
|
||||
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
<QueryProvider>
|
||||
<NextIntlClientProvider messages={messages}>
|
||||
<ThemeProvider attribute="class" defaultTheme="dark">
|
||||
<Script id="structured-data-organization" type="application/ld+json" strategy="afterInteractive">
|
||||
{JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
name: "Tibia Trade",
|
||||
url: baseUrl,
|
||||
logo: `${baseUrl}/logo.png`,
|
||||
description:
|
||||
"Marketplace multi-servidor seguro para negociação de itens de Tibia",
|
||||
description: "Marketplace multi-servidor seguro para negociação de itens de Tibia",
|
||||
sameAs: ["https://discord.gg/tibiatrade"],
|
||||
contactPoint: {
|
||||
"@type": "ContactPoint",
|
||||
contactType: "Customer Support",
|
||||
availableLanguage: ["Portuguese", "English"],
|
||||
},
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
})}
|
||||
</Script>
|
||||
<Script id="structured-data-website" type="application/ld+json" strategy="afterInteractive">
|
||||
{JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
name: "Tibia Trade",
|
||||
@@ -155,21 +143,11 @@ export default async function LocaleLayout({
|
||||
},
|
||||
"query-input": "required name=search_term_string",
|
||||
},
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
</head>
|
||||
<body
|
||||
className={`${nunitoSans.variable} ${geistMono.variable} antialiased`}
|
||||
>
|
||||
<QueryProvider>
|
||||
<NextIntlClientProvider messages={messages}>
|
||||
<ThemeProvider attribute="class" defaultTheme="dark">
|
||||
{children}
|
||||
</ThemeProvider>
|
||||
</NextIntlClientProvider>
|
||||
</QueryProvider>
|
||||
</body>
|
||||
</html>
|
||||
})}
|
||||
</Script>
|
||||
<div data-locale={locale}>{children}</div>
|
||||
</ThemeProvider>
|
||||
</NextIntlClientProvider>
|
||||
</QueryProvider>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user