Wow this took like 1 min wtf

This commit is contained in:
Atridad Lahiji 2023-05-30 16:44:01 -06:00
parent 7344821448
commit 29741253d0
No known key found for this signature in database
2 changed files with 57 additions and 4 deletions

View file

@ -121,6 +121,8 @@ const RoomBody: React.FC = () => {
useEffect(() => {
window.addEventListener("beforeunload", () => channel.presence.leave());
return () => {
localStorage.removeItem(`${roomId}_story_name`);
localStorage.removeItem(`${roomId}_room_scale`);
window.removeEventListener("beforeunload", () =>
channel.presence.leave()
);
@ -131,8 +133,16 @@ const RoomBody: React.FC = () => {
// Init story name
useEffect(() => {
if (sessionData && roomFromDb) {
setStoryNameText(roomFromDb.storyName || "");
setRoomScale(roomFromDb.scale || "ERROR");
setStoryNameText(
localStorage.getItem(`${roomId}_story_name`) ||
roomFromDb.storyName ||
""
);
setRoomScale(
localStorage.getItem(`${roomId}_room_scale`) ||
roomFromDb.scale ||
"ERROR"
);
}
}, [roomFromDb, sessionData]);
@ -367,7 +377,13 @@ const RoomBody: React.FC = () => {
placeholder="Scale (Comma Separated)"
className="input input-bordered m-auto"
value={roomScale}
onChange={(event) => setRoomScale(event.target.value)}
onChange={(event) => {
setRoomScale(event.target.value);
localStorage.setItem(
`${roomId}_room_scale`,
event.target.value
);
}}
/>
<label className="label mx-auto">{"Story Name:"} </label>
@ -377,7 +393,13 @@ const RoomBody: React.FC = () => {
placeholder="Story Name"
className="input input-bordered m-auto"
value={storyNameText}
onChange={(event) => setStoryNameText(event.target.value)}
onChange={(event) => {
setStoryNameText(event.target.value);
localStorage.setItem(
`${roomId}_story_name`,
event.target.value
);
}}
/>
<div className="flex flex-row flex-wrap text-center items-center justify-center gap-2">

View file

@ -9,6 +9,7 @@ import {
deleteFromCache,
} from "redicache-ts";
import { env } from "~/env.mjs";
import { Vote } from "@prisma/client";
const client = cacheClient(env.REDIS_URL);
@ -36,6 +37,35 @@ export const voteRouter = createTRPCRouter({
return votesCount;
}
}),
getAllByRoomId: protectedProcedure
.input(z.object({ roomId: z.string() }))
.query(async ({ ctx, input }) => {
const cachedResult = await fetchFromCache<Vote[]>(
client,
env.APP_ENV,
`kv_votes_${input.roomId}`
);
if (cachedResult) {
return cachedResult;
} else {
const votesByRoomId = await ctx.prisma.vote.findMany({
where: {
roomId: input.roomId,
},
});
await writeToCache(
client,
env.APP_ENV,
`kv_votes_${input.roomId}`,
JSON.stringify(votesByRoomId),
69
);
return votesByRoomId;
}
}),
set: protectedProcedure
.input(z.object({ value: z.string(), roomId: z.string() }))
.mutation(async ({ ctx, input }) => {
@ -71,6 +101,7 @@ export const voteRouter = createTRPCRouter({
if (vote) {
await deleteFromCache(client, env.APP_ENV, `kv_votecount_admin`);
await deleteFromCache(client, env.APP_ENV, `kv_votes_${input.roomId}`);
await publishToChannel(`${vote.roomId}`, "VOTE_UPDATE", "UPDATE");
}