🎉 feat: initialization
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Affiliate from "@/sections/user/affiliate";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/affiliate")({
|
||||
component: Affiliate,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Announcement from "@/sections/user/announcement/index";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/announcement")({
|
||||
component: Announcement,
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
|
||||
import Dashboard from "@/sections/user/dashboard";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/dashboard")({
|
||||
component: Dashboard,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Document from "@/sections/user/document";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/document")({
|
||||
component: Document,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Order from "@/sections/user/order";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/order")({
|
||||
component: Order,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Profile from "@/sections/user/profile";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/profile")({
|
||||
component: Profile,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import UserLayout from "@/sections/user/layout";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)")({
|
||||
component: UserLayout,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Subscribe from "@/sections/subscribe";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/subscribe")({
|
||||
component: Subscribe,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Ticket from "@/sections/user/ticket";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/ticket")({
|
||||
component: Ticket,
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
|
||||
import Wallet from "@/sections/user/wallet";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/(user)/wallet")({
|
||||
component: Wallet,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Main from "@/sections/main";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/")({
|
||||
component: Main,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Payment from "@/sections/user/payment";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/payment")({
|
||||
component: Payment,
|
||||
});
|
||||
@@ -0,0 +1,21 @@
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import { Markdown } from "@workspace/ui/composed/markdown";
|
||||
import { getPrivacyPolicy } from "@workspace/ui/services/common/common";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/privacy-policy")({
|
||||
component: () => {
|
||||
const { data = "" } = useQuery({
|
||||
queryKey: ["tos"],
|
||||
queryFn: async () => {
|
||||
const { data } = await getPrivacyPolicy();
|
||||
return data.data?.privacy_policy;
|
||||
},
|
||||
});
|
||||
return (
|
||||
<div className="container py-8">
|
||||
<Markdown>{data}</Markdown>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Purchasing from "@/sections/purchasing";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/purchasing/")({
|
||||
component: Purchasing,
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Order from "@/sections/purchasing/order";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/purchasing/order/")({
|
||||
component: Order,
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { z } from "zod";
|
||||
|
||||
const searchSchema = z.object({
|
||||
order_no: z.string().optional(),
|
||||
});
|
||||
|
||||
export const Route = createFileRoute("/(main)/purchasing/order/")({
|
||||
validateSearch: searchSchema,
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
import { createLazyFileRoute, Outlet } from "@tanstack/react-router";
|
||||
import Footer from "@/layout/footer";
|
||||
import Header from "@/layout/header";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)")({
|
||||
component: () => (
|
||||
<>
|
||||
<Header />
|
||||
<Outlet />
|
||||
<Footer />
|
||||
</>
|
||||
),
|
||||
});
|
||||
@@ -0,0 +1,21 @@
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import { Markdown } from "@workspace/ui/composed/markdown";
|
||||
import { getTos } from "@workspace/ui/services/common/common";
|
||||
|
||||
export const Route = createLazyFileRoute("/(main)/tos")({
|
||||
component: () => {
|
||||
const { data = "" } = useQuery({
|
||||
queryKey: ["tos"],
|
||||
queryFn: async () => {
|
||||
const { data } = await getTos();
|
||||
return data.data?.tos_content;
|
||||
},
|
||||
});
|
||||
return (
|
||||
<div className="container py-8">
|
||||
<Markdown>{data}</Markdown>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,79 @@
|
||||
import { TanStackDevtools } from "@tanstack/react-devtools";
|
||||
import { createRootRouteWithContext, Outlet } from "@tanstack/react-router";
|
||||
import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools";
|
||||
import { Toaster } from "@workspace/ui/components/sonner";
|
||||
import { NavigationProgress } from "@workspace/ui/composed/navigation-progress";
|
||||
import { TanStackQueryDevtools } from "@workspace/ui/integrations/tanstack-query-devtools";
|
||||
import { getCookie } from "@workspace/ui/lib/cookies";
|
||||
import { getGlobalConfig } from "@workspace/ui/services/common/common";
|
||||
import { isBrowser } from "@workspace/ui/utils/index";
|
||||
import { useEffect } from "react";
|
||||
import { Helmet, HelmetProvider } from "react-helmet-async";
|
||||
import { useGlobalStore } from "@/stores/global";
|
||||
|
||||
export const Route = createRootRouteWithContext()({
|
||||
component: () => {
|
||||
const { common, setCommon, getUserInfo } = useGlobalStore();
|
||||
useEffect(() => {
|
||||
const initializeApp = async () => {
|
||||
try {
|
||||
const configResponse = await getGlobalConfig();
|
||||
if (configResponse.data?.data) {
|
||||
setCommon(configResponse.data.data);
|
||||
}
|
||||
try {
|
||||
if (getCookie("Authorization")) {
|
||||
await getUserInfo();
|
||||
}
|
||||
} catch {
|
||||
/* empty */
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to initialize app:", error);
|
||||
}
|
||||
};
|
||||
|
||||
initializeApp();
|
||||
}, []);
|
||||
|
||||
const { site } = common;
|
||||
const title = site.site_name || "Loading...";
|
||||
const description = site.site_desc || "";
|
||||
const keywords = site.keywords || "";
|
||||
const logo = site.site_logo || "";
|
||||
const url = isBrowser() ? window.location.href : "";
|
||||
|
||||
return (
|
||||
<HelmetProvider>
|
||||
<Helmet>
|
||||
<title>{title}</title>
|
||||
<meta content={description} name="description" />
|
||||
<meta content={keywords} name="keywords" />
|
||||
<link href={url} rel="canonical" />
|
||||
<link href={logo} rel="icon" type="image/svg+xml" />
|
||||
<link href={logo} rel="apple-touch-icon" sizes="180x180" />
|
||||
<link href="/site.webmanifest" rel="manifest" />
|
||||
</Helmet>
|
||||
<NavigationProgress />
|
||||
<Outlet />
|
||||
<Toaster closeButton richColors />
|
||||
<div
|
||||
dangerouslySetInnerHTML={{ __html: common?.site.custom_html || "" }}
|
||||
id="custom_html"
|
||||
/>
|
||||
<TanStackDevtools
|
||||
config={{
|
||||
position: "bottom-right",
|
||||
}}
|
||||
plugins={[
|
||||
{
|
||||
name: "Tanstack Router",
|
||||
render: <TanStackRouterDevtoolsPanel />,
|
||||
},
|
||||
TanStackQueryDevtools,
|
||||
]}
|
||||
/>
|
||||
</HelmetProvider>
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,6 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import Auth from "@/sections/auth";
|
||||
|
||||
export const Route = createLazyFileRoute("/auth/")({
|
||||
component: Auth,
|
||||
});
|
||||
@@ -0,0 +1,9 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import BindPage from "@/sections/bind";
|
||||
|
||||
export const Route = createLazyFileRoute("/bind/$platform")({
|
||||
component: () => {
|
||||
const { platform } = Route.useParams();
|
||||
return <BindPage platform={platform} />;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,9 @@
|
||||
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||
import OAuthPage from "@/sections/oauth";
|
||||
|
||||
export const Route = createLazyFileRoute("/oauth/$platform")({
|
||||
component: () => {
|
||||
const { platform } = Route.useParams();
|
||||
return <OAuthPage platform={platform} />;
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user