diff --git a/packages/nextjs/app/lib/actions.ts b/packages/nextjs/app/lib/actions.ts index b2ad9fa..e2a67c3 100644 --- a/packages/nextjs/app/lib/actions.ts +++ b/packages/nextjs/app/lib/actions.ts @@ -1,19 +1,25 @@ "use server"; +import { cookies } from "next/headers"; import { redirect } from "next/navigation"; +import { connectedAddressKey } from "./definitions"; import { sql } from "@vercel/postgres"; +export async function setAddressCookie(address: string) { + const cookieStore = await cookies(); + cookieStore.set(connectedAddressKey, address); +} + export default async function createAnswer(formData: FormData) { const rawFormData = { question: formData.get("question"), answer: formData.get("radio-0"), connectedAddress: formData.get("address"), }; - // Test it out: + // todo get id for current user address: const sh_id = "d6e15727-9fe1-4961-8c5b-ea44a9bd8100"; console.log(rawFormData); - // todo fix query to store ids await sql` INSERT INTO answers (sh_id, question_id, choice_id, answer_time) VALUES (${sh_id}, ${rawFormData.question?.toString()}, ${rawFormData.answer?.toString()}, now()) diff --git a/packages/nextjs/app/lib/definitions.ts b/packages/nextjs/app/lib/definitions.ts index 3e8a554..94d98b4 100644 --- a/packages/nextjs/app/lib/definitions.ts +++ b/packages/nextjs/app/lib/definitions.ts @@ -1,3 +1,5 @@ +export const connectedAddressKey = "scaffoldEth2.address"; + export type Question = { id: string; question: string; diff --git a/packages/nextjs/app/page.tsx b/packages/nextjs/app/page.tsx index 89cc332..bbec8a4 100644 --- a/packages/nextjs/app/page.tsx +++ b/packages/nextjs/app/page.tsx @@ -1,6 +1,8 @@ "use client"; +import { useEffect } from "react"; import Link from "next/link"; +import { setAddressCookie } from "./lib/actions"; import type { NextPage } from "next"; import { useAccount } from "wagmi"; import { BugAntIcon, MagnifyingGlassIcon, StarIcon } from "@heroicons/react/24/outline"; @@ -9,6 +11,11 @@ import { Address } from "~~/components/scaffold-eth"; const Home: NextPage = () => { const { address: connectedAddress } = useAccount(); + useEffect(() => { + if (connectedAddress) { + setAddressCookie(connectedAddress); + } + }, [connectedAddress]); return ( <>
diff --git a/packages/nextjs/app/voting/page.tsx b/packages/nextjs/app/voting/page.tsx index 02fea44..36b9df1 100644 --- a/packages/nextjs/app/voting/page.tsx +++ b/packages/nextjs/app/voting/page.tsx @@ -1,11 +1,24 @@ +import { cookies } from "next/headers"; import { fetchQuestions } from "../lib/data"; +import { connectedAddressKey } from "../lib/definitions"; import VotingForm from "./_components/VotingForm"; export default async function Page() { const questions = await fetchQuestions(); - return ( - <> - - - ); + const cookieStore = cookies(); + + const connectedAddress = cookieStore.get(connectedAddressKey)?.value; + console.log(connectedAddress); + if (connectedAddress) { + return ( + <> + + + ); + } else + return ( + <> +

Connect to wallet for voting!

+ + ); }