Wow this took like 1 min wtf
This commit is contained in:
parent
7344821448
commit
29741253d0
2 changed files with 57 additions and 4 deletions
|
@ -121,6 +121,8 @@ const RoomBody: React.FC = () => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window.addEventListener("beforeunload", () => channel.presence.leave());
|
window.addEventListener("beforeunload", () => channel.presence.leave());
|
||||||
return () => {
|
return () => {
|
||||||
|
localStorage.removeItem(`${roomId}_story_name`);
|
||||||
|
localStorage.removeItem(`${roomId}_room_scale`);
|
||||||
window.removeEventListener("beforeunload", () =>
|
window.removeEventListener("beforeunload", () =>
|
||||||
channel.presence.leave()
|
channel.presence.leave()
|
||||||
);
|
);
|
||||||
|
@ -131,8 +133,16 @@ const RoomBody: React.FC = () => {
|
||||||
// Init story name
|
// Init story name
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (sessionData && roomFromDb) {
|
if (sessionData && roomFromDb) {
|
||||||
setStoryNameText(roomFromDb.storyName || "");
|
setStoryNameText(
|
||||||
setRoomScale(roomFromDb.scale || "ERROR");
|
localStorage.getItem(`${roomId}_story_name`) ||
|
||||||
|
roomFromDb.storyName ||
|
||||||
|
""
|
||||||
|
);
|
||||||
|
setRoomScale(
|
||||||
|
localStorage.getItem(`${roomId}_room_scale`) ||
|
||||||
|
roomFromDb.scale ||
|
||||||
|
"ERROR"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}, [roomFromDb, sessionData]);
|
}, [roomFromDb, sessionData]);
|
||||||
|
|
||||||
|
@ -367,7 +377,13 @@ const RoomBody: React.FC = () => {
|
||||||
placeholder="Scale (Comma Separated)"
|
placeholder="Scale (Comma Separated)"
|
||||||
className="input input-bordered m-auto"
|
className="input input-bordered m-auto"
|
||||||
value={roomScale}
|
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>
|
<label className="label mx-auto">{"Story Name:"} </label>
|
||||||
|
@ -377,7 +393,13 @@ const RoomBody: React.FC = () => {
|
||||||
placeholder="Story Name"
|
placeholder="Story Name"
|
||||||
className="input input-bordered m-auto"
|
className="input input-bordered m-auto"
|
||||||
value={storyNameText}
|
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">
|
<div className="flex flex-row flex-wrap text-center items-center justify-center gap-2">
|
||||||
|
|
|
@ -9,6 +9,7 @@ import {
|
||||||
deleteFromCache,
|
deleteFromCache,
|
||||||
} from "redicache-ts";
|
} from "redicache-ts";
|
||||||
import { env } from "~/env.mjs";
|
import { env } from "~/env.mjs";
|
||||||
|
import { Vote } from "@prisma/client";
|
||||||
|
|
||||||
const client = cacheClient(env.REDIS_URL);
|
const client = cacheClient(env.REDIS_URL);
|
||||||
|
|
||||||
|
@ -36,6 +37,35 @@ export const voteRouter = createTRPCRouter({
|
||||||
return votesCount;
|
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
|
set: protectedProcedure
|
||||||
.input(z.object({ value: z.string(), roomId: z.string() }))
|
.input(z.object({ value: z.string(), roomId: z.string() }))
|
||||||
.mutation(async ({ ctx, input }) => {
|
.mutation(async ({ ctx, input }) => {
|
||||||
|
@ -71,6 +101,7 @@ export const voteRouter = createTRPCRouter({
|
||||||
|
|
||||||
if (vote) {
|
if (vote) {
|
||||||
await deleteFromCache(client, env.APP_ENV, `kv_votecount_admin`);
|
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");
|
await publishToChannel(`${vote.roomId}`, "VOTE_UPDATE", "UPDATE");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue