From 3d1898f849172f140fcc8b1b0b775bda63810f97 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Mon, 9 Jun 2025 11:59:38 +0300 Subject: [PATCH] feat: loader --- src/app/actions.ts | 1 - src/app/page.tsx | 81 ++++++++++++++++++++++----------------- src/components/Loader.tsx | 10 +++++ 3 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 src/components/Loader.tsx diff --git a/src/app/actions.ts b/src/app/actions.ts index e4d18f5..af66f4b 100644 --- a/src/app/actions.ts +++ b/src/app/actions.ts @@ -23,7 +23,6 @@ async function getUrlApi(email: string) { await redis.set("inbound", JSON.stringify(inbound), "EX", 3600); const users: ClientSettings = JSON.parse(inbound.settings); const user = users.clients.find((user) => user.email === email); - console.log(user); if (!user) { throw new Error("User not found"); } diff --git a/src/app/page.tsx b/src/app/page.tsx index 909cc61..40151b7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,6 @@ "use client"; import { Block } from "@/components/Block"; +import { Loader } from "@/components/Loader"; import { Page } from "@/components/Page"; import { cn } from "@/utils/cn"; import { useRawInitData } from "@telegram-apps/sdk-react"; @@ -11,6 +12,7 @@ import { getUrl } from "./actions"; export default function Home() { const [url, setUrl] = useState(""); const [expiryTime, setExpiryTime] = useState(0); + const [isLoading, setIsLoading] = useState(true); const initData = useRawInitData(); const onCopyClick = async () => { if (!url.length) return; @@ -27,54 +29,61 @@ export default function Home() { const data = await getUrl(initData); setUrl(data.url); setExpiryTime(data.expiryTime); + setIsLoading(false); } catch (e) { console.error(e); } }; fetchData(); }, [initData]); + if (isLoading) return ; + return (
Nwaifu Proxy
- -
-
- - Скопировано - - -
- -
- Нажмите на QR, чтобы скопировать! -
- -
- Статус: - {expiryTime > Date.now() || expiryTime === 0 ? "Активна" : "Не Активна"} -
-
- Активна до: - - {expiryTime === 0 - ? "Всегда" - : expiryTime > Date.now() - ? new Date(expiryTime).toLocaleString("ru-RU") - : "Не Активна"} - -
-
+ {url && ( + <> + +
+
+ + Скопировано + + +
+ +
+ Нажмите на QR, чтобы скопировать! +
+ +
+ Статус: + {expiryTime > Date.now() || expiryTime === 0 ? "Активна" : "Не Активна"} +
+
+ Активна до: + + {expiryTime === 0 + ? "Всегда" + : expiryTime > Date.now() + ? new Date(expiryTime).toLocaleString("ru-RU") + : "Не Активна"} + +
+
+ + )}
); diff --git a/src/components/Loader.tsx b/src/components/Loader.tsx new file mode 100644 index 0000000..169e4be --- /dev/null +++ b/src/components/Loader.tsx @@ -0,0 +1,10 @@ +const Loader = () => { + return ( +
+
+ Loading... +
+ ); +}; + +export { Loader };