diff --git a/.env.example b/.env.example index 9ea8a2a..983bd1e 100644 --- a/.env.example +++ b/.env.example @@ -5,8 +5,6 @@ DATABASE_URL="" UPSTASH_REDIS_REST_URL="" UPSTASH_REDIS_REST_TOKEN="" UPSTASH_REDIS_EXPIRY_SECONDS="" -UPSTASH_RATELIMIT_REQUESTS="" -UPSTASH_RATELIMIT_SECONDS="" #Next Auth Core NEXTAUTH_SECRET="" diff --git a/package.json b/package.json index 32ba203..e1365f6 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "@trpc/next": "10.34.0", "@trpc/react-query": "10.34.0", "@trpc/server": "10.34.0", - "@upstash/ratelimit": "^0.4.3", "@upstash/redis": "^1.22.0", "ably": "^1.2.41", "autoprefixer": "^10.4.14", @@ -55,4 +54,4 @@ "ct3aMetadata": { "initVersion": "7.5.9" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c29d14..a63418b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,9 +32,6 @@ dependencies: '@trpc/server': specifier: 10.34.0 version: 10.34.0 - '@upstash/ratelimit': - specifier: ^0.4.3 - version: 0.4.3 '@upstash/redis': specifier: ^1.22.0 version: 1.22.0 @@ -1351,23 +1348,6 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@upstash/core-analytics@0.0.6: - resolution: {integrity: sha512-cpPSR0XJAJs4Ddz9nq3tINlPS5aLfWVCqhhtHnXt4p7qr5+/Znlt1Es736poB/9rnl1hAHrOsOvVj46NEXcVqA==} - engines: {node: '>=16.0.0'} - dependencies: - '@upstash/redis': 1.22.0 - transitivePeerDependencies: - - encoding - dev: false - - /@upstash/ratelimit@0.4.3: - resolution: {integrity: sha512-Dsp9Mw09Flg28JRklKgFiCXqr3bqv8bbG0kgpUYoHjcgPPolFFyaYOj/I2HExvYLZiogl77NUavBoNvMOK0zUQ==} - dependencies: - '@upstash/core-analytics': 0.0.6 - transitivePeerDependencies: - - encoding - dev: false - /@upstash/redis@1.22.0: resolution: {integrity: sha512-sXoJDoEqqik0HbrNE7yRWckOySEFsoBxfRdCgOqkc0w6py19ZZG50SpGkDDEUXSnBqP8VgGYXhWAiBpqxrt5oA==} dependencies: diff --git a/src/env.mjs b/src/env.mjs index 4c1f2de..0ddd359 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -9,8 +9,6 @@ const server = z.object({ UPSTASH_REDIS_REST_URL: z.string().url(), UPSTASH_REDIS_REST_TOKEN: z.string(), UPSTASH_REDIS_EXPIRY_SECONDS: z.string(), - UPSTASH_RATELIMIT_REQUESTS: z.string(), - UPSTASH_RATELIMIT_SECONDS: z.string(), NODE_ENV: z.enum(["development", "test", "production"]), NEXTAUTH_SECRET: process.env.NODE_ENV === "production" @@ -52,8 +50,6 @@ const processEnv = { UPSTASH_REDIS_REST_URL: process.env.UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN: process.env.UPSTASH_REDIS_REST_TOKEN, UPSTASH_REDIS_EXPIRY_SECONDS: process.env.UPSTASH_REDIS_EXPIRY_SECONDS, - UPSTASH_RATELIMIT_REQUESTS: process.env.UPSTASH_RATELIMIT_REQUESTS, - UPSTASH_RATELIMIT_SECONDS: process.env.UPSTASH_RATELIMIT_SECONDS, NODE_ENV: process.env.NODE_ENV, NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET, NEXTAUTH_URL: process.env.NEXTAUTH_URL, diff --git a/src/pages/room/[id].tsx b/src/pages/room/[id].tsx index 2d8794c..98bd56a 100644 --- a/src/pages/room/[id].tsx +++ b/src/pages/room/[id].tsx @@ -63,7 +63,7 @@ const Room: NextPage = () => { export default Room; -const RoomBody: React.FC = () => { +const RoomBody: React.FC = ({}) => { const { data: sessionData } = useSession(); const { query } = useRouter(); const roomId = z.string().parse(query.id); @@ -224,7 +224,7 @@ const RoomBody: React.FC = () => { if (visible) { if (!!matchedVote) { - return

{ matchedVote.value }

; + return

{matchedVote.value}

; } else { return ; } @@ -243,39 +243,39 @@ const RoomBody: React.FC = () => { if (roomFromDb === undefined) { return (
- { " " } + {" "}
); // Room has been loaded } else if (roomFromDb) { return ( -
{ roomFromDb.roomName }
+
{roomFromDb.roomName}
ID:
-
{ roomFromDb.id }
+
{roomFromDb.id}
- { roomFromDb && ( + {roomFromDb && (

- Story: { roomFromDb.storyName } + Story: {roomFromDb.storyName}

    - { presenceData && + {presenceData && presenceData .filter( (value, index, self) => @@ -288,72 +288,73 @@ const RoomBody: React.FC = () => { .map((presenceItem) => { return (
  • {

    - { presenceItem.data.name }{ " " } - { presenceItem.data.role === "ADMIN" && ( + {presenceItem.data.name}{" "} + {presenceItem.data.role === "ADMIN" && (

    - ) }{ " " } - { presenceItem.clientId === roomFromDb.userId && ( + )}{" "} + {presenceItem.clientId === roomFromDb.userId && (
    - ) } - { " : " } + )} + {" : "}

    - { roomFromDb && + {roomFromDb && votesFromDb && voteString( roomFromDb.visible, votesFromDb, presenceItem.data - ) } + )}
  • ); - }) } + })}
- { roomFromDb.scale.split(",").map((scaleItem, index) => { + {roomFromDb.scale.split(",").map((scaleItem, index) => { return ( ); - }) } + })}
- ) } + )} - { sessionData && + {sessionData && !!roomFromDb && roomFromDb.userId === sessionData.user.id && ( <> @@ -362,38 +363,38 @@ const RoomBody: React.FC = () => {

Room Settings

{ + value={roomScale} + onChange={(event) => { setRoomScale(event.target.value); - } } + }} /> - + { + value={storyNameText} + onChange={(event) => { setStoryNameText(event.target.value); - } } + }} />
- { votesFromDb && + {votesFromDb && (roomFromDb.logs.length > 0 || votesFromDb.length > 0) && (
- ) } + )}
- ) } + )}
); // Room does not exist diff --git a/src/server/api/trpc.ts b/src/server/api/trpc.ts index 03be699..07c0c41 100644 --- a/src/server/api/trpc.ts +++ b/src/server/api/trpc.ts @@ -17,7 +17,6 @@ import { type CreateNextContextOptions } from "@trpc/server/adapters/next"; import { type Session } from "next-auth"; -import { Redis } from "@upstash/redis"; import { getServerAuthSession } from "~/server/auth"; import { prisma } from "~/server/db"; @@ -65,9 +64,7 @@ export const createTRPCContext = async (opts: CreateNextContextOptions) => { * This is where the tRPC API is initialized, connecting the context and transformer. */ import { initTRPC, TRPCError } from "@trpc/server"; -import { Ratelimit } from "@upstash/ratelimit"; import superjson from "superjson"; -import { env } from "~/env.mjs"; const t = initTRPC.context().create({ transformer: superjson, @@ -106,33 +103,11 @@ const enforceRouteProtection = t.middleware(async ({ ctx, next }) => { throw new TRPCError({ code: "UNAUTHORIZED" }); } - try { - const rateLimit = new Ratelimit({ - redis: Redis.fromEnv(), - limiter: Ratelimit.slidingWindow( - Number(env.UPSTASH_RATELIMIT_REQUESTS), - `${Number(env.UPSTASH_RATELIMIT_SECONDS)}s` - ), - analytics: true, - }); - - const { success } = await rateLimit.limit( - `${env.APP_ENV}_${ctx.session.user.id}` - ); - if (!success) throw new TRPCError({ code: "TOO_MANY_REQUESTS" }); - - return next({ - ctx: { - session: { ...ctx.session, user: ctx.session.user }, - }, - }); - } catch { - return next({ - ctx: { - session: { ...ctx.session, user: ctx.session.user }, - }, - }); - } + return next({ + ctx: { + session: { ...ctx.session, user: ctx.session.user }, + }, + }); }); /**