From 123fb33bc282cb538d2a5c5ba95ff9b57d2e6977 Mon Sep 17 00:00:00 2001 From: matthew Date: Sun, 9 Oct 2022 21:57:42 +0400 Subject: [PATCH] add state page --- .DS_Store | Bin 0 -> 6148 bytes .../ContextProviders/ContextProviders.tsx | 33 ++ .../components/ContextProviders/index.tsx | 1 + .../app/core/components/Footer/Footer.tsx | 5 +- .../core/components/Footer/styles.module.css | 18 +- .../app/core/components/Header/Header.tsx | 4 +- .../core/components/Header/styles.module.css | 37 +- .../app/core/components/Link/Link.tsx | 38 +++ .../app/core/components/Link/index.ts | 1 + .../core/components/Link/styles.module.css | 40 +++ .../components/SearchForm/styles.module.css | 3 +- .../ThemeSwitcher/ThemeSwitcher.tsx | 40 ++- .../ThemeSwitcher/styles.module.css | 320 ++---------------- .../components/TonBrilliant/TonBrillian.tsx | 4 +- .../components/TonBrilliant/styles.module.css | 7 +- .../components/WebsiteCard/styles.module.css | 5 +- .../serverSidePropsProvider.ts | 15 +- searching-front/app/core/darkTheme.css | 10 +- searching-front/app/core/helpers/common.ts | 2 + searching-front/app/core/helpers/metrika.ts | 2 + .../app/core/hooks/useCurrentTheme.ts | 13 +- .../app/core/layouts/Layout/index.tsx | 2 +- .../app/core/layouts/Layout/styles.module.css | 2 - searching-front/app/core/lightTheme.css | 10 +- .../Main/LastSitesWidget/LastSitesWidget.tsx | 51 +++ .../core/pages/Main/LastSitesWidget/index.tsx | 1 + .../Main/LastSitesWidget/styles.module.css | 170 ++++++++++ searching-front/app/core/pages/Main/Main.tsx | 10 +- .../app/core/pages/Main/styles.module.css | 4 +- .../app/core/pages/Search/styles.module.css | 8 +- .../app/core/pages/State/State.tsx | 75 ++-- .../app/core/pages/State/styles.module.css | 102 +++++- searching-front/app/core/variables.css | 2 + .../stateSites/queries/getLastWeekNewSites.ts | 16 + .../pages/auth/forgot-password.tsx | 46 --- searching-front/pages/auth/login.tsx | 21 -- searching-front/pages/auth/reset-password.tsx | 66 ---- searching-front/pages/auth/signup.tsx | 16 - searching-front/pages/index.tsx | 24 +- searching-front/pages/s.tsx | 14 +- searching-front/pages/state.tsx | 37 +- searching-front/public/favicon copy.ico | Bin 4286 -> 0 bytes searching-front/public/favicon.ico | Bin 4286 -> 0 bytes searching-front/public/logo copy.png | Bin 33469 -> 0 bytes searching-front/public/logo.png | Bin 33469 -> 0 bytes searching-front/services/main.ts | 16 +- .../services/modules/parser/index.ts | 3 +- searching-front/services/parser.ts | 5 + 48 files changed, 700 insertions(+), 599 deletions(-) create mode 100644 .DS_Store create mode 100644 searching-front/app/core/components/ContextProviders/ContextProviders.tsx create mode 100644 searching-front/app/core/components/ContextProviders/index.tsx create mode 100644 searching-front/app/core/components/Link/Link.tsx create mode 100644 searching-front/app/core/components/Link/index.ts create mode 100644 searching-front/app/core/components/Link/styles.module.css create mode 100644 searching-front/app/core/pages/Main/LastSitesWidget/LastSitesWidget.tsx create mode 100644 searching-front/app/core/pages/Main/LastSitesWidget/index.tsx create mode 100644 searching-front/app/core/pages/Main/LastSitesWidget/styles.module.css create mode 100644 searching-front/app/stateSites/queries/getLastWeekNewSites.ts delete mode 100644 searching-front/pages/auth/forgot-password.tsx delete mode 100644 searching-front/pages/auth/login.tsx delete mode 100644 searching-front/pages/auth/reset-password.tsx delete mode 100644 searching-front/pages/auth/signup.tsx delete mode 100644 searching-front/public/favicon copy.ico delete mode 100644 searching-front/public/favicon.ico delete mode 100644 searching-front/public/logo copy.png delete mode 100644 searching-front/public/logo.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6b92b830c7e4577c45ff414a995c42d7127c8440 GIT binary patch literal 6148 zcmeHKOG*P#5UkcL0xrzb<-33jZ!m=91i66XCkirwM6;fi=kjP)e-MU=;Kq$qLwCK` z)Ab%xi|J_qwtRoM0Tuw}bVq!6n3_L#pV(Ptj7aAh_jtw&dTen$sXm=>?j;U*#2xk{ z{uB2*p7nOz?EBYUzs*}tAET@kkOERb3P=Gd@Jj`}_tNGUiHcG{3P^!(1^oNa=#E|C zkQkp1h8O{eGp571j#+}(JVERVheT#*mQ-R=twsz>I`ggSy22qb>986;tZufNP%Lie z`7O#}U815CkOE@`&U3r){=cUGF#nH9+DQQ^@UIlG*=n;|@|CK$PF~J?ZKL1Pz2=kd q#&u8_q8$^X9dqOD_$rFBuKAkJyTTzc=*$P5sGkAXMJ5IQT7fSaO&2!+ literal 0 HcmV?d00001 diff --git a/searching-front/app/core/components/ContextProviders/ContextProviders.tsx b/searching-front/app/core/components/ContextProviders/ContextProviders.tsx new file mode 100644 index 0000000..1a57666 --- /dev/null +++ b/searching-front/app/core/components/ContextProviders/ContextProviders.tsx @@ -0,0 +1,33 @@ +import { + ServerSidePropsContext, + ContextParamsServer, +} from "app/core/contextProviders/serverSidePropsProvider" +import { ReactNode, useState } from "react" +import jsCookies from "js-cookie" + +interface Props { + children: ReactNode + contextParamsServer: ContextParamsServer +} + +type Theme = "light" | "dark" +const THEME_COOKIE_NAME = "theme" + +const ContextProviders = ({ children, contextParamsServer: { cookies } }: Props) => { + const [theme, setThemeState] = useState((cookies[THEME_COOKIE_NAME] as Theme) || 'dark') + const setTheme = (theme: Theme) => { + jsCookies.set(THEME_COOKIE_NAME, theme) + setThemeState(theme) + } + + const context = { + theme, + setTheme, + } + + return ( + {children} + ) +} + +export default ContextProviders diff --git a/searching-front/app/core/components/ContextProviders/index.tsx b/searching-front/app/core/components/ContextProviders/index.tsx new file mode 100644 index 0000000..46158b3 --- /dev/null +++ b/searching-front/app/core/components/ContextProviders/index.tsx @@ -0,0 +1 @@ +export {default} from './ContextProviders' \ No newline at end of file diff --git a/searching-front/app/core/components/Footer/Footer.tsx b/searching-front/app/core/components/Footer/Footer.tsx index 9db4f50..6303e2b 100644 --- a/searching-front/app/core/components/Footer/Footer.tsx +++ b/searching-front/app/core/components/Footer/Footer.tsx @@ -34,9 +34,8 @@ const Footer = () => { return (
- - - + +
) diff --git a/searching-front/app/core/components/Footer/styles.module.css b/searching-front/app/core/components/Footer/styles.module.css index 2df9fa4..5c0d18e 100644 --- a/searching-front/app/core/components/Footer/styles.module.css +++ b/searching-front/app/core/components/Footer/styles.module.css @@ -2,7 +2,8 @@ margin-top: 30px; box-sizing: border-box; display: flex; - justify-content: center; + border-top: 1px solid var(--border_color_main); + padding: var(--layout-padding); } .tgIcon { @@ -14,15 +15,20 @@ .contactsWrapper { flex: 1; display: flex; - justify-content: space-between; align-items: center; color: var(--text_secondary); max-width: 600px; } .footerLinkRoot { + font-size: 15px; + font-weight: 700; text-decoration: none; - color: var(--text_secondary); - display: flex; - align-items: center; -} \ No newline at end of file + + background: var(--footer_link_color); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + color: #0B2349; + display: table; + margin-right: 40px; +} diff --git a/searching-front/app/core/components/Header/Header.tsx b/searching-front/app/core/components/Header/Header.tsx index 4c68a72..42ffea8 100644 --- a/searching-front/app/core/components/Header/Header.tsx +++ b/searching-front/app/core/components/Header/Header.tsx @@ -1,4 +1,5 @@ import { Routes } from "@blitzjs/next" +import { cn } from "app/core/helpers/common" import TonLogo from "app/core/icons/TonLogo" import { useRouter } from "next/router" import SearchForm from "../SearchForm" @@ -14,12 +15,13 @@ const Header = () => { } return ( -
+
TON SEARCHING
{shouldShowSearchForm && } {/* */} +
) } diff --git a/searching-front/app/core/components/Header/styles.module.css b/searching-front/app/core/components/Header/styles.module.css index 4487929..a97bed1 100644 --- a/searching-front/app/core/components/Header/styles.module.css +++ b/searching-front/app/core/components/Header/styles.module.css @@ -1,14 +1,17 @@ .root { box-sizing: border-box; display: flex; + align-items: center; + min-height: 94px; + padding: var(--layout-padding); + justify-content: space-between; } -@media only screen and (max-width: 900px) { - .root { - flex-direction: column; - } +.root.withBorder { + border-bottom: 1px solid var(--border_color_main); } + .logoWrapper { display: flex; align-items: center; @@ -24,12 +27,32 @@ margin-right: 20px; } -@media only screen and (max-width: 900px) { +.rightFiller{ + width: 230px; +} + +@media only screen and (max-width: 1100px) { + .logoWrapper > span { + display: none; + } + .rightFiller{ + width: 32px; + } +} + +@media only screen and (max-width: 1000px) { + .logoWrapper > span { + display: inline; + } .root { flex-direction: column; - padding: 0; + /* padding: 0; */ + min-height: none; } .logoWrapper { - margin-bottom: 10px; + margin-bottom: 20px; + } + .rightFiller{ + width: 0; } } diff --git a/searching-front/app/core/components/Link/Link.tsx b/searching-front/app/core/components/Link/Link.tsx new file mode 100644 index 0000000..64ee734 --- /dev/null +++ b/searching-front/app/core/components/Link/Link.tsx @@ -0,0 +1,38 @@ +import { cn } from "app/core/helpers/common" +import { ReactNode } from "react" +import { AnimatePresence, HTMLMotionProps, motion } from "framer-motion" +import s from "./styles.module.css" + +import NextLink from "next/link" +import { Routes } from "@blitzjs/next" + +interface Props { + children: ReactNode + theme: "primary" | "clear" + className?: string + onClick?: () => void + href: string | ReturnType + wide?: boolean +} + +const Link = ({ + children, + theme, + className, + onClick, + href, + wide, + ...linkProps +}: Props & React.ComponentProps) => { + return ( + + ) +} + +export default Link diff --git a/searching-front/app/core/components/Link/index.ts b/searching-front/app/core/components/Link/index.ts new file mode 100644 index 0000000..50ec0c0 --- /dev/null +++ b/searching-front/app/core/components/Link/index.ts @@ -0,0 +1 @@ +export { default } from "./Link" diff --git a/searching-front/app/core/components/Link/styles.module.css b/searching-front/app/core/components/Link/styles.module.css new file mode 100644 index 0000000..1b1b213 --- /dev/null +++ b/searching-front/app/core/components/Link/styles.module.css @@ -0,0 +1,40 @@ +.root { + text-decoration: none; + display: inline-block; + + /* size */ + font-size: 18px; + font-weight: 500px; +} +.root a { + text-decoration: none; +} + +.root a.wide::before { + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.root:active { + transform: scale(0.95); +} + +.root:global(.theme-primary) a { + color: var(--button_primary); +} + +.root:global(.theme-primary) a:hover { + color: var(--button_primary_hover); +} + +.root:global(.theme-primary) a:active { + color: var(--button_primary_pressed); +} + +.root:global(.theme-clear) a { + color: inherit; +} diff --git a/searching-front/app/core/components/SearchForm/styles.module.css b/searching-front/app/core/components/SearchForm/styles.module.css index c46e50d..9e0a180 100644 --- a/searching-front/app/core/components/SearchForm/styles.module.css +++ b/searching-front/app/core/components/SearchForm/styles.module.css @@ -1,5 +1,6 @@ .root { - width: 55vw; + width: 100%; + max-width: 600px; font-size: 18px; position: relative; z-index: 101; diff --git a/searching-front/app/core/components/ThemeSwitcher/ThemeSwitcher.tsx b/searching-front/app/core/components/ThemeSwitcher/ThemeSwitcher.tsx index 5ac80fd..e726406 100644 --- a/searching-front/app/core/components/ThemeSwitcher/ThemeSwitcher.tsx +++ b/searching-front/app/core/components/ThemeSwitcher/ThemeSwitcher.tsx @@ -1,29 +1,27 @@ +import { cn } from "app/core/helpers/common" +import { useCurrentTheme } from "app/core/hooks/useCurrentTheme" import s from "./styles.module.css" const ThemeSwitcher = () => { + const { theme, setTheme } = useCurrentTheme() + + const toggleTheme = () => { + if (theme == "light") { + setTheme("dark") + } else { + setTheme("light") + } + } + let emoji + if (theme == "light") { + emoji = "🌞" + } else { + emoji = "🌛" + } return (
-
- - +
+
{emoji}
) diff --git a/searching-front/app/core/components/ThemeSwitcher/styles.module.css b/searching-front/app/core/components/ThemeSwitcher/styles.module.css index 088fa40..a4e501c 100644 --- a/searching-front/app/core/components/ThemeSwitcher/styles.module.css +++ b/searching-front/app/core/components/ThemeSwitcher/styles.module.css @@ -1,311 +1,31 @@ -.wrapper { - /* position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); */ +.root{ + flex: 1; + display: flex; + justify-content: flex-end; } -.hideCheckbox { - opacity: 0; - height: 0; - width: 0; -} - -.toggle { - position: relative; - cursor: pointer; - display: inline-block; - width: 200px; - height: 100px; - background: #211042; - border-radius: 50px; - transition: 500ms; - overflow: hidden; -} - -.toggleButton { - position: absolute; - display: inline-block; - top: 7px; - left: 6px; - width: 86px; - height: 86px; - border-radius: 50%; - background: #faeaf1; - overflow: hidden; - box-shadow: 0 0 35px 4px rgba(255, 255, 255); - transition: all 500ms ease-out; -} - -.crater { - position: absolute; - display: inline-block; - background: #faeaf1; - border-radius: 50%; - transition: 500ms; -} - -.crater1 { - background: #fffff9; - width: 86px; - height: 86px; - left: 10px; - bottom: 10px; -} - -.crater2 { - width: 20px; - height: 20px; - top: -7px; - left: 44px; -} - -.crater3 { - width: 16px; - height: 16px; - top: 20px; - right: -4px; -} - -.crater4 { - width: 10px; - height: 10px; - top: 24px; - left: 30px; -} - -.crater5 { - width: 15px; - height: 15px; - top: 40px; - left: 48px; -} - -.crater6 { - width: 10px; - height: 10px; - top: 48px; - left: 20px; -} - -.crater7 { - width: 12px; - height: 12px; - bottom: 5px; - left: 35px; -} - -.star { - position: absolute; - display: inline-block; - border-radius: 50%; - background: #fff; - box-shadow: 1px 0 2px 2px rgba(255, 255, 255); -} - -.star1 { - width: 6px; - height: 6px; - right: 90px; - bottom: 40px; -} - -.star2 { - width: 8px; - height: 8px; - right: 70px; - top: 10px; -} - -.star3 { - width: 5px; - height: 5px; - right: 60px; - bottom: 15px; -} - -.star4 { - width: 3px; - height: 3px; - right: 40px; - bottom: 50px; -} - -.star5 { - width: 4px; - height: 4px; - right: 10px; - bottom: 35px; -} - -.star6, -.star7, -.star8 { - width: 10px; - height: 2px; - border-radius: 2px; - transform: rotate(-45deg); - box-shadow: 5px 0px 4px 1px #fff; - animation-name: travel; - animation-duration: 1.5s; - animation-timing-function: ease-out; - animation-iteration-count: infinite; -} - -.star6 { - right: 30px; - bottom: 30px; - animation-delay: -2s; -} - -.star7 { - right: 50px; - bottom: 60px; -} - -.star8 { - right: 90px; - top: 10px; - animation-delay: -4s; -} - -@keyframes travel { - 0% { - transform: rotate(-45deg) translateX(70px); - } - - 50% { - transform: rotate(-45deg) translateX(-20px); - box-shadow: 5px 0px 6px 1px #fff; - } - - 100% { - transform: rotate(-45deg) translateX(-30px); - width: 2px; - height: 2px; - opacity: 0; - box-shadow: none; - } -} - -.hideCheckbox:checked + .toggle { - background: #24d7f7; -} - -.hideCheckbox:checked + .toggle .toggleButton { - background: #f7ffff; - transform: translateX(102px); - box-shadow: 0 0 35px 5px rgba(255, 255, 255); -} - -.hideCheckbox:checked + .toggle .toggleButton .crater { - transform: rotate(-45deg) translateX(70px); -} - -.hideCheckbox:checked + .toggle .star { - animation: move 2s infinite; - transform: none; - box-shadow: none; -} - -.hideCheckbox:checked + .toggle .star1 { - width: 40px; - height: 10px; +.wrapper{ + width: 35px; + background: var(--background_secondary); border-radius: 10px; - background: #fff; - left: 20px; - top: 25px; - box-shadow: none; -} - -.hideCheckbox:checked + .toggle .star2 { - width: 12px; - height: 12px; - background: #fff; - left: 26px; - top: 23px; - box-shadow: -1px 0 2px 0 rgba(0, 0, 0, 0.1); -} - -.hideCheckbox:checked + .toggle .star3 { - width: 16px; - height: 16px; - background: #fff; - left: 35px; - top: 19px; - box-shadow: -1px 0 2px 0 rgba(0, 0, 0, 0.1); -} - -.hideCheckbox:checked + .toggle .star4 { - width: 14px; - height: 14px; - background: #fff; - left: 46px; - top: 21px; - box-shadow: -1px 0 2px 0 rgba(0, 0, 0, 0.1); -} - -.hideCheckbox:checked + .toggle .star5 { - width: 60px; - height: 15px; - border-radius: 15px; - background: #fff; - left: 30px; - bottom: 20px; - box-shadow: none; + height: 20px; + display: flex; + align-items: center; + padding: 2px; + cursor: pointer; } -.hideCheckbox:checked + .toggle .star6 { +.content{ width: 18px; height: 18px; - background: #fff; - border-radius: 50%; - left: 38px; - bottom: 20px; - box-shadow: -1px 0 2px 0 rgba(0, 0, 0, 0.1); -} - -.hideCheckbox:checked + .toggle .star7 { - width: 24px; - height: 24px; - background: #fff; border-radius: 50%; - left: 52px; - bottom: 20px; - box-shadow: -1px 0 2px 0 rgba(0, 0, 0, 0.1); -} - -.hideCheckbox:checked + .toggle .star8 { - width: 21px; - height: 21px; - background: #fff; - border-radius: 50%; - left: 70px; - top: 59px; - box-shadow: -1px 0 2px 0 rgba(0, 0, 0, 0.1); -} - -@keyframes move { - 0% { - transform: none; - } - - 25% { - transform: translateX(2px); - } - - 100% { - transform: translateX(-2px); - } -} - -/* p { + background: var(--background_main); + font-size: 15px; text-align: center; - letter-spacing: 15px; - background: #34495e; - color: #fff; + transition: transform .1s linear; + pointer-events: none; } -p.morning { - background: #e67e22; -} */ +.content.light { + transform: translateX(16px); +} \ No newline at end of file diff --git a/searching-front/app/core/components/TonBrilliant/TonBrillian.tsx b/searching-front/app/core/components/TonBrilliant/TonBrillian.tsx index c48474d..8d1c5a1 100644 --- a/searching-front/app/core/components/TonBrilliant/TonBrillian.tsx +++ b/searching-front/app/core/components/TonBrilliant/TonBrillian.tsx @@ -9,8 +9,8 @@ const TonBrilliant = () => {
) } diff --git a/searching-front/app/core/pages/State/styles.module.css b/searching-front/app/core/pages/State/styles.module.css index 4c59fcd..398f521 100644 --- a/searching-front/app/core/pages/State/styles.module.css +++ b/searching-front/app/core/pages/State/styles.module.css @@ -1,26 +1,106 @@ .root { - /* margin-right: var(--logoWrapperWidth); */ + width: 100vw; + max-width: 600px; + margin: 0 auto; } .actualStateWrapper { + width: 100%; + padding: 20px 24px; font-size: 20px; display: flex; - justify-content: center; - align-items: center; + flex-direction: column; + background: rgba(26, 148, 255, 0.06); + border-radius: var(--border_radius_base); + margin-bottom: 60px; + box-sizing: border-box; } .availableCount { - font-size: 100px; - margin-right: 10px; - color: var(--button_primary); - font-weight: bold; + font-weight: 700; + font-size: 32px; + line-height: 40px; + margin-right: 8px; } .allCount { - margin: 0px 10px; - font-size: 30px; - color: var(--text_secondary); - font-weight: bold; + font-size: 24px; + line-height: 30px; + color: #ffffff; + opacity: 0.4; } .areNowAvailable { + margin-top: 6px; + font-weight: 700; + font-size: 16px; + line-height: 20px; +} + +.counterFooter { + display: flex; + justify-content: space-between; + align-items: flex-end; +} +.counterDate { + font-weight: 400; + font-size: 12px; + line-height: 15px; + + color: #ffffff; + opacity: 0.32; +} + +.newestTitle { + text-align: center; + font-weight: 900; + font-size: 32px; + line-height: 40px; + margin-bottom: 32px; +} +.newestTitleTon { + color: var(--button_primary); +} + +.newestListWrapper { + display: flex; + flex-direction: column; +} +.newestListItem { + padding: 24px 34px; + border-radius: var(--border_radius_base); + border: 1px solid var(--border_color_main); + text-transform: capitalize; + font-weight: 700; + font-size: 16px; + line-height: 20px; + cursor: pointer; + position: relative; +} + +.siteButton.siteButton { + width: 52px; + height: 41px; + font-size: 20px; + line-height: 25px; + border-radius: 16px; + transition: opacity 0.2s ease-in-out; + padding: 0; + background-color: var(--background_secondary); + margin-left: 8px; + +} + +.newestListItem:hover .siteButton.siteButton { + background-color: var(--button_primary); +} + +.button { + position: absolute; + top: 2px; + right: 22px; + background-color: var(--background_secondary); +} + +.newestListItem:not(:last-child) { + margin-bottom: 20px; } .doughnutAvailable { width: 200px; diff --git a/searching-front/app/core/variables.css b/searching-front/app/core/variables.css index adda1be..38903f6 100644 --- a/searching-front/app/core/variables.css +++ b/searching-front/app/core/variables.css @@ -10,6 +10,8 @@ body { --toncoin_header: #353538; --toncoin_gradient: linear-gradient(297.97deg, #232328 9.93%, #343437 76.88%); --StripeMenuWhite: #fff; + --layout-padding: 20px; + --border_radius_base: 24px; } body { diff --git a/searching-front/app/stateSites/queries/getLastWeekNewSites.ts b/searching-front/app/stateSites/queries/getLastWeekNewSites.ts new file mode 100644 index 0000000..2695b2f --- /dev/null +++ b/searching-front/app/stateSites/queries/getLastWeekNewSites.ts @@ -0,0 +1,16 @@ +import { subDays } from "date-fns" +import db from "db" + +export default async function getLastWeekNewSites() { + const weekAgo = subDays(new Date(), 7) + + const lastWeekNewSites = await db.nftDomain.findMany({ + orderBy: { firstAvailableDate: "desc" }, + take: 10, + where: { available: true, AND: { firstAvailableDate: { gt: weekAgo } } }, + }) + console.log(lastWeekNewSites) + return { + lastWeekNewSites, + } +} diff --git a/searching-front/pages/auth/forgot-password.tsx b/searching-front/pages/auth/forgot-password.tsx deleted file mode 100644 index bb5ba63..0000000 --- a/searching-front/pages/auth/forgot-password.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import Layout from "app/core/layouts/Layout" -import { LabeledTextField } from "app/core/components/LabeledTextField" -import { Form, FORM_ERROR } from "app/core/components/Form" -import { ForgotPassword } from "app/auth/validations" -import forgotPassword from "app/auth/mutations/forgotPassword" -import { useMutation } from "@blitzjs/rpc" -import { BlitzPage } from "@blitzjs/next" - -const ForgotPasswordPage: BlitzPage = () => { - const [forgotPasswordMutation, { isSuccess }] = useMutation(forgotPassword) - - return ( - -

Forgot your password?

- - {isSuccess ? ( -
-

Request Submitted

-

- If your email is in our system, you will receive instructions to reset your password - shortly. -

-
- ) : ( -
{ - try { - await forgotPasswordMutation(values) - } catch (error: any) { - return { - [FORM_ERROR]: "Sorry, we had an unexpected error. Please try again.", - } - } - }} - > - - - )} -
- ) -} - -export default ForgotPasswordPage diff --git a/searching-front/pages/auth/login.tsx b/searching-front/pages/auth/login.tsx deleted file mode 100644 index 9d9a388..0000000 --- a/searching-front/pages/auth/login.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { BlitzPage } from "@blitzjs/next" -import Layout from "app/core/layouts/Layout" -import { LoginForm } from "app/auth/components/LoginForm" -import { useRouter } from "next/router" - -const LoginPage: BlitzPage = () => { - const router = useRouter() - - return ( - - { - const next = router.query.next ? decodeURIComponent(router.query.next as string) : "/" - return router.push(next) - }} - /> - - ) -} - -export default LoginPage diff --git a/searching-front/pages/auth/reset-password.tsx b/searching-front/pages/auth/reset-password.tsx deleted file mode 100644 index 2df1c5e..0000000 --- a/searching-front/pages/auth/reset-password.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import Layout from "app/core/layouts/Layout" -import { LabeledTextField } from "app/core/components/LabeledTextField" -import { Form, FORM_ERROR } from "app/core/components/Form" -import { ResetPassword } from "app/auth/validations" -import resetPassword from "app/auth/mutations/resetPassword" -import { BlitzPage, Routes } from "@blitzjs/next" -import { useRouter } from "next/router" -import { useMutation } from "@blitzjs/rpc" -import Link from "next/link" - -const ResetPasswordPage: BlitzPage = () => { - const router = useRouter() - const [resetPasswordMutation, { isSuccess }] = useMutation(resetPassword) - - return ( -
-

Set a New Password

- - {isSuccess ? ( -
-

Password Reset Successfully

-

- Go to the homepage -

-
- ) : ( -
{ - try { - await resetPasswordMutation(values) - } catch (error: any) { - if (error.name === "ResetPasswordError") { - return { - [FORM_ERROR]: error.message, - } - } else { - return { - [FORM_ERROR]: "Sorry, we had an unexpected error. Please try again.", - } - } - } - }} - > - - - - )} -
- ) -} - -ResetPasswordPage.redirectAuthenticatedTo = "/" -ResetPasswordPage.getLayout = (page) => {page} - -export default ResetPasswordPage diff --git a/searching-front/pages/auth/signup.tsx b/searching-front/pages/auth/signup.tsx deleted file mode 100644 index 68fe2a7..0000000 --- a/searching-front/pages/auth/signup.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { useRouter } from "next/router" -import Layout from "app/core/layouts/Layout" -import { SignupForm } from "app/auth/components/SignupForm" -import { BlitzPage, Routes } from "@blitzjs/next" - -const SignupPage: BlitzPage = () => { - const router = useRouter() - - return ( - - router.push(Routes.Home())} /> - - ) -} - -export default SignupPage diff --git a/searching-front/pages/index.tsx b/searching-front/pages/index.tsx index 6b37a1a..5471591 100644 --- a/searching-front/pages/index.tsx +++ b/searching-front/pages/index.tsx @@ -26,8 +26,16 @@ import { ServerSidePropsContext, } from "app/core/contextProviders/serverSidePropsProvider" import { gSSP } from "app/blitz-server" +import ContextProviders from "app/core/components/ContextProviders" +import getLastWeekNewSites from "app/stateSites/queries/getLastWeekNewSites" +import { NftDomain } from "@prisma/client" -const Home: BlitzPage = (props) => { +interface Props { + lastWeekNewSites: NftDomain[] + cookies: Record +} + +const Home: BlitzPage = (props) => { return ( { // reset the state of your app so the error doesn't happen again }} > - + -
+
- + ) } -export const getServerSideProps = gSSP(serverSideProps) +export const getServerSideProps = gSSP( + serverSideProps(async () => { + return { + ...(await getLastWeekNewSites()), + } + }) +) export default Home diff --git a/searching-front/pages/s.tsx b/searching-front/pages/s.tsx index c83c5c7..79953e2 100644 --- a/searching-front/pages/s.tsx +++ b/searching-front/pages/s.tsx @@ -1,11 +1,6 @@ import { Suspense } from "react" -import Image from "next/image" -import Link from "next/link" import Layout from "app/core/layouts/Layout" -import { useCurrentUser } from "app/core/hooks/useCurrentUser" -import logout from "app/auth/mutations/logout" -import logo from "public/logo.png" -import { useMutation } from "@blitzjs/rpc" + import { Routes, BlitzPage } from "@blitzjs/next" import Search from "app/core/pages/Search" @@ -15,6 +10,7 @@ import { serverSideProps, ServerSidePropsContext, } from "app/core/contextProviders/serverSidePropsProvider" +import ContextProviders from "app/core/components/ContextProviders" function ErrorFallback({ error, resetErrorBoundary }) { return ( @@ -35,17 +31,17 @@ const SearchPage: BlitzPage = (props) => { // reset the state of your app so the error doesn't happen again }} > - + - + ) } -export const getServerSideProps = gSSP(serverSideProps) +export const getServerSideProps = gSSP(serverSideProps()) export default SearchPage diff --git a/searching-front/pages/state.tsx b/searching-front/pages/state.tsx index 55bf402..c2ea0f3 100644 --- a/searching-front/pages/state.tsx +++ b/searching-front/pages/state.tsx @@ -5,15 +5,18 @@ import getActualSitesState from "app/stateSites/queries/getActualSitesState" import getHistoryOfSitesState from "app/stateSites/queries/getHistoryOfSitesState" import { BlitzPage } from "@blitzjs/next" import State from "app/core/pages/State" -import { gSP } from "app/blitz-server" - -import { ErrorBoundary } from "@blitzjs/next" - +import { gSSP } from "app/blitz-server" import { + serverSideProps, ServerSidePropsContext, } from "app/core/contextProviders/serverSidePropsProvider" + +import { ErrorBoundary } from "@blitzjs/next" + import { StatePageProps } from "app/core/pages/State/State" import { StaticPageProps } from "app/core/commonTypes" +import ContextProviders from "app/core/components/ContextProviders" +import getLastWeekNewSites from "app/stateSites/queries/getLastWeekNewSites" function ErrorFallback({ error, resetErrorBoundary }) { return ( @@ -25,7 +28,8 @@ function ErrorFallback({ error, resetErrorBoundary }) { ) } -const StatePage: BlitzPage = (props) => { +const StatePage: BlitzPage = (props) => { + return ( = (props) => { // reset the state of your app so the error doesn't happen again }} > - + - + ) } -export const getServerSideProps = async ({ params, ctx }): StaticPageProps => { - const actualState = await getActualSitesState(); - const historyOfState = await getHistoryOfSitesState(); - return { - props: { +export const getServerSideProps = gSSP( + serverSideProps(async (): Promise => { + const actualState = await getActualSitesState() + const historyOfState = await getHistoryOfSitesState() + return { actualState, - historyOfState - }, - } -} + historyOfState, + ...(await getLastWeekNewSites()), + } + }) +) export default StatePage diff --git a/searching-front/public/favicon copy.ico b/searching-front/public/favicon copy.ico deleted file mode 100644 index c7bd1c095d82464715009a27231f07d3936d367b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeH~KS~2Z6vk(@SOP*c5;6EE0Sj&P2x@69%oQxO^Z>~fJc5W|W9I?ViLD0^Eo_89 z3Xy;z&+p6dVBO4wb+emF<(JV}XTF*D?YuV{6XCnnGW;}m%f_r3WA*^L%rRj9_zTZ= z4jitdfKMx{#>y?Y0E-38n0*Q>F*Gm1CwK&n?1N|gODhY|I|1)Nz!x|J<;TEE1f5;* z1V(`RZ08dLD>Z0cgKt1>rTiHD_FQ$f)flYL=&pbGr01%eYcwU)OUeOdk@i|EfKLE^`)hSJAZ~#+-WRQ@wQi z@A-5G|NfMB3jdu?V^7an|9M9#+H>Z(L(l`Nmu}0c{~9SP>(J)?n)^&^ms9^$o2|Qt z@c)bS9jLtepVW72Xh1(11NEG_s94X_+D@N$v1AO&_1wP(jY0XI`}G-vb8rJ@zVnGx zMMhv4iwwx3NFTgLB3-nkgML%Ri{BhGG)FQpZD5)t)!CN5nH=ARMz@K6as-Vw5cvVi C{Q%?u diff --git a/searching-front/public/favicon.ico b/searching-front/public/favicon.ico deleted file mode 100644 index c7bd1c095d82464715009a27231f07d3936d367b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeH~KS~2Z6vk(@SOP*c5;6EE0Sj&P2x@69%oQxO^Z>~fJc5W|W9I?ViLD0^Eo_89 z3Xy;z&+p6dVBO4wb+emF<(JV}XTF*D?YuV{6XCnnGW;}m%f_r3WA*^L%rRj9_zTZ= z4jitdfKMx{#>y?Y0E-38n0*Q>F*Gm1CwK&n?1N|gODhY|I|1)Nz!x|J<;TEE1f5;* z1V(`RZ08dLD>Z0cgKt1>rTiHD_FQ$f)flYL=&pbGr01%eYcwU)OUeOdk@i|EfKLE^`)hSJAZ~#+-WRQ@wQi z@A-5G|NfMB3jdu?V^7an|9M9#+H>Z(L(l`Nmu}0c{~9SP>(J)?n)^&^ms9^$o2|Qt z@c)bS9jLtepVW72Xh1(11NEG_s94X_+D@N$v1AO&_1wP(jY0XI`}G-vb8rJ@zVnGx zMMhv4iwwx3NFTgLB3-nkgML%Ri{BhGG)FQpZD5)t)!CN5nH=ARMz@K6as-Vw5cvVi C{Q%?u diff --git a/searching-front/public/logo copy.png b/searching-front/public/logo copy.png deleted file mode 100644 index 6a982616eefe059523490be01aaf48e6db383f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33469 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 diff --git a/searching-front/public/logo.png b/searching-front/public/logo.png deleted file mode 100644 index 6a982616eefe059523490be01aaf48e6db383f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33469 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 diff --git a/searching-front/services/main.ts b/searching-front/services/main.ts index a887bbb..b66b1a3 100644 --- a/searching-front/services/main.ts +++ b/searching-front/services/main.ts @@ -6,15 +6,15 @@ import parser from "./parser" import influx from "./influx" const run = async()=>{ - console.log('Start domain watcher') - console.time('watcher') - await domainWatcher(); - console.timeEnd('watcher') - influx() - console.log('Start parser'); - console.time('watcher'); + // console.log('Start domain watcher') + // console.time('watcher') + // await domainWatcher(); + // console.timeEnd('watcher') + // influx() + // console.log('Start parser'); + // console.time('watcher'); await parser(); - console.timeEnd('watcher'); + // console.timeEnd('watcher'); } diff --git a/searching-front/services/modules/parser/index.ts b/searching-front/services/modules/parser/index.ts index dc1101b..076ebea 100644 --- a/searching-front/services/modules/parser/index.ts +++ b/searching-front/services/modules/parser/index.ts @@ -31,6 +31,7 @@ class Parser { const { data, headers } = await axios.get(url,{ proxy: getTonProxy(), }) + const contentType = headers["content-type"].toLocaleLowerCase() if (!contentType.startsWith('text/html')) { @@ -69,7 +70,7 @@ class Parser { subPages, } } catch (e) { - console.log("Parse error ", url) + console.log("Parse error ",e, url) return SHOULD_NOT_PARSE } } diff --git a/searching-front/services/parser.ts b/searching-front/services/parser.ts index 3095cca..ab35a6e 100644 --- a/searching-front/services/parser.ts +++ b/searching-front/services/parser.ts @@ -11,10 +11,12 @@ const findFirstNotIndexed = (subpages: SubPages = {}) => { } const indexWebsite = async (domain: string, path: string, subpages: SubPages = {},count=0) => { + console.log(subpages) const subpagesLength = Object.keys(subpages).length; if (!subpages[path]) { const url = domain + path; const parseInfo = await Parser.parseUrl(url) + console.log(parseInfo) subpages[path] = true let pages = {} if (parseInfo !== SHOULD_NOT_PARSE && subpagesLength < 50) { @@ -40,6 +42,9 @@ const indexWebsite = async (domain: string, path: string, subpages: SubPages = { const main = async () => { + await indexWebsite('http://planets.ton', "/") + console.log('finish') + return await Elastic.initElastic() const domains = await db.nftDomain.findMany({where:{available: true}}) console.log('Find domains', domains)