Skip to content

Commit

Permalink
New signup flow: no more UUID.
Browse files Browse the repository at this point in the history
  • Loading branch information
borisghidaglia committed Aug 15, 2024
1 parent 6f56453 commit c9ecfad
Show file tree
Hide file tree
Showing 18 changed files with 3,527 additions and 1,286 deletions.
54 changes: 0 additions & 54 deletions app/@sidebar/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { Fragment } from "react";
import { getCities } from "@/app/_db/City";
import { City, DbUser } from "@/app/_db/schema";
import { getClientUser, getUsers } from "@/app/_db/User";
import { CopyToClipboardBtn } from "@/components/CopyToClipboardBtn";
import { GroupToggle, GroupToggleItem } from "@/components/GroupToggle";
import { SignUpForm } from "@/components/SignUpForm";
import { Socials } from "@/components/Socials";
Expand Down Expand Up @@ -38,59 +37,6 @@ export default async function Home({
</div>
) : (
<>
<div className="flex flex-col gap-2">
<p>
To register, add this UUID to the about section of your HN profile.
</p>
<div className="grid grid-cols-1 grid-rows-1 rounded-sm border border-[#aaaaa4e3] bg-[#e3e3dce3] px-2 py-1">
<p className="col-start-1 row-start-1">{uuid}</p>
<CopyToClipboardBtn
text={uuid}
className="col-start-1 row-start-1 place-self-end self-center fill-black p-1"
/>
</div>
</div>
<details>
<summary className="cursor-pointer">
Add your socials (full) links to your HN profile&apos;s about section,
and they&apos;ll show up here.
</summary>
<p className="mt-2">
Supported:{" "}
<ExternalLink href="https://at.hn/" className="font-medium">
at.hn
</ExternalLink>{" "}
from{" "}
<ExternalLink href="https://x.com/padolsey" className="font-medium">
@padolsey
</ExternalLink>
, Bluesky, Cal.com, Calendly, Google Calendar, Instagram, LinkedIn,
Reddit, Soundcloud, Spotify, Telegram, X/Twitter, YouTube Music
</p>
</details>
<details>
<summary className="cursor-pointer">
Finally, enter your HN username, city and country below.
</summary>
<p className="mt-2">
City and country should be comma separated. It uses{" "}
<ExternalLink
href="https://nominatim.org/release-docs/develop/api/Search/#free-form-query"
className="underline"
>
Nominatim free form query search API External{" "}
</ExternalLink>{" "}
so the input format is pretty flexible. Ideally, use a big city near
you.
</p>
<div>
<p>Examples:</p>
<ul className="list-inside list-disc">
<li>Paris, France</li>
<li>SF, USA</li>
</ul>
</div>
</details>
<SignUpForm uuid={uuid} />
<p>
If you do meet in real life and want to share a pic on Twitter, tag the{" "}
Expand Down
43 changes: 27 additions & 16 deletions app/_tests/hnAboutParsing.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,43 @@ import {

describe("parseHnAboutSection", () => {
it("parses UUID from HN user about section", async () => {
const about = `
meet.hn-81db6831-e53e-42ea-b76e-c94a3f84888c
`;
const validAbout = "meet.hn-81db6831-e53e-42ea-b76e-c94a3f84888c";
const invalidAbout = "meet.hn-91db6831-e53e-42ea-b76e-c94a3f84888c";
expect(
await isValidUuidInHnUserAbout(
about,
validAbout,
"meet.hn-81db6831-e53e-42ea-b76e-c94a3f84888c",
),
).toBe(true);
expect(
await isValidUuidInHnUserAbout(
invalidAbout,
"meet.hn-81db6831-e53e-42ea-b76e-c94a3f84888c",
),
).toBe(false);
});

it("parses all social profile urls from HN user about section", () => {
const about = `
https://x.com/borisfyi https://www.instagram.com/sirob.g/ Aut sirobg.at.hn laborum cumque animi perferendis
itaque, https://bsky.app/profile/boris.fyi expedita https://music.youtube.com/channel/UC_kEi4T_421er6ovq64GdsQ beatae https://soundcloud.com/boris-ghidaglia exercitationem est pariatur eligendi amet? Accusantium
totam eaque https://open.spotify.com/user/21fck52nwq4xr65gtemvmslxq molestias https://www.reddit.com/user/sirobg/ maxime https://www.linkedin.com/in/boris-ghidaglia/ sint praesentium https://www.instagram.com/sirob.g/?
https://x.com/borisfyi https://www.instagram.com/sirob.g/ Aut sirobg.at.hn laborum https://t.me/borisfyi cumque https://cal.com/peer animi perferendis
itaque, https://bsky.app/profile/boris.fyi expedita https://music.youtube.com/channel/UC_kEi4T_421er6ovq64GdsQ beatae https://soundcloud.com/boris-ghidaglia exercitationem est pariatur eligendi amet? https://calendar.app.google/GSadqubSJfRERVLv8 Accusantium
totam eaque https://open.spotify.com/user/21fck52nwq4xr65gtemvmslxq molestias https://www.reddit.com/user/sirobg/ maxime https://www.linkedin.com/in/boris-ghidaglia/ sint https://calendly.com/daedaliumx/better-call-ouss praesentium https://www.instagram.com/sirob.g/?
`;
const validParsedUrls = {
bluesky: "https://bsky.app/profile/boris.fyi",
instagram: "https://www.instagram.com/sirob.g/",
linkedin: "https://www.linkedin.com/in/boris-ghidaglia/",
reddit: "https://www.reddit.com/user/sirobg/",
soundcloud: "https://soundcloud.com/boris-ghidaglia",
spotify: "https://open.spotify.com/user/21fck52nwq4xr65gtemvmslxq",
twitter: "https://x.com/borisfyi",
youtubeMusic:
const validParsedUrls: {
[k in (typeof supportedSocials)[number]["name"]]: string;
} = {
Bluesky: "https://bsky.app/profile/boris.fyi",
"Cal.com": "https://cal.com/peer",
Calendly: "https://calendly.com/daedaliumx/better-call-ouss",
"Google Calendar": "https://calendar.app.google/GSadqubSJfRERVLv8",
Instagram: "https://www.instagram.com/sirob.g/",
LinkedIn: "https://www.linkedin.com/in/boris-ghidaglia/",
Reddit: "https://www.reddit.com/user/sirobg/",
SoundCloud: "https://soundcloud.com/boris-ghidaglia",
Spotify: "https://open.spotify.com/user/21fck52nwq4xr65gtemvmslxq",
Telegram: "https://t.me/borisfyi",
"X/Twitter": "https://x.com/borisfyi",
"YouTube Music":
"https://music.youtube.com/channel/UC_kEi4T_421er6ovq64GdsQ",
};
expect(parseSocials(about)).toStrictEqual(
Expand Down
2 changes: 1 addition & 1 deletion app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default function RootLayout({
<html lang="en">
<body className={`bg-[#f6f6ef] ${inter.className}`}>
<main className="grid overflow-hidden md:h-dvh md:grid-cols-[max-content,1fr]">
<div className="flex flex-col gap-8 overflow-scroll p-5 md:w-[512px]">
<div className="flex flex-col gap-8 overflow-x-hidden overflow-y-scroll p-5 md:w-[512px]">
<header>
<div className="flex items-center justify-between">
<h1 className="text-3xl font-bold">
Expand Down
2 changes: 1 addition & 1 deletion components.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"config": "tailwind.config.ts",
"css": "app/globals.css",
"baseColor": "slate",
"cssVariables": true,
"cssVariables": false,
"prefix": ""
},
"aliases": {
Expand Down
4 changes: 2 additions & 2 deletions components/CopyToClipboardBtn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ export function CopyToClipboardBtn({
return (
<div className={cn("relative", className)}>
<svg
onClick={() => {
navigator.clipboard.writeText(text);
onClick={async () => {
await navigator.clipboard.writeText(text);
setIsCopied(true);
}}
className="box-content h-4 w-4 cursor-pointer"
Expand Down
Loading

0 comments on commit c9ecfad

Please sign in to comment.