From 9d028a40f14786949175494dfabbb0d7a09bbf63 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 8 Dec 2024 00:32:02 +0300 Subject: [PATCH] Lies --- enshi/package-lock.json | 244 +++++++++++++++++- enshi/package.json | 2 +- enshi/src/App.tsx | 6 +- .../ArticleViewer/ArticleViewer.tsx | 80 +++++- enshi/src/Components/BlogBox/BlogBox.tsx | 25 ++ .../NavBar/NavigationMenu/NavigationMenu.tsx | 12 +- .../UserNicknameLink/UserNicknameLink.tsx | 33 +++ .../PostRedactor/PostRedactor.tsx | 3 +- .../SubmitChangesButton.tsx | 3 + .../RegisterPage/RegisterPage.tsx | 17 +- .../Pages/RandomPostsPage/RandomPostsPage.tsx | 61 +++-- .../Pages/UserBlogsPage/BlogBox/BlogBox.tsx | 21 -- .../src/Pages/UserBlogsPage/UserBlogsPage.tsx | 119 ++++++--- enshi/src/locale/en.ts | 14 + enshi/src/locale/ru.ts | 15 ++ enshi/src/utils/idnex.ts | 19 ++ enshi_back/db/go_queries/users_queries.sql.go | 11 + enshi_back/db/queries/users_queries.sql | 3 + enshi_back/routes/routesSetup.go | 7 + enshi_back/routes/userRoutes/getUser.go | 30 +++ 20 files changed, 625 insertions(+), 100 deletions(-) create mode 100644 enshi/src/Components/BlogBox/BlogBox.tsx create mode 100644 enshi/src/Components/UserNicknameLink/UserNicknameLink.tsx delete mode 100644 enshi/src/Pages/UserBlogsPage/BlogBox/BlogBox.tsx create mode 100644 enshi/src/utils/idnex.ts create mode 100644 enshi_back/routes/userRoutes/getUser.go diff --git a/enshi/package-lock.json b/enshi/package-lock.json index f4e7c72..2b04d15 100644 --- a/enshi/package-lock.json +++ b/enshi/package-lock.json @@ -8,7 +8,7 @@ "name": "enshi", "version": "0.0.0", "dependencies": { - "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-form": "^0.1.0", "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-navigation-menu": "^1.2.1", @@ -1233,6 +1233,42 @@ } } }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-dialog": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", + "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-arrow": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", @@ -1420,25 +1456,25 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", - "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", + "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.0", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-slot": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "2.6.0" }, "peerDependencies": { "@types/react": "*", @@ -1455,6 +1491,158 @@ } } }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-direction": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", @@ -2682,6 +2870,42 @@ } } }, + "node_modules/@radix-ui/themes/node_modules/@radix-ui/react-dialog": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", + "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/themes/node_modules/@radix-ui/react-navigation-menu": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.0.tgz", diff --git a/enshi/package.json b/enshi/package.json index 6cc8117..e00dff1 100644 --- a/enshi/package.json +++ b/enshi/package.json @@ -10,7 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-form": "^0.1.0", "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-navigation-menu": "^1.2.1", diff --git a/enshi/src/App.tsx b/enshi/src/App.tsx index b67896c..29bf349 100644 --- a/enshi/src/App.tsx +++ b/enshi/src/App.tsx @@ -1,4 +1,4 @@ -import { Theme } from "@radix-ui/themes"; +import { Theme, ThemePanel } from "@radix-ui/themes"; import "@radix-ui/themes/styles.css"; import { QueryClientProvider } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; @@ -17,8 +17,8 @@ export default function App() { - {/* */} - + + diff --git a/enshi/src/Components/ArticleViewer/ArticleViewer.tsx b/enshi/src/Components/ArticleViewer/ArticleViewer.tsx index 892920a..9cc5024 100644 --- a/enshi/src/Components/ArticleViewer/ArticleViewer.tsx +++ b/enshi/src/Components/ArticleViewer/ArticleViewer.tsx @@ -1,4 +1,14 @@ -import { Box, Container, Flex, Separator, Text } from "@radix-ui/themes"; +import * as Dialog from "@radix-ui/react-dialog"; +import { Cross2Icon } from "@radix-ui/react-icons"; +import { + Box, + Button, + Container, + Flex, + Select, + Separator, + Text, +} from "@radix-ui/themes"; import { useQuery } from "@tanstack/react-query"; import { Interweave } from "interweave"; import { useAtomValue } from "jotai"; @@ -27,6 +37,8 @@ export default function ArticleViewer(props: TArticleViewer) { return response.data; }, + gcTime: 0, + refetchOnMount: true, }); if (isPending) return ; @@ -40,14 +52,19 @@ export default function ArticleViewer(props: TArticleViewer) { {data.title} - + - + + + + + + + + + + + Add this post to blog + + + + + {`Add "${data.title}" to blog...`} + + + + + + + This + + + This is + updated blog + + + This another + + + + + + + +
+ + + +
+ + + +
+
+
diff --git a/enshi/src/Components/BlogBox/BlogBox.tsx b/enshi/src/Components/BlogBox/BlogBox.tsx new file mode 100644 index 0000000..ff5788a --- /dev/null +++ b/enshi/src/Components/BlogBox/BlogBox.tsx @@ -0,0 +1,25 @@ +import { Avatar, Card, Flex, Heading } from "@radix-ui/themes"; +import { useNavigate } from "react-router-dom"; +import UserNicknameLink from "../UserNicknameLink/UserNicknameLink"; + +type TBlogBox = { + title?: string; + blogId?: string; + userId: string; +}; + +export default function BlogBox(props: TBlogBox) { + const navigate = useNavigate(); + + return ( + navigate(``)}> + + {props?.title || "...No title..."} + + + + + + + ); +} diff --git a/enshi/src/Components/NavBar/NavigationMenu/NavigationMenu.tsx b/enshi/src/Components/NavBar/NavigationMenu/NavigationMenu.tsx index e82d496..56e8b9a 100644 --- a/enshi/src/Components/NavBar/NavigationMenu/NavigationMenu.tsx +++ b/enshi/src/Components/NavBar/NavigationMenu/NavigationMenu.tsx @@ -1,15 +1,19 @@ import * as NavigationMenu from "@radix-ui/react-navigation-menu"; -import { useThemeContext, Button, Heading } from "@radix-ui/themes"; -import { useNavigate, useLocation } from "react-router-dom"; +import { Button, Heading, useThemeContext } from "@radix-ui/themes"; +import { useTranslation } from "react-i18next"; +import { useLocation, useNavigate } from "react-router-dom"; export default function CustomNavigationMenu() { + + const {t} = useTranslation() + return (
- + - +
diff --git a/enshi/src/Components/UserNicknameLink/UserNicknameLink.tsx b/enshi/src/Components/UserNicknameLink/UserNicknameLink.tsx new file mode 100644 index 0000000..05091f5 --- /dev/null +++ b/enshi/src/Components/UserNicknameLink/UserNicknameLink.tsx @@ -0,0 +1,33 @@ +import { Skeleton, Text } from "@radix-ui/themes"; +import { useQuery } from "@tanstack/react-query"; +import { Link } from "react-router-dom"; +import { axiosLocalhost } from "../../api/axios/axios"; + +type TUserNicknameLink = { + userId: string; +}; + +export default function UserNicknameLink(props: TUserNicknameLink) { + const { data, isPending } = useQuery({ + queryKey: [`userLink${props.userId}`], + queryFn: async () => { + const response = await axiosLocalhost.get( + `/user/${props.userId || 0}` + ); + return response.data as string; + }, + }); + + if (isPending) + return ( + + @Nickname + + ); + + return ( + + @{data} + + ); +} diff --git a/enshi/src/Pages/LoginRegisterPage/PostRedactor/PostRedactor.tsx b/enshi/src/Pages/LoginRegisterPage/PostRedactor/PostRedactor.tsx index c7cafaa..50d1e9b 100644 --- a/enshi/src/Pages/LoginRegisterPage/PostRedactor/PostRedactor.tsx +++ b/enshi/src/Pages/LoginRegisterPage/PostRedactor/PostRedactor.tsx @@ -30,7 +30,8 @@ export default function PostRedactor() { return error; } }, - gcTime: Infinity, + gcTime: 0, + refetchOnMount: true }); return ( diff --git a/enshi/src/Pages/LoginRegisterPage/PostRedactor/SubmitChangesButton/SubmitChangesButton.tsx b/enshi/src/Pages/LoginRegisterPage/PostRedactor/SubmitChangesButton/SubmitChangesButton.tsx index 52cddc8..070448d 100644 --- a/enshi/src/Pages/LoginRegisterPage/PostRedactor/SubmitChangesButton/SubmitChangesButton.tsx +++ b/enshi/src/Pages/LoginRegisterPage/PostRedactor/SubmitChangesButton/SubmitChangesButton.tsx @@ -4,6 +4,7 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate, useParams } from "react-router-dom"; import { axiosLocalhost } from "../../../../api/axios/axios"; +import useToast from "../../../../hooks/useToast"; type TSubmitChangesButton = { className: string; @@ -15,6 +16,7 @@ export default function SubmitChangesButton(props: TSubmitChangesButton) { const { t } = useTranslation(); const [isDisabled, setIsDisabled] = useState(false); + const createToast = useToast(); const navigate = useNavigate(); const queryParams = useParams(); @@ -37,6 +39,7 @@ export default function SubmitChangesButton(props: TSubmitChangesButton) { setIsDisabled(false); }, onSuccess: () => { + createToast({title: "Post has been changed!"}) navigate("/"); }, }); diff --git a/enshi/src/Pages/LoginRegisterPage/RegisterPage/RegisterPage.tsx b/enshi/src/Pages/LoginRegisterPage/RegisterPage/RegisterPage.tsx index 787d581..4702221 100644 --- a/enshi/src/Pages/LoginRegisterPage/RegisterPage/RegisterPage.tsx +++ b/enshi/src/Pages/LoginRegisterPage/RegisterPage/RegisterPage.tsx @@ -5,7 +5,7 @@ import { useMutation } from "@tanstack/react-query"; import { useSetAtom } from "jotai"; import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { useNavigate } from "react-router-dom"; +import { Link, useNavigate } from "react-router-dom"; import { axiosLocalhost } from "../../../api/axios/axios"; import { userAtom } from "../../../AtomStore/AtomStore"; import UseCapsLock from "../../../hooks/useCapsLock"; @@ -244,6 +244,21 @@ export default function RegisterPage() { {t("submit")} + + + {t("alreadyRegistered")}{" "} + + {t("logIn")} + {" "} + {t("now")} + + + + {t("byPressingTheButton")}{" "} + + {t("termsOfService")}. + + ); diff --git a/enshi/src/Pages/RandomPostsPage/RandomPostsPage.tsx b/enshi/src/Pages/RandomPostsPage/RandomPostsPage.tsx index 764b601..605e04f 100644 --- a/enshi/src/Pages/RandomPostsPage/RandomPostsPage.tsx +++ b/enshi/src/Pages/RandomPostsPage/RandomPostsPage.tsx @@ -1,6 +1,7 @@ import * as ScrollArea from "@radix-ui/react-scroll-area"; -import { Container } from "@radix-ui/themes"; +import { Container, Flex, Heading, Separator } from "@radix-ui/themes"; import { useQuery } from "@tanstack/react-query"; +import { useTranslation } from "react-i18next"; import { GetRandomPostsRow } from "../../@types/PostTypes"; import { axiosLocalhost } from "../../api/axios/axios"; import PostCard from "./PostCard/PostCard"; @@ -8,6 +9,8 @@ import PostCard from "./PostCard/PostCard"; const LIMIT = 10; export default function RandomPostsPage() { + const {t} = useTranslation() + const { data, refetch } = useQuery({ queryKey: ["random_posts_key"], queryFn: async () => { @@ -27,30 +30,38 @@ export default function RandomPostsPage() { return ( <> - - - {data?.map((post, i) => { - return ( - - - - ); - })} - - - - - - - - - + + + {t("discover")} + + + + + + + {data?.map((post, i) => { + return ( + + + + ); + })} + + + + + {/* + + */} + {/* */} + + ); } diff --git a/enshi/src/Pages/UserBlogsPage/BlogBox/BlogBox.tsx b/enshi/src/Pages/UserBlogsPage/BlogBox/BlogBox.tsx deleted file mode 100644 index 4c62b4b..0000000 --- a/enshi/src/Pages/UserBlogsPage/BlogBox/BlogBox.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Card } from '@radix-ui/themes'; -import { useNavigate } from 'react-router-dom'; - -type TBlogBox = { - title?: string; - blogId?: string; -} - -export default function BlogBox(props: TBlogBox) { - - const navigate = useNavigate() - - return ( - navigate(``)} - > - {props?.title || "...No title..."} - {props?.blogId || "adqwwd"} - - ) -} diff --git a/enshi/src/Pages/UserBlogsPage/UserBlogsPage.tsx b/enshi/src/Pages/UserBlogsPage/UserBlogsPage.tsx index 1396ee4..599ae6d 100644 --- a/enshi/src/Pages/UserBlogsPage/UserBlogsPage.tsx +++ b/enshi/src/Pages/UserBlogsPage/UserBlogsPage.tsx @@ -1,32 +1,20 @@ -import { Box, Container, Flex } from "@radix-ui/themes"; +import * as Dialog from "@radix-ui/react-dialog"; +import { Cross2Icon, PlusIcon } from "@radix-ui/react-icons"; +import { + Box, + Button, + Container, + Flex, + Separator, + Text, +} from "@radix-ui/themes"; import { useQuery } from "@tanstack/react-query"; -import { useAtomValue } from "jotai"; -import { userAtom } from "../../AtomStore/AtomStore"; import { axiosLocalhost } from "../../api/axios/axios"; -import BlogBox from "./BlogBox/BlogBox"; +import BlogBox from "../../Components/BlogBox/BlogBox"; +import { JSONWithInt64 } from "../../utils/idnex"; import SkeletonBoxes from "./SkeletonBoxes/SkeletonBoxes"; export default function UserBlogsPage() { - const user = useAtomValue(userAtom); - - const isBigNumber = (num: any) => !Number.isSafeInteger(+num); - - const enquoteBigNumber = (jsonString: any, bigNumChecker: any) => - jsonString.replaceAll( - /([:\s\[,]*)(\d+)([\s,\]]*)/g, - (matchingSubstr: any, prefix: any, bigNum: any, suffix: any) => - bigNumChecker(bigNum) - ? `${prefix}"${bigNum}"${suffix}` - : matchingSubstr - ); - - const parseWithBigInt = (jsonString: any, bigNumChecker: any) => - JSON.parse(enquoteBigNumber(jsonString, bigNumChecker), (key, value) => - !isNaN(value) && bigNumChecker(value) - ? BigInt(value).toString() - : value - ); - const { data, isPending, isFetching } = useQuery({ queryKey: ["userBlogs"], queryFn: async () => { @@ -34,13 +22,13 @@ export default function UserBlogsPage() { transformResponse: [(data) => data], }); - let temp = parseWithBigInt(response.data, isBigNumber); + let temp = JSONWithInt64(response.data); return temp as any[]; }, }); - if (isFetching) + if (isPending) return ( @@ -51,17 +39,86 @@ export default function UserBlogsPage() { + + Your blogs + + + + {data ? data?.map((blog: any, b) => { return ( - + <> + + ); }) : null} + + + + + + + + + + Create blog + + + Create your new blog. + +
+ + +
+
+ +