From 06c43e8f0abd2e9dec7a0b929e071288ce001da5 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Mon, 5 Dec 2022 21:58:12 +0200 Subject: [PATCH] User search page Closes #1032 --- app/components/Input.tsx | 11 ++- app/components/layout/nav-items.json | 17 +++- app/db/models/users/queries.server.ts | 22 ++++++ app/db/models/users/search.sql | 21 +++++ app/routes/u.$identifier.tsx | 18 +++++ app/routes/u.tsx | 105 +++++++++++++++++++++++++ app/styles/common.css | 11 +-- app/styles/u.css | 51 ++++++++++++ app/utils/urls.ts | 1 + public/locales/en/common.json | 1 + public/locales/en/user.json | 5 +- public/static-assets/img/layout/u.avif | Bin 0 -> 4756 bytes public/static-assets/img/layout/u.png | Bin 0 -> 31674 bytes 13 files changed, 252 insertions(+), 11 deletions(-) create mode 100644 app/db/models/users/search.sql create mode 100644 app/routes/u.tsx create mode 100644 public/static-assets/img/layout/u.avif create mode 100644 public/static-assets/img/layout/u.png diff --git a/app/components/Input.tsx b/app/components/Input.tsx index 12f643dce..3fbf52d0a 100644 --- a/app/components/Input.tsx +++ b/app/components/Input.tsx @@ -7,19 +7,25 @@ export function Input({ maxLength, defaultValue, leftAddon, + icon, pattern, list, "data-cy": dataCy, + value, + onChange, }: { - name: string; + name?: string; className?: string; minLength?: number; maxLength?: number; defaultValue?: string; leftAddon?: string; + icon?: React.ReactNode; pattern?: string; list?: string; "data-cy"?: string; + value?: string; + onChange?: (e: React.ChangeEvent) => void; }) { return (
@@ -32,7 +38,10 @@ export function Input({ pattern={pattern} list={list} data-cy={dataCy} + value={value} + onChange={onChange} /> + {icon}
); } diff --git a/app/components/layout/nav-items.json b/app/components/layout/nav-items.json index 08679ec6e..579fb6f9f 100644 --- a/app/components/layout/nav-items.json +++ b/app/components/layout/nav-items.json @@ -45,12 +45,12 @@ ] }, { - "name": "articles", - "url": "a", + "name": "u", + "url": "u", "prefetch": true, "filters": [ - "invert(30%) sepia(73%) saturate(4089%) hue-rotate(326deg) brightness(96%) contrast(104%)", - "invert(55%) sepia(20%) saturate(738%) hue-rotate(224deg) brightness(86%) contrast(88%)" + "invert(20%) sepia(99%) saturate(5628%) hue-rotate(0deg) brightness(95%) contrast(118%)", + "invert(53%) sepia(0%) saturate(1071%) hue-rotate(253deg) brightness(95%) contrast(84%)" ] }, { @@ -79,5 +79,14 @@ "invert(16%) sepia(80%) saturate(5634%) hue-rotate(272deg) brightness(91%) contrast(105%)", "invert(71%) sepia(42%) saturate(4219%) hue-rotate(150deg) brightness(99%) contrast(86%)" ] + }, + { + "name": "articles", + "url": "a", + "prefetch": true, + "filters": [ + "invert(30%) sepia(73%) saturate(4089%) hue-rotate(326deg) brightness(96%) contrast(104%)", + "invert(55%) sepia(20%) saturate(738%) hue-rotate(224deg) brightness(86%) contrast(88%)" + ] } ] diff --git a/app/db/models/users/queries.server.ts b/app/db/models/users/queries.server.ts index cb04ed6ad..623c27682 100644 --- a/app/db/models/users/queries.server.ts +++ b/app/db/models/users/queries.server.ts @@ -18,6 +18,7 @@ import findAllPlusMembersSql from "./findAllPlusMembers.sql"; import findAllPatronsSql from "./findAllPatrons.sql"; import addResultHighlightSql from "./addResultHighlight.sql"; import deleteAllResultHighlightsSql from "./deleteAllResultHighlights.sql"; +import searchSql from "./search.sql"; const upsertStm = sql.prepare(upsertSql); export function upsert( @@ -144,3 +145,24 @@ export const updateResultHighlights = sql.transaction( } } ); + +const searchStm = sql.prepare(searchSql); +export function search(input: string) { + const searchString = `%${input}%`; + + return searchStm.all({ + discordName: searchString, + inGameName: searchString, + twitter: searchString, + }) as Array< + Pick< + User, + | "discordId" + | "discordAvatar" + | "discordName" + | "discordDiscriminator" + | "customUrl" + | "inGameName" + > + >; +} diff --git a/app/db/models/users/search.sql b/app/db/models/users/search.sql new file mode 100644 index 000000000..dace7d3a6 --- /dev/null +++ b/app/db/models/users/search.sql @@ -0,0 +1,21 @@ +select + "discordName", + "discordId", + "discordAvatar", + "discordDiscriminator", + "customUrl", + "inGameName" +from + "User" + left join "PlusTier" on "PlusTier"."userId" = "User"."id" +where + "discordName" like @discordName + or "inGameName" like @inGameName + or "twitter" like @twitter +order by + case + when "PlusTier"."tier" is null then 4 + else "PlusTier"."tier" + end asc +limit + 25 diff --git a/app/routes/u.$identifier.tsx b/app/routes/u.$identifier.tsx index 26ada3ba0..6f05aed23 100644 --- a/app/routes/u.$identifier.tsx +++ b/app/routes/u.$identifier.tsx @@ -21,10 +21,12 @@ import styles from "~/styles/u.css"; import invariant from "tiny-invariant"; import { isCustomUrl, + navIconUrl, userBuildsPage, userEditProfilePage, userPage, userResultsPage, + USER_SEARCH_PAGE, } from "~/utils/urls"; import { Main } from "~/components/Main"; @@ -42,6 +44,22 @@ export const meta: MetaFunction = ({ data }: { data: UserPageLoaderData }) => { export const handle: SendouRouteHandle = { i18n: "user", + breadcrumb: ({ match }) => { + const data = match.data as UserPageLoaderData; + + return [ + { + imgPath: navIconUrl("u"), + href: USER_SEARCH_PAGE, + type: "IMAGE", + }, + { + text: data.discordName, + href: userPage(data), + type: "TEXT", + }, + ]; + }, }; export const userParamsSchema = z.object({ identifier: z.string() }); diff --git a/app/routes/u.tsx b/app/routes/u.tsx new file mode 100644 index 000000000..00c486570 --- /dev/null +++ b/app/routes/u.tsx @@ -0,0 +1,105 @@ +import type { LinksFunction, LoaderArgs } from "@remix-run/node"; +import { Main } from "~/components/Main"; +import type { SendouRouteHandle } from "~/utils/remix"; +import { navIconUrl, userPage, USER_SEARCH_PAGE } from "~/utils/urls"; +import styles from "~/styles/u.css"; +import { Input } from "~/components/Input"; +import { SearchIcon } from "~/components/icons/Search"; +import { db } from "~/db"; +import { Link, useLoaderData, useSearchParams } from "@remix-run/react"; +import { useDebounce } from "react-use"; +import * as React from "react"; +import { Avatar } from "~/components/Avatar"; +import { discordFullName } from "~/utils/strings"; +import { useTranslation } from "~/hooks/useTranslation"; + +export const links: LinksFunction = () => { + return [{ rel: "stylesheet", href: styles }]; +}; + +export const handle: SendouRouteHandle = { + i18n: ["user"], + breadcrumb: () => ({ + imgPath: navIconUrl("u"), + href: USER_SEARCH_PAGE, + type: "IMAGE", + }), +}; + +export const loader = ({ request }: LoaderArgs) => { + const url = new URL(request.url); + const input = url.searchParams.get("q"); + + if (!input) return null; + + return { users: db.users.search(input), input }; +}; + +export default function UserSearchPage() { + const [searchParams, setSearchParams] = useSearchParams(); + const [inputValue, setInputValue] = React.useState( + searchParams.get("q") ?? "" + ); + useDebounce( + () => { + if (!inputValue) return; + + setSearchParams({ q: inputValue }); + }, + 1500, + [inputValue] + ); + + return ( +
+ } + value={inputValue} + onChange={(e) => setInputValue(e.target.value)} + /> + +
+ ); +} + +function UsersList() { + const { t } = useTranslation(["user"]); + const data = useLoaderData(); + + if (!data) { + return
{t("user:search.info")}
; + } + + if (data.users.length === 0) { + return ( +
+ {t("user:search.noResults", { query: data.input })} +
+ ); + } + + return ( + + ); +} diff --git a/app/styles/common.css b/app/styles/common.css index 7a329d2e5..990d06bbc 100644 --- a/app/styles/common.css +++ b/app/styles/common.css @@ -137,7 +137,7 @@ textarea:not(.plain) { height: 8rem; padding: var(--s-2-5) var(--s-3); border: 2px solid var(--border); - border-radius: var(--rounded); + border-radius: var(--rounded-sm); accent-color: var(--theme-secondary); background-color: var(--bg-input); color: var(--text); @@ -166,7 +166,7 @@ input:not(.plain) { height: 1rem; padding: var(--s-4) var(--s-3); border: 2px solid var(--border); - border-radius: var(--rounded); + border-radius: var(--rounded-sm); accent-color: var(--theme-secondary); background-color: var(--bg-input); color: var(--text); @@ -252,7 +252,7 @@ select { width: 100%; box-sizing: border-box; border: 2px solid var(--border); - border-radius: var(--rounded); + border-radius: var(--rounded-sm); background: var(--select-background, var(--bg-input)); /* TODO: Get color from CSS var */ @@ -415,7 +415,7 @@ dialog::backdrop { .input-container { display: flex; border: 2px solid var(--border); - border-radius: var(--rounded); + border-radius: var(--rounded-sm); accent-color: var(--theme-secondary); background-color: var(--bg-input); color: var(--text); @@ -434,6 +434,7 @@ dialog::backdrop { .input-container > input { width: 100%; border: none; + margin: auto 0; } /* stylelint-enable no-descending-specificity */ @@ -443,7 +444,7 @@ dialog::backdrop { .input-addon { display: grid; - border-radius: var(--rounded) 0 0 var(--rounded); + border-radius: var(--rounded-sm) 0 0 var(--rounded-sm); background-color: var(--bg-lighter); color: var(--text-lighter); font-size: var(--fonts-xs); diff --git a/app/styles/u.css b/app/styles/u.css index 891db35eb..4063d7839 100644 --- a/app/styles/u.css +++ b/app/styles/u.css @@ -169,3 +169,54 @@ gap: var(--s-3); list-style: none; } + +.u-search__container { + display: flex; + flex-direction: column; + gap: var(--s-12); +} + +.u-search__users { + display: flex; + width: 325px; + flex-direction: column; + padding: 0; + margin: 0 auto; + gap: var(--s-6); +} + +.u-search__user { + display: flex; + align-items: center; + font-weight: var(--body); + gap: var(--s-4); + line-height: 1.2rem; +} + +.u-search__ign { + color: var(--text-lighter); + font-size: var(--fonts-sm); + font-weight: var(--body); +} + +.u-search__users > li { + list-style: none; +} + +.u-search__icon { + height: 25px; + margin: auto; + margin-right: 15px; +} + +.u-search__info { + color: var(--text-lighter); + font-size: var(--fonts-sm); + text-align: center; +} + +.u-search__input { + height: 40px !important; + margin: 0 auto; + font-size: var(--fonts-lg); +} diff --git a/app/utils/urls.ts b/app/utils/urls.ts index 7541dd760..788308346 100644 --- a/app/utils/urls.ts +++ b/app/utils/urls.ts @@ -44,6 +44,7 @@ export const FAQ_PAGE = "/faq"; export const CONTRIBUTIONS_PAGE = "/contributions"; export const BADGES_PAGE = "/badges"; export const BUILDS_PAGE = "/builds"; +export const USER_SEARCH_PAGE = "/u"; export const CALENDAR_PAGE = "/calendar"; export const STOP_IMPERSONATING_URL = "/auth/impersonate/stop"; export const SEED_URL = "/seed"; diff --git a/public/locales/en/common.json b/public/locales/en/common.json index d509afe1c..95d7cb204 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -13,6 +13,7 @@ "pages.plans": "Planner", "pages.object-damage-calculator": "DMG Calc", "pages.myPage": "My Page", + "pages.u": "User Search", "header.profile": "Profile", "header.logout": "Log out", diff --git a/public/locales/en/user.json b/public/locales/en/user.json index 901b3b64a..02ebf12d9 100644 --- a/public/locales/en/user.json +++ b/public/locales/en/user.json @@ -25,5 +25,8 @@ "forms.errors.invalidCustomUrl.numbers": "Custom URL can't only contain numbers", "forms.errors.invalidCustomUrl.strangeCharacter": "Custom URL can't contain special characters", "forms.errors.invalidCustomUrl.duplicate": "Someone is already using this custom URL", - "forms.errors.invalidSens": "Motion sens can't be set if R-stick sens isn't" + "forms.errors.invalidSens": "Motion sens can't be set if R-stick sens isn't", + + "search.info": "Search for users by Discord, Splatoon 3 or Twitter name", + "search.noResults": "No users found matching '{{query}}'" } diff --git a/public/static-assets/img/layout/u.avif b/public/static-assets/img/layout/u.avif new file mode 100644 index 0000000000000000000000000000000000000000..c0b3dad4c305da657e059a7c9455953731fe69ca GIT binary patch literal 4756 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 CpRTw7 literal 0 HcmV?d00001 diff --git a/public/static-assets/img/layout/u.png b/public/static-assets/img/layout/u.png new file mode 100644 index 0000000000000000000000000000000000000000..253bc8bc1696c260436085ba7644bf8b6ae39192 GIT binary patch literal 31674 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 YT5S~*m@^!~d$%EqvT8CV(ujBe18sY+v;Y7A literal 0 HcmV?d00001