diff --git a/convex/_generated/dataModel.d.ts b/convex/_generated/dataModel.d.ts index f29136b..f97fd19 100644 --- a/convex/_generated/dataModel.d.ts +++ b/convex/_generated/dataModel.d.ts @@ -1,4 +1,4 @@ - +/* eslint-disable */ /** * Generated data model types. * diff --git a/convex/_generated/server.d.ts b/convex/_generated/server.d.ts index a6e81e7..bec05e6 100644 --- a/convex/_generated/server.d.ts +++ b/convex/_generated/server.d.ts @@ -1,4 +1,4 @@ - +/* eslint-disable */ /** * Generated utilities for implementing server-side Convex query and mutation functions. * diff --git a/convex/_generated/server.js b/convex/_generated/server.js index 8df3867..bf3d25a 100644 --- a/convex/_generated/server.js +++ b/convex/_generated/server.js @@ -1,4 +1,4 @@ - +/* eslint-disable */ /** * Generated utilities for implementing server-side Convex query and mutation functions. * diff --git a/convex/dictionary/models.ts b/convex/dictionary/models.ts index b0af9f1..c4cffbd 100644 --- a/convex/dictionary/models.ts +++ b/convex/dictionary/models.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zodToConvex } from 'convex-helpers/server/zod'; +import { zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { getBaseDbModel } from '../shared/models'; diff --git a/convex/leaderboardEntries/model.ts b/convex/leaderboardEntries/model.ts index 3af98e9..9374866 100644 --- a/convex/leaderboardEntries/model.ts +++ b/convex/leaderboardEntries/model.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zid, zodToConvex } from 'convex-helpers/server/zod'; +import { zid, zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { getBaseDbModel } from '../shared/models'; diff --git a/convex/leaderboards/models.ts b/convex/leaderboards/models.ts index 9e04d96..d6056b8 100644 --- a/convex/leaderboards/models.ts +++ b/convex/leaderboards/models.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zid, zodToConvex } from 'convex-helpers/server/zod'; +import { zid, zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { getBaseDbModel } from '../shared/models'; diff --git a/convex/leaderboards/queries.ts b/convex/leaderboards/queries.ts index 575486f..9efd2ca 100644 --- a/convex/leaderboards/queries.ts +++ b/convex/leaderboards/queries.ts @@ -1,6 +1,6 @@ import { type NamedTableInfo, type Query } from 'convex/server'; import { ConvexError } from 'convex/values'; -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { internal } from '../_generated/api'; @@ -32,7 +32,7 @@ export const list = query({ .collect(); const userJoinedLeaderboards = - type === leaderboardType.Enum.private + type === leaderboardType.enum.private ? leaderboards.filter((leaderboard) => leaderboard.users?.includes(userId)) : leaderboards; @@ -42,7 +42,7 @@ export const list = query({ const leaderboardEntries = await ctx.db .query('leaderboardEntries') .withIndex('by_leaderboard_recordedAt', (q) => { - if (range === leaderboardRange.Enum.weekly) { + if (range === leaderboardRange.enum.weekly) { const { lastMonday, nextSunday } = weekBounds(timestamp); return q .eq('leaderboardId', leaderboard._id) @@ -103,7 +103,7 @@ export const readGlobalLeaderboard = query({ const globalLeaderboard = await ctx.db .query('leaderboards') - .withIndex('by_type', (q) => q.eq('type', leaderboardType.Enum.global)) + .withIndex('by_type', (q) => q.eq('type', leaderboardType.enum.global)) .unique(); if (!globalLeaderboard) { @@ -112,7 +112,7 @@ export const readGlobalLeaderboard = query({ let leaderboardEntriesBaseQuery: Query>; - if (range === leaderboardRange.Enum.weekly) { + if (range === leaderboardRange.enum.weekly) { const { lastMonday, nextSunday } = weekBounds(timestamp); leaderboardEntriesBaseQuery = ctx.db @@ -180,7 +180,7 @@ export const populateLeaderboardWithExistingRecords = internalMutation({ async handler(ctx, { userId, leaderboardId }) { const globalLeaderboard = await ctx.db .query('leaderboards') - .withIndex('by_type', (q) => q.eq('type', leaderboardType.Enum.global)) + .withIndex('by_type', (q) => q.eq('type', leaderboardType.enum.global)) .unique(); if (!globalLeaderboard) { throw new ConvexError({ message: 'Global leaderboard not found', code: 500 }); @@ -222,7 +222,7 @@ export const createPrivateLeaderboard = mutation({ const createdLeaderboardId = await ctx.db.insert('leaderboards', { name: data.name, - type: leaderboardType.Enum.private, + type: leaderboardType.enum.private, creatorId: normalizedUserId, users: [normalizedUserId], inviteCode, @@ -323,7 +323,7 @@ export const deletePrivateLeaderboard = mutation({ throw new ConvexError({ message: 'Leaderboard not found.', code: 404 }); } - if (leaderboard.type === leaderboardType.Enum.global) { + if (leaderboard.type === leaderboardType.enum.global) { throw new ConvexError({ message: 'Cannot perform delete opration on a global leaderboard.', code: 403 }); } diff --git a/convex/notifications/queries.ts b/convex/notifications/queries.ts index 0797f80..3622d9c 100644 --- a/convex/notifications/queries.ts +++ b/convex/notifications/queries.ts @@ -1,5 +1,5 @@ import { ConvexError } from 'convex/values'; -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { mutation, query } from '../shared/queries'; diff --git a/convex/puzzleGuessAttempts/helpers.ts b/convex/puzzleGuessAttempts/helpers.ts index 8ea82c5..72742d6 100644 --- a/convex/puzzleGuessAttempts/helpers.ts +++ b/convex/puzzleGuessAttempts/helpers.ts @@ -5,5 +5,5 @@ export function isAttemptCorrect(attempt?: Pick letter.status === checkedLetterStatus.Enum.correct); + return attempt.checkedLetters.every((letter) => letter.status === checkedLetterStatus.enum.correct); } diff --git a/convex/puzzleGuessAttempts/models.ts b/convex/puzzleGuessAttempts/models.ts index b28129a..c624758 100644 --- a/convex/puzzleGuessAttempts/models.ts +++ b/convex/puzzleGuessAttempts/models.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zodToConvex } from 'convex-helpers/server/zod'; +import { zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { getBaseDbModel } from '../shared/models'; diff --git a/convex/puzzleGuessAttempts/queries.ts b/convex/puzzleGuessAttempts/queries.ts index 87d3160..8d8363e 100644 --- a/convex/puzzleGuessAttempts/queries.ts +++ b/convex/puzzleGuessAttempts/queries.ts @@ -1,5 +1,5 @@ import { ConvexError } from 'convex/values'; -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { checkWordleAttempt } from '@/utils/words'; diff --git a/convex/puzzles/internal.ts b/convex/puzzles/internal.ts index a88f59c..e497c33 100644 --- a/convex/puzzles/internal.ts +++ b/convex/puzzles/internal.ts @@ -22,7 +22,7 @@ export const createDailyPuzzle = internalMutation({ const word = pickRandomWord(words); await ctx.db.insert('puzzles', { - type: puzzleType.Enum.daily, + type: puzzleType.enum.daily, creatorId: null, solution: word, solvedBy: [], @@ -48,7 +48,7 @@ export const sendReminderForDailyChallenge = internalMutation({ .query('puzzles') .withIndex('by_type_year_month_day', (q) => q - .eq('type', puzzleType.Enum.daily) + .eq('type', puzzleType.enum.daily) .eq('year', today.getFullYear()) .eq('month', today.getMonth() + 1) .eq('day', today.getDate()) diff --git a/convex/puzzles/models.ts b/convex/puzzles/models.ts index 2d38cc8..41d8f4b 100644 --- a/convex/puzzles/models.ts +++ b/convex/puzzles/models.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zodToConvex } from 'convex-helpers/server/zod'; +import { zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { puzzleGuessAttemptModel } from '../puzzleGuessAttempts/models'; diff --git a/convex/puzzles/queries.ts b/convex/puzzles/queries.ts index 32c3c52..9f83fa8 100644 --- a/convex/puzzles/queries.ts +++ b/convex/puzzles/queries.ts @@ -1,5 +1,5 @@ import { ConvexError } from 'convex/values'; -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { pickRandomWord } from '@/utils/words'; @@ -41,7 +41,7 @@ export const list = query({ const baseQuery = ctx.db.query('puzzles'); const indexedQuery = - type === puzzleType.Enum.daily + type === puzzleType.enum.daily ? baseQuery.withIndex('by_type', (q) => q.eq('type', type).lte('_creationTime', currentDate.getTime())) : baseQuery.withIndex('by_type_creator', (q) => q.eq('type', type).eq('creatorId', normalizedUserId)); @@ -76,7 +76,7 @@ export const readUserActiveTrainingPuzzle = query({ const userTrainingPuzzle = await ctx.db .query('puzzles') - .withIndex('by_type_creator', (q) => q.eq('type', puzzleType.Enum.training).eq('creatorId', normalizedUserId)) + .withIndex('by_type_creator', (q) => q.eq('type', puzzleType.enum.training).eq('creatorId', normalizedUserId)) .order('desc') .first(); @@ -92,7 +92,7 @@ export const readActiveDailyPuzzle = query({ .query('puzzles') .withIndex('by_type_year_month_day', (q) => q - .eq('type', puzzleType.Enum.daily) + .eq('type', puzzleType.enum.daily) .eq('year', date.getFullYear()) .eq('month', date.getMonth() + 1) .eq('day', date.getDate()) @@ -113,7 +113,7 @@ export const readUserPuzzlesStatistics = query({ } const basePuzzlesQuery = - type === puzzleType.Enum.daily + type === puzzleType.enum.daily ? ctx.db.query('puzzles').withIndex('by_type', (q) => q.eq('type', type)) : ctx.db.query('puzzles').withIndex('by_type_creator', (q) => q.eq('type', type).eq('creatorId', userId)); @@ -150,7 +150,7 @@ export const readUserPuzzlesStatistics = query({ const numOfAttempts = attempts.length; const lastAttempt = attempts.at(-1); const isLastAttemptCorrect = lastAttempt?.checkedLetters.every( - (checkedLetter) => checkedLetter.status === checkedLetterStatus.Enum.correct + (checkedLetter) => checkedLetter.status === checkedLetterStatus.enum.correct ); if (isLastAttemptCorrect) { @@ -192,7 +192,7 @@ export const createTrainingPuzzle = mutation({ const word = pickRandomWord(words); const puzzleId = await ctx.db.insert('puzzles', { - type: puzzleType.Enum.training, + type: puzzleType.enum.training, creatorId: userId, solution: word, solvedBy: [], @@ -272,7 +272,7 @@ export const markAsSolved = mutation({ }); } - if (puzzle.type === puzzleType.Enum.daily) { + if (puzzle.type === puzzleType.enum.daily) { const globalLeaderboard = await ctx.db .query('leaderboards') .withIndex('by_type', (q) => q.eq('type', 'global')) diff --git a/convex/shared/models.ts b/convex/shared/models.ts index 4fddef8..50f82d8 100644 --- a/convex/shared/models.ts +++ b/convex/shared/models.ts @@ -1,4 +1,4 @@ -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { z } from 'zod'; export const getBaseDbModel = (tablename: T) => diff --git a/convex/shared/queries.ts b/convex/shared/queries.ts index 202ae98..a63b3d0 100644 --- a/convex/shared/queries.ts +++ b/convex/shared/queries.ts @@ -1,5 +1,5 @@ import { NoOp } from 'convex-helpers/server/customFunctions'; -import { zCustomQuery, zCustomAction, zCustomMutation } from 'convex-helpers/server/zod'; +import { zCustomQuery, zCustomAction, zCustomMutation } from 'convex-helpers/server/zod4'; import { query as baseQuery, diff --git a/convex/userPuzzleStatistics/internal.ts b/convex/userPuzzleStatistics/internal.ts index 81db7e9..318c703 100644 --- a/convex/userPuzzleStatistics/internal.ts +++ b/convex/userPuzzleStatistics/internal.ts @@ -15,7 +15,7 @@ export const readAllUsersQuery = internalQuery({ export const populateForUser = internalMutation({ args: { id: v.id('users') }, async handler(ctx, { id }) { - for (const type of [puzzleType.Enum.daily, puzzleType.Enum.training]) { + for (const type of [puzzleType.enum.daily, puzzleType.enum.training]) { const existingUserStatistics = await ctx.db .query('userPuzzleStatistics') .withIndex('by_user_puzzle_type', (q) => q.eq('userId', id).eq('puzzleType', type)) @@ -25,7 +25,7 @@ export const populateForUser = internalMutation({ } const basePuzzlesQuery = - type === puzzleType.Enum.daily + type === puzzleType.enum.daily ? ctx.db.query('puzzles').withIndex('by_type', (q) => q.eq('type', type)) : ctx.db.query('puzzles').withIndex('by_type_creator', (q) => q.eq('type', type).eq('creatorId', id)); const allPuzzles = await basePuzzlesQuery.order('desc').collect(); @@ -59,7 +59,7 @@ export const populateForUser = internalMutation({ const numOfAttempts = attempts.length; const lastAttempt = attempts.at(-1); const isLastAttemptCorrect = lastAttempt?.checkedLetters.every( - (checkedLetter) => checkedLetter.status === checkedLetterStatus.Enum.correct + (checkedLetter) => checkedLetter.status === checkedLetterStatus.enum.correct ); if (isLastAttemptCorrect) { diff --git a/convex/userPuzzleStatistics/models.ts b/convex/userPuzzleStatistics/models.ts index aa0f059..2e50555 100644 --- a/convex/userPuzzleStatistics/models.ts +++ b/convex/userPuzzleStatistics/models.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zid, zodToConvex } from 'convex-helpers/server/zod'; +import { zid, zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { puzzleType } from '../puzzles/models'; diff --git a/convex/userPuzzleStatistics/queries.ts b/convex/userPuzzleStatistics/queries.ts index 309c0ed..d41fdb4 100644 --- a/convex/userPuzzleStatistics/queries.ts +++ b/convex/userPuzzleStatistics/queries.ts @@ -1,4 +1,4 @@ -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { puzzleType } from '../puzzles/models'; import { query } from '../shared/queries'; diff --git a/convex/users/models.ts b/convex/users/models.ts index 7d14a4f..ea66d1d 100644 --- a/convex/users/models.ts +++ b/convex/users/models.ts @@ -1,5 +1,5 @@ import { defineTable } from 'convex/server'; -import { zodToConvex } from 'convex-helpers/server/zod'; +import { zodToConvex } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { getBaseDbModel } from '../shared/models'; @@ -13,13 +13,13 @@ export type User = z.infer; export const createUserModel = z.object({ nickname: z .string() - .min(3, { message: 'Vzdevek mora vsebovati vsaj 3 znake.' }) - .max(20, { message: 'Vzdevek lahko vsebuje največ 20 znakov.' }) + .min(3, { error: 'Vzdevek mora vsebovati vsaj 3 znake.' }) + .max(20, { error: 'Vzdevek lahko vsebuje največ 20 znakov.' }) .regex(/^(?!.*(@|https?:\/\/|www\.|\.\w{2,})).*$/, { - message: 'Vzdevek ne sme vsebovati spletnih ali e-poštnih naslovov.', + error: 'Vzdevek ne sme vsebovati spletnih ali e-poštnih naslovov.', }) .regex(/[a-zA-Z0-9]/, { - message: 'Vzdevek mora vsebovati vsaj eno črko ali številko.', + error: 'Vzdevek mora vsebovati vsaj eno črko ali številko.', }), }); export type CreateUser = z.infer; diff --git a/convex/users/queries.ts b/convex/users/queries.ts index bd12dc5..0d443d2 100644 --- a/convex/users/queries.ts +++ b/convex/users/queries.ts @@ -1,5 +1,5 @@ import { ConvexError } from 'convex/values'; -import { zid } from 'convex-helpers/server/zod'; +import { zid } from 'convex-helpers/server/zod4'; import { z } from 'zod'; import { internal } from '../_generated/api'; @@ -87,7 +87,7 @@ export const cleanupUserData = internalMutation({ const joinedLeaderboardsQuery = ctx.db .query('leaderboards') - .withIndex('by_type', (q) => q.eq('type', leaderboardType.Enum.private)); + .withIndex('by_type', (q) => q.eq('type', leaderboardType.enum.private)); for await (const joinedLeaderboard of joinedLeaderboardsQuery) { await ctx.db.patch(joinedLeaderboard._id, { users: joinedLeaderboard.users?.filter((userId) => userId !== id) }); } @@ -101,7 +101,7 @@ export const cleanupUserData = internalMutation({ const puzzlesQuery = ctx.db .query('puzzles') - .withIndex('by_type_creator', (q) => q.eq('type', puzzleType.Enum.training).eq('creatorId', id)); + .withIndex('by_type_creator', (q) => q.eq('type', puzzleType.enum.training).eq('creatorId', id)); for await (const puzzle of puzzlesQuery) { await ctx.db.delete(puzzle._id); } diff --git a/eslint.config.js b/eslint.config.js index 7e39959..9e63af1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -9,7 +9,6 @@ export default defineConfig([ eslintPluginPrettierRecommended, { files: ['**/*.ts', '**/*.tsx'], - ignores: ['convex/_generated/**'], plugins: { 'unused-imports': eslintPluginUnusedImports, 'import-x': importX, @@ -55,6 +54,6 @@ export default defineConfig([ }, }, { - ignores: ['dist/*'], + ignores: ['dist/*', 'convex/_generated/**'], }, ]); diff --git a/package.json b/package.json index b4442d9..c01790c 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "require-from-string": "^2.0.2", "sucrase": "^3.35.1", "usehooks-ts": "^3.1.1", - "zod": "^3.25.76" + "zod": "^4.3.6" }, "devDependencies": { "@babel/core": "^7.28.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f90d5e..908e374 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 0.2.0(convex@1.33.1(react@19.2.0)) '@convex-dev/expo-push-notifications': specifier: 0.3.1 - version: 0.3.1(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@3.25.76) + version: 0.3.1(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@4.3.6) '@convex-dev/migrations': specifier: ^0.3.1 version: 0.3.1(convex@1.33.1(react@19.2.0)) @@ -58,7 +58,7 @@ importers: version: 1.33.1(react@19.2.0) convex-helpers: specifier: ^0.1.114 - version: 0.1.114(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@3.25.76) + version: 0.1.114(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@4.3.6) dayjs: specifier: ^1.11.20 version: 1.11.20 @@ -195,8 +195,8 @@ importers: specifier: ^3.1.1 version: 3.1.1(react@19.2.0) zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.3.6 + version: 4.3.6 devDependencies: '@babel/core': specifier: ^7.28.3 @@ -6487,6 +6487,9 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + snapshots: '@ampproject/remapping@2.3.0': @@ -7142,10 +7145,10 @@ snapshots: convex: 1.33.1(react@19.2.0) cron-parser: 4.9.0 - '@convex-dev/expo-push-notifications@0.3.1(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@3.25.76)': + '@convex-dev/expo-push-notifications@0.3.1(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@4.3.6)': dependencies: convex: 1.33.1(react@19.2.0) - convex-helpers: 0.1.114(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@3.25.76) + convex-helpers: 0.1.114(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@4.3.6) transitivePeerDependencies: - '@standard-schema/spec' - hono @@ -9632,13 +9635,13 @@ snapshots: convert-source-map@2.0.0: {} - convex-helpers@0.1.114(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@3.25.76): + convex-helpers@0.1.114(convex@1.33.1(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(zod@4.3.6): dependencies: convex: 1.33.1(react@19.2.0) optionalDependencies: react: 19.2.0 typescript: 5.9.3 - zod: 3.25.76 + zod: 4.3.6 convex@1.33.1(react@19.2.0): dependencies: @@ -13760,3 +13763,5 @@ snapshots: yocto-queue@0.1.0: {} zod@3.25.76: {} + + zod@4.3.6: {} diff --git a/src/__tests__/leaderboards/all-time-leaderboard.test.tsx b/src/__tests__/leaderboards/all-time-leaderboard.test.tsx index de07782..ed40a20 100644 --- a/src/__tests__/leaderboards/all-time-leaderboard.test.tsx +++ b/src/__tests__/leaderboards/all-time-leaderboard.test.tsx @@ -44,7 +44,7 @@ describe('', () => { it('should trigger global leaderboard and private leaderboards queries with "alltime" param', () => { render(); - expect(useLeaderboardsSpy).toHaveBeenCalledWith(leaderboardType.Enum.private, leaderboardRange.Enum.alltime); + expect(useLeaderboardsSpy).toHaveBeenCalledWith(leaderboardType.enum.private, leaderboardRange.enum.alltime); }); it('should set the parent navigation option title to "Lestvica vseh časov"', () => { diff --git a/src/__tests__/leaderboards/weekly-leaderboard.test.tsx b/src/__tests__/leaderboards/weekly-leaderboard.test.tsx index 9a1a871..b1a00b0 100644 --- a/src/__tests__/leaderboards/weekly-leaderboard.test.tsx +++ b/src/__tests__/leaderboards/weekly-leaderboard.test.tsx @@ -45,7 +45,7 @@ describe('', () => { it('should trigger global leaderboard and private leaderboards queries with "weekly" param', () => { render(); - expect(useLeaderboardsSpy).toHaveBeenCalledWith(leaderboardType.Enum.private, leaderboardRange.Enum.weekly); + expect(useLeaderboardsSpy).toHaveBeenCalledWith(leaderboardType.enum.private, leaderboardRange.enum.weekly); }); it('should set the parent navigation option title to "Tedenska lestvica"', () => { diff --git a/src/__tests__/onboard/gameplay-settings.test.tsx b/src/__tests__/onboard/gameplay-settings.test.tsx index 83c5725..32d2c8e 100644 --- a/src/__tests__/onboard/gameplay-settings.test.tsx +++ b/src/__tests__/onboard/gameplay-settings.test.tsx @@ -26,7 +26,7 @@ describe('Gameplay Settings Screen', () => { useRouterSpy.mockReturnValue({ replace: mockReplace }); useGameplaySettingsSpy.mockReturnValue({ autosubmitPuzzleAttempt: true, - keyboardType: gameplayKeyboardType.Enum.qwerty, + keyboardType: gameplayKeyboardType.enum.qwerty, updateSettings: mockUpdateSettings, isUninitialised: true, setDefaultSettings: mockSetDefaultSettings, @@ -72,8 +72,8 @@ describe('Gameplay Settings Screen', () => { }); it.each([ - { radioButton: 'QWERTY tipkovnica', keyboardType: gameplayKeyboardType.Enum.qwerty }, - { radioButton: 'ABCDE tipkovnica', keyboardType: gameplayKeyboardType.Enum.abcde }, + { radioButton: 'QWERTY tipkovnica', keyboardType: gameplayKeyboardType.enum.qwerty }, + { radioButton: 'ABCDE tipkovnica', keyboardType: gameplayKeyboardType.enum.abcde }, ])('should update gameplay setting on "$radioButton" radio button press', ({ radioButton, keyboardType }) => { render(); diff --git a/src/__tests__/play/daily-puzzle-solved.test.tsx b/src/__tests__/play/daily-puzzle-solved.test.tsx index 18a72ea..383f22c 100644 --- a/src/__tests__/play/daily-puzzle-solved.test.tsx +++ b/src/__tests__/play/daily-puzzle-solved.test.tsx @@ -61,7 +61,7 @@ describe('Daily puzzle solved screen', () => { it('should trigger puzzle statistics query with "daily" as a puzzle type param', () => { render(); - expect(usePuzzleStatisticsSpy).toHaveBeenCalledWith(puzzleType.Enum.daily); + expect(usePuzzleStatisticsSpy).toHaveBeenCalledWith(puzzleType.enum.daily); }); it('should render correct title and subtile when isFailed=false', () => { diff --git a/src/__tests__/play/training-puzzle-solved.test.tsx b/src/__tests__/play/training-puzzle-solved.test.tsx index 801239c..b28ff06 100644 --- a/src/__tests__/play/training-puzzle-solved.test.tsx +++ b/src/__tests__/play/training-puzzle-solved.test.tsx @@ -62,7 +62,7 @@ describe('Training puzzle solved screen', () => { it('should trigger puzzle statistics query with "training" as a puzzle type param', () => { render(); - expect(usePuzzleStatisticsSpy).toHaveBeenCalledWith(puzzleType.Enum.training); + expect(usePuzzleStatisticsSpy).toHaveBeenCalledWith(puzzleType.enum.training); }); it('should render correct title and subtile when isFailed=false', () => { diff --git a/src/__tests__/settings.test.tsx b/src/__tests__/settings.test.tsx index aa11c1e..ab58b62 100644 --- a/src/__tests__/settings.test.tsx +++ b/src/__tests__/settings.test.tsx @@ -77,7 +77,7 @@ describe('Settings screen', () => { }); useGameplaySettingsSpy.mockReturnValue({ autosubmitPuzzleAttempt: true, - keyboardType: gameplayKeyboardType.Enum.qwerty, + keyboardType: gameplayKeyboardType.enum.qwerty, updateSettings: mockUpdateSettings, setDefaultSettings: mockSetDefaultSettings, }); @@ -138,10 +138,10 @@ describe('Settings screen', () => { render(); fireEvent.press(screen.getByRole('radio', { name: /QWERTY tipkovnica/ })); - expect(mockUpdateSettings).toHaveBeenCalledWith({ keyboardType: gameplayKeyboardType.Enum.qwerty }); + expect(mockUpdateSettings).toHaveBeenCalledWith({ keyboardType: gameplayKeyboardType.enum.qwerty }); fireEvent.press(screen.getByRole('radio', { name: /ABCDE tipkovnica/ })); - expect(mockUpdateSettings).toHaveBeenCalledWith({ keyboardType: gameplayKeyboardType.Enum.abcde }); + expect(mockUpdateSettings).toHaveBeenCalledWith({ keyboardType: gameplayKeyboardType.enum.abcde }); }); it('should set default settings on "Ponastavi" button press', async () => { diff --git a/src/app/(authenticated)/history/daily-challenges.tsx b/src/app/(authenticated)/history/daily-challenges.tsx index fc71599..7b7735f 100644 --- a/src/app/(authenticated)/history/daily-challenges.tsx +++ b/src/app/(authenticated)/history/daily-challenges.tsx @@ -15,7 +15,7 @@ export default function DailyChallengesHistoryScreen() { const timestampRef = useRef(Date.now()); const { results, loadMore, status } = usePaginatedQuery( api.puzzles.queries.list, - user?._id ? { userId: user._id, type: puzzleType.Enum.daily, timestamp: timestampRef.current } : 'skip', + user?._id ? { userId: user._id, type: puzzleType.enum.daily, timestamp: timestampRef.current } : 'skip', { initialNumItems: 7 } ); diff --git a/src/app/(authenticated)/history/training-challenges.tsx b/src/app/(authenticated)/history/training-challenges.tsx index 879487e..37ec46a 100644 --- a/src/app/(authenticated)/history/training-challenges.tsx +++ b/src/app/(authenticated)/history/training-challenges.tsx @@ -15,7 +15,7 @@ export default function TrainingChallengesHistoryScreen() { const timestampRef = useRef(Date.now()); const { results, loadMore, status } = usePaginatedQuery( api.puzzles.queries.list, - user?._id ? { userId: user._id, type: puzzleType.Enum.training, timestamp: timestampRef.current } : 'skip', + user?._id ? { userId: user._id, type: puzzleType.enum.training, timestamp: timestampRef.current } : 'skip', { initialNumItems: 7 } ); diff --git a/src/app/(authenticated)/leaderboards/all-time-leaderboard.tsx b/src/app/(authenticated)/leaderboards/all-time-leaderboard.tsx index 20fab39..ce8fc22 100644 --- a/src/app/(authenticated)/leaderboards/all-time-leaderboard.tsx +++ b/src/app/(authenticated)/leaderboards/all-time-leaderboard.tsx @@ -18,7 +18,7 @@ export default function AllTimeLeaderboardScreen() { onPresentLeaderboardActions, onCreatePrivateLeaderboard, onJoinPrivateLeaderboard, - } = useLeaderboards(leaderboardType.Enum.private, leaderboardRange.Enum.alltime); + } = useLeaderboards(leaderboardType.enum.private, leaderboardRange.enum.alltime); useFocusEffect( useCallback(() => { diff --git a/src/app/(authenticated)/leaderboards/weekly-leaderboard.tsx b/src/app/(authenticated)/leaderboards/weekly-leaderboard.tsx index 860321e..944f856 100644 --- a/src/app/(authenticated)/leaderboards/weekly-leaderboard.tsx +++ b/src/app/(authenticated)/leaderboards/weekly-leaderboard.tsx @@ -19,7 +19,7 @@ export default function WeeklyLeaderboardScreen() { onCreatePrivateLeaderboard, onJoinPrivateLeaderboard, onPresentLeaderboardActions, - } = useLeaderboards(leaderboardType.Enum.private, leaderboardRange.Enum.weekly); + } = useLeaderboards(leaderboardType.enum.private, leaderboardRange.enum.weekly); useFocusEffect( useCallback(() => { diff --git a/src/app/(authenticated)/play/daily-puzzle-solved.tsx b/src/app/(authenticated)/play/daily-puzzle-solved.tsx index 4648887..74bec14 100644 --- a/src/app/(authenticated)/play/daily-puzzle-solved.tsx +++ b/src/app/(authenticated)/play/daily-puzzle-solved.tsx @@ -16,7 +16,7 @@ const UniIcon = withUnistyles(Octicons); export default function DailyPuzzleSolvedScreen() { const router = useRouter(); const { attempts, isFailed, onShareResults, puzzle } = useDailyPuzzle(); - const { isLoading, data } = usePuzzleStatistics(puzzleType.Enum.daily); + const { isLoading, data } = usePuzzleStatistics(puzzleType.enum.daily); const { isLoading: isLoadingDictionaryEntry, data: dictionaryEntry } = useDictionaryEntry( puzzle ? { term: puzzle.solution } : 'skip' ); diff --git a/src/app/(authenticated)/play/training-puzzle-solved.tsx b/src/app/(authenticated)/play/training-puzzle-solved.tsx index f0a5f93..dd896f4 100644 --- a/src/app/(authenticated)/play/training-puzzle-solved.tsx +++ b/src/app/(authenticated)/play/training-puzzle-solved.tsx @@ -15,7 +15,7 @@ export default function TrainingPuzzleSolvedScreen() { const router = useRouter(); const { attempts, onCreateTrainingPuzzle, isCreating, isMarkingAsSolved, isFailed, onShareResults, puzzle } = useTrainingPuzzle(); - const { isLoading, data } = usePuzzleStatistics(puzzleType.Enum.training); + const { isLoading, data } = usePuzzleStatistics(puzzleType.enum.training); const { isLoading: isLoadingDictionaryEntry, data: dictionaryEntry } = useDictionaryEntry( puzzle ? { term: puzzle.solution } : 'skip' ); diff --git a/src/app/(authenticated)/settings.tsx b/src/app/(authenticated)/settings.tsx index 1c36258..9aa2be8 100644 --- a/src/app/(authenticated)/settings.tsx +++ b/src/app/(authenticated)/settings.tsx @@ -56,8 +56,8 @@ export default function SettingsScreen() { style={styles.radioContainer} value={keyboardType} > - - + + } title="Razporeditev tipk" diff --git a/src/app/onboard/gameplay-settings.tsx b/src/app/onboard/gameplay-settings.tsx index 81ae59b..bb46c18 100644 --- a/src/app/onboard/gameplay-settings.tsx +++ b/src/app/onboard/gameplay-settings.tsx @@ -59,8 +59,8 @@ export default function GameplaySettingsScreen() { style={styles.radioContainer} value={keyboardType} > - - + + } title="Razporeditev tipk" diff --git a/src/app/onboard/restore-account.tsx b/src/app/onboard/restore-account.tsx index 1660b00..3caa2d7 100644 --- a/src/app/onboard/restore-account.tsx +++ b/src/app/onboard/restore-account.tsx @@ -12,8 +12,8 @@ import { useUser } from '@/hooks/useUser'; import { getOsMajorVersion } from '@/utils/platform'; const restoreAccountModel = z.object({ - id: z.string().trim().min(1, { message: 'Polje je obvezno.' }), - nickname: z.string().trim().min(1, { message: 'Polje je obvezno.' }), + id: z.string().trim().min(1, { error: 'Polje je obvezno.' }), + nickname: z.string().trim().min(1, { error: 'Polje je obvezno.' }), }); type RestoreAccount = z.infer; diff --git a/src/components/elements/GuessGrid/GuessGrid.hook.ts b/src/components/elements/GuessGrid/GuessGrid.hook.ts index 2d4e7e1..7f0f8c3 100644 --- a/src/components/elements/GuessGrid/GuessGrid.hook.ts +++ b/src/components/elements/GuessGrid/GuessGrid.hook.ts @@ -41,14 +41,14 @@ export function useGuessGrid({ attempts, onSubmitAttempt }: Options) { continue; } - const isExistingLetterCorrect = existingLetter.status === checkedLetterStatus.Enum.correct; - const isExistingLetterMisplaced = existingLetter.status === checkedLetterStatus.Enum.misplaced; + const isExistingLetterCorrect = existingLetter.status === checkedLetterStatus.enum.correct; + const isExistingLetterMisplaced = existingLetter.status === checkedLetterStatus.enum.misplaced; if (isExistingLetterCorrect) { continue; } - if (isExistingLetterMisplaced && letter.status === checkedLetterStatus.Enum.invalid) { + if (isExistingLetterMisplaced && letter.status === checkedLetterStatus.enum.invalid) { continue; } diff --git a/src/components/elements/GuessGrid/GuessGrid.test.tsx b/src/components/elements/GuessGrid/GuessGrid.test.tsx index 384448a..e172f8e 100644 --- a/src/components/elements/GuessGrid/GuessGrid.test.tsx +++ b/src/components/elements/GuessGrid/GuessGrid.test.tsx @@ -29,11 +29,11 @@ describe('', () => { userId: 'user1' as Id<'users'>, attempt: 'apple', checkedLetters: [ - { letter: 'a', index: 0, status: checkedLetterStatus.Enum.misplaced }, - { letter: 'p', index: 1, status: checkedLetterStatus.Enum.misplaced }, - { letter: 'p', index: 2, status: checkedLetterStatus.Enum.invalid }, - { letter: 'l', index: 3, status: checkedLetterStatus.Enum.misplaced }, - { letter: 'e', index: 4, status: checkedLetterStatus.Enum.misplaced }, + { letter: 'a', index: 0, status: checkedLetterStatus.enum.misplaced }, + { letter: 'p', index: 1, status: checkedLetterStatus.enum.misplaced }, + { letter: 'p', index: 2, status: checkedLetterStatus.enum.invalid }, + { letter: 'l', index: 3, status: checkedLetterStatus.enum.misplaced }, + { letter: 'e', index: 4, status: checkedLetterStatus.enum.misplaced }, ], }; const attempt2 = { @@ -43,11 +43,11 @@ describe('', () => { userId: 'user1' as Id<'users'>, attempt: 'palms', checkedLetters: [ - { letter: 'p', index: 0, status: checkedLetterStatus.Enum.correct }, - { letter: 'a', index: 1, status: checkedLetterStatus.Enum.misplaced }, - { letter: 'l', index: 2, status: checkedLetterStatus.Enum.misplaced }, - { letter: 'm', index: 3, status: checkedLetterStatus.Enum.misplaced }, - { letter: 's', index: 4, status: checkedLetterStatus.Enum.misplaced }, + { letter: 'p', index: 0, status: checkedLetterStatus.enum.correct }, + { letter: 'a', index: 1, status: checkedLetterStatus.enum.misplaced }, + { letter: 'l', index: 2, status: checkedLetterStatus.enum.misplaced }, + { letter: 'm', index: 3, status: checkedLetterStatus.enum.misplaced }, + { letter: 's', index: 4, status: checkedLetterStatus.enum.misplaced }, ], }; const attempt3 = { @@ -57,11 +57,11 @@ describe('', () => { userId: 'user1' as Id<'users'>, attempt: 'psalm', checkedLetters: [ - { letter: 'p', index: 0, status: checkedLetterStatus.Enum.correct }, - { letter: 's', index: 1, status: checkedLetterStatus.Enum.correct }, - { letter: 'a', index: 2, status: checkedLetterStatus.Enum.correct }, - { letter: 'l', index: 3, status: checkedLetterStatus.Enum.correct }, - { letter: 'm', index: 4, status: checkedLetterStatus.Enum.correct }, + { letter: 'p', index: 0, status: checkedLetterStatus.enum.correct }, + { letter: 's', index: 1, status: checkedLetterStatus.enum.correct }, + { letter: 'a', index: 2, status: checkedLetterStatus.enum.correct }, + { letter: 'l', index: 3, status: checkedLetterStatus.enum.correct }, + { letter: 'm', index: 4, status: checkedLetterStatus.enum.correct }, ], }; diff --git a/src/components/elements/GuessGrid/GuessGrid.tsx b/src/components/elements/GuessGrid/GuessGrid.tsx index 3eef2ad..fa65381 100644 --- a/src/components/elements/GuessGrid/GuessGrid.tsx +++ b/src/components/elements/GuessGrid/GuessGrid.tsx @@ -10,9 +10,9 @@ function GuessGridCell({ testID, value, idx, checkedLetters = [], cellWidth }: R const checkedLetter = checkedLetters.find( (checkedLetter) => checkedLetter.index === idx && checkedLetter.letter === value ); - const isCorrect = value ? checkedLetter?.status === checkedLetterStatus.Enum.correct : false; - const isMisplaced = value ? checkedLetter?.status === checkedLetterStatus.Enum.misplaced : false; - const isInvalid = value ? checkedLetter?.status === checkedLetterStatus.Enum.invalid : false; + const isCorrect = value ? checkedLetter?.status === checkedLetterStatus.enum.correct : false; + const isMisplaced = value ? checkedLetter?.status === checkedLetterStatus.enum.misplaced : false; + const isInvalid = value ? checkedLetter?.status === checkedLetterStatus.enum.invalid : false; return ( diff --git a/src/components/elements/HistoryGrid/HistoryGrid.test.tsx b/src/components/elements/HistoryGrid/HistoryGrid.test.tsx index b9124ab..9add445 100644 --- a/src/components/elements/HistoryGrid/HistoryGrid.test.tsx +++ b/src/components/elements/HistoryGrid/HistoryGrid.test.tsx @@ -13,7 +13,7 @@ const testPuzzle = { year: 2023, month: 1, day: 1, - type: puzzleType.Enum.daily, + type: puzzleType.enum.daily, solution: 'apple', solvedBy: [], attempts: [], @@ -57,7 +57,7 @@ describe('', () => { }); it('shows solution for non-daily puzzle if solved', () => { - const puzzle = { ...testPuzzle, type: puzzleType.Enum.training, solvedBy: ['user1'] }; + const puzzle = { ...testPuzzle, type: puzzleType.enum.training, solvedBy: ['user1'] }; render(); expect(screen.getByText(/Rešitev:/)).toBeOnTheScreen(); diff --git a/src/components/elements/HistoryGrid/HistoryGrid.tsx b/src/components/elements/HistoryGrid/HistoryGrid.tsx index 87629e2..ab24693 100644 --- a/src/components/elements/HistoryGrid/HistoryGrid.tsx +++ b/src/components/elements/HistoryGrid/HistoryGrid.tsx @@ -27,8 +27,8 @@ export function HistoryGrid({ puzzle, userId, style, cellWidth }: Readonly { const padded: PuzzleGuessAttempt[] = new Array(6) diff --git a/src/components/elements/Keyboard/Keyboard.test.tsx b/src/components/elements/Keyboard/Keyboard.test.tsx index 9d26391..e8eae14 100644 --- a/src/components/elements/Keyboard/Keyboard.test.tsx +++ b/src/components/elements/Keyboard/Keyboard.test.tsx @@ -15,7 +15,7 @@ describe('', () => { const useGameplaySettingsSpy = useGameplaySettings as jest.Mock; beforeEach(() => { - useGameplaySettingsSpy.mockReturnValue({ keyboardType: gameplayKeyboardType.Enum.qwerty }); + useGameplaySettingsSpy.mockReturnValue({ keyboardType: gameplayKeyboardType.enum.qwerty }); }); it('should render without crashing', () => { @@ -54,9 +54,9 @@ describe('', () => { it('should apply styles based on checked letters status', () => { const checkedLetters = [ - { index: 0, letter: 'a', status: checkedLetterStatus.Enum.correct }, - { index: 1, letter: 'b', status: checkedLetterStatus.Enum.misplaced }, - { index: 2, letter: 'c', status: checkedLetterStatus.Enum.invalid }, + { index: 0, letter: 'a', status: checkedLetterStatus.enum.correct }, + { index: 1, letter: 'b', status: checkedLetterStatus.enum.misplaced }, + { index: 2, letter: 'c', status: checkedLetterStatus.enum.invalid }, ]; render( {}} />); @@ -76,8 +76,8 @@ describe('', () => { }); it.each([ - { keyboardType: gameplayKeyboardType.Enum.abcde, expectedFirstKey: 'a' }, - { keyboardType: gameplayKeyboardType.Enum.qwerty, expectedFirstKey: 'e' }, + { keyboardType: gameplayKeyboardType.enum.abcde, expectedFirstKey: 'a' }, + { keyboardType: gameplayKeyboardType.enum.qwerty, expectedFirstKey: 'e' }, ])( 'should render "$expectedFirstKey" as the first key when keyboard layout is $keyboardType', ({ keyboardType, expectedFirstKey }) => { diff --git a/src/components/elements/Keyboard/Keyboard.tsx b/src/components/elements/Keyboard/Keyboard.tsx index 1416a3d..a3645d0 100644 --- a/src/components/elements/Keyboard/Keyboard.tsx +++ b/src/components/elements/Keyboard/Keyboard.tsx @@ -18,7 +18,7 @@ export function Keyboard({ isDisabled, onKeyPress, checkedLetters = [] }: Readon const { keyboardType } = useGameplaySettings(); const keys = useMemo(() => { - return keyboardType === gameplayKeyboardType.Enum.qwerty ? qwertyKeys : abcdKeys; + return keyboardType === gameplayKeyboardType.enum.qwerty ? qwertyKeys : abcdKeys; }, [keyboardType]); return ( @@ -27,9 +27,9 @@ export function Keyboard({ isDisabled, onKeyPress, checkedLetters = [] }: Readon {keysRow.map((key) => { const checkedLetter = checkedLetters.find((checkedLetter) => checkedLetter.letter === key); - const isCorrect = checkedLetter?.status === checkedLetterStatus.Enum.correct; - const isInvalid = checkedLetter?.status === checkedLetterStatus.Enum.invalid; - const isMisplaced = checkedLetter?.status === checkedLetterStatus.Enum.misplaced; + const isCorrect = checkedLetter?.status === checkedLetterStatus.enum.correct; + const isInvalid = checkedLetter?.status === checkedLetterStatus.enum.invalid; + const isMisplaced = checkedLetter?.status === checkedLetterStatus.enum.misplaced; const isSpecialCharacter = key.startsWith('{') && key.endsWith('}'); return ( diff --git a/src/constants/puzzles.ts b/src/constants/puzzles.ts index 7b1fc79..86ebaf0 100644 --- a/src/constants/puzzles.ts +++ b/src/constants/puzzles.ts @@ -1,7 +1,7 @@ import { checkedLetterStatus } from '@/convex/puzzleGuessAttempts/models'; export const checkedStatusToEmojiMap = new Map([ - [checkedLetterStatus.Enum.invalid, '⬛️'], - [checkedLetterStatus.Enum.misplaced, '🟨'], - [checkedLetterStatus.Enum.correct, '🟩'], + [checkedLetterStatus.enum.invalid, '⬛️'], + [checkedLetterStatus.enum.misplaced, '🟨'], + [checkedLetterStatus.enum.correct, '🟩'], ]); diff --git a/src/hooks/useDailyPuzzle/useDailyPuzzle.test.ts b/src/hooks/useDailyPuzzle/useDailyPuzzle.test.ts index 413ac20..74830b1 100644 --- a/src/hooks/useDailyPuzzle/useDailyPuzzle.test.ts +++ b/src/hooks/useDailyPuzzle/useDailyPuzzle.test.ts @@ -241,7 +241,7 @@ describe('useDailyPuzzle', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('puzzle:solved', { puzzleId: testDailyPuzzle1._id, userId: testUser1._id, - type: puzzleType.Enum.daily, + type: puzzleType.enum.daily, }); expect(hapticsImpactAsyncSpy).not.toHaveBeenCalled(); @@ -276,7 +276,7 @@ describe('useDailyPuzzle', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('puzzle:solved', { puzzleId: testDailyPuzzle1._id, userId: testUser1._id, - type: puzzleType.Enum.daily, + type: puzzleType.enum.daily, }); expect(mockToast).not.toHaveBeenCalled(); @@ -310,7 +310,7 @@ describe('useDailyPuzzle', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('puzzle:solved', { puzzleId: testDailyPuzzle1._id, userId: testUser1._id, - type: puzzleType.Enum.daily, + type: puzzleType.enum.daily, }); expect(mockToast).not.toHaveBeenCalled(); diff --git a/src/hooks/useDailyPuzzle/useDailyPuzzle.ts b/src/hooks/useDailyPuzzle/useDailyPuzzle.ts index 41376a2..0a22079 100644 --- a/src/hooks/useDailyPuzzle/useDailyPuzzle.ts +++ b/src/hooks/useDailyPuzzle/useDailyPuzzle.ts @@ -36,7 +36,7 @@ export function useDailyPuzzle() { if (isCorrect) { await Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success); markPuzzleAsSolved({ puzzleId: puzzle?._id!, userId: user?._id! }); - posthog.capture('puzzle:solved', { puzzleId: puzzle?._id!, userId: user?._id!, type: puzzleType.Enum.daily }); + posthog.capture('puzzle:solved', { puzzleId: puzzle?._id!, userId: user?._id!, type: puzzleType.enum.daily }); } else if (attemptIdx === 5) { await Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error); markPuzzleAsSolved({ puzzleId: puzzle?._id!, userId: user?._id! }); diff --git a/src/hooks/useGameplaySettings/useGameplaySettings.test.ts b/src/hooks/useGameplaySettings/useGameplaySettings.test.ts index 4047f8b..09d4a10 100644 --- a/src/hooks/useGameplaySettings/useGameplaySettings.test.ts +++ b/src/hooks/useGameplaySettings/useGameplaySettings.test.ts @@ -31,13 +31,13 @@ describe('useGameplaySettings', () => { await waitFor(() => { expect(result.current.isUninitialised).toBe(true); }); - expect(result.current.keyboardType).toBe(gameplayKeyboardType.Enum.qwerty); + expect(result.current.keyboardType).toBe(gameplayKeyboardType.enum.qwerty); }); it('should load saved settings from storage', async () => { const saved: GameplaySettings = { autosubmitPuzzleAttempt: false, - keyboardType: gameplayKeyboardType.Enum.abcde, + keyboardType: gameplayKeyboardType.enum.abcde, }; (AsyncStorage.getItem as jest.Mock).mockResolvedValueOnce(JSON.stringify(saved)); @@ -47,7 +47,7 @@ describe('useGameplaySettings', () => { expect(result.current.autosubmitPuzzleAttempt).toBe(false); }); - expect(result.current.keyboardType).toBe(gameplayKeyboardType.Enum.abcde); + expect(result.current.keyboardType).toBe(gameplayKeyboardType.enum.abcde); expect(result.current.isUninitialised).toBe(false); }); @@ -60,7 +60,7 @@ describe('useGameplaySettings', () => { expect(result.current.autosubmitPuzzleAttempt).toBe(true); }); - expect(result.current.keyboardType).toBe(gameplayKeyboardType.Enum.qwerty); + expect(result.current.keyboardType).toBe(gameplayKeyboardType.enum.qwerty); }); it('should update settings and save to storage', async () => { @@ -80,7 +80,7 @@ describe('useGameplaySettings', () => { 'GAMEPLAY_SETTINGS', JSON.stringify({ autosubmitPuzzleAttempt: false, - keyboardType: gameplayKeyboardType.Enum.qwerty, + keyboardType: gameplayKeyboardType.enum.qwerty, }) ); expect(result.current.autosubmitPuzzleAttempt).toBe(false); @@ -90,7 +90,7 @@ describe('useGameplaySettings', () => { it('should merge new settings with existing ones', async () => { const saved: GameplaySettings = { autosubmitPuzzleAttempt: false, - keyboardType: gameplayKeyboardType.Enum.abcde, + keyboardType: gameplayKeyboardType.enum.abcde, }; (AsyncStorage.getItem as jest.Mock).mockResolvedValueOnce(JSON.stringify(saved)); @@ -101,14 +101,14 @@ describe('useGameplaySettings', () => { }); await act(async () => { - await result.current.updateSettings({ keyboardType: gameplayKeyboardType.Enum.qwerty }); + await result.current.updateSettings({ keyboardType: gameplayKeyboardType.enum.qwerty }); }); expect(AsyncStorage.setItem).toHaveBeenCalledWith( 'GAMEPLAY_SETTINGS', JSON.stringify({ autosubmitPuzzleAttempt: false, - keyboardType: gameplayKeyboardType.Enum.qwerty, + keyboardType: gameplayKeyboardType.enum.qwerty, }) ); }); diff --git a/src/hooks/useGameplaySettings/useGameplaySettings.ts b/src/hooks/useGameplaySettings/useGameplaySettings.ts index e76c551..30610bf 100644 --- a/src/hooks/useGameplaySettings/useGameplaySettings.ts +++ b/src/hooks/useGameplaySettings/useGameplaySettings.ts @@ -17,7 +17,7 @@ const GAMEPLAY_SETTINGS_STORAGE_KEY = 'GAMEPLAY_SETTINGS'; const gameplaySettingsDefaultValues = { autosubmitPuzzleAttempt: true, - keyboardType: gameplayKeyboardType.Enum.qwerty, + keyboardType: gameplayKeyboardType.enum.qwerty, } as const; export function useGameplaySettings() { @@ -56,7 +56,7 @@ export function useGameplaySettings() { return useMemo( () => ({ autosubmitPuzzleAttempt: settings && settings !== 'loading' ? settings.autosubmitPuzzleAttempt : true, - keyboardType: settings && settings !== 'loading' ? settings.keyboardType : gameplayKeyboardType.Enum.qwerty, + keyboardType: settings && settings !== 'loading' ? settings.keyboardType : gameplayKeyboardType.enum.qwerty, isUninitialised: settings !== 'loading' && !settings, updateSettings, setDefaultSettings, diff --git a/src/hooks/useLeaderboards/useLeaderboards.test.ts b/src/hooks/useLeaderboards/useLeaderboards.test.ts index 9d2f6f7..85a2cdc 100644 --- a/src/hooks/useLeaderboards/useLeaderboards.test.ts +++ b/src/hooks/useLeaderboards/useLeaderboards.test.ts @@ -97,7 +97,7 @@ describe('useLeaderboards', () => { const testLeaderboard = { _id: 'testLeaderboardId' as Id<'leaderboards'>, _creationTime: 1751438306804, - type: leaderboardType.Enum.private, + type: leaderboardType.enum.private, creatorId: 'testCreatorId' as Id<'users'>, inviteCode: 'INVITE_ME', name: 'Test leaderboard', @@ -107,7 +107,7 @@ describe('useLeaderboards', () => { const testUser = { _id: 'testUserId' as Id<'users'> }; - const initialProps = { type: leaderboardType.Enum.private, range: leaderboardRange.Enum.weekly }; + const initialProps = { type: leaderboardType.enum.private, range: leaderboardRange.enum.weekly }; const renderHook = renderHookBase< ReturnType, @@ -191,7 +191,7 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:join', { leaderboardId: 'leaderboard1', userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); expect(mockToast).not.toHaveBeenCalled(); @@ -318,7 +318,7 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:create', { leaderboardId: 'leaderboardId', userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -431,14 +431,14 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:delete', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockToast).not.toHaveBeenCalled(); }); @@ -478,12 +478,12 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:delete', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -515,7 +515,7 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:update_name', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -523,7 +523,7 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -558,12 +558,12 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:update_name', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -593,12 +593,12 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:update_name', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); } ); @@ -627,12 +627,12 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:update_name', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -665,10 +665,10 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:invite_code:copy', { - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -691,10 +691,10 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboardWithCurrentUserAsCreator._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:invite_code:copy', { - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); }); @@ -740,13 +740,13 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboard._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); await waitFor(() => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:leave', { leaderboardId: testLeaderboard._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); }); @@ -786,12 +786,12 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboard._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:leave', { leaderboardId: testLeaderboard._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -813,12 +813,12 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboard._id, userId: undefined, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).not.toHaveBeenCalledWith('leaderboards:leave', { leaderboardId: testLeaderboard._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); @@ -851,10 +851,10 @@ describe('useLeaderboards', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:actions_open', { leaderboardId: testLeaderboard._id, userId: testUser._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); expect(mockCaptureEvent).toHaveBeenCalledWith('leaderboards:invite_code:copy', { - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }); }); diff --git a/src/hooks/useLeaderboards/useLeaderboards.ts b/src/hooks/useLeaderboards/useLeaderboards.ts index 6c5283b..10f2607 100644 --- a/src/hooks/useLeaderboards/useLeaderboards.ts +++ b/src/hooks/useLeaderboards/useLeaderboards.ts @@ -59,7 +59,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) posthog.capture('leaderboards:leave', { leaderboardId, userId: user._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }) .catch(() => { @@ -88,7 +88,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) posthog.capture('leaderboards:delete', { leaderboardId, userId: user._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }) .catch(() => { @@ -122,7 +122,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) posthog.capture('leaderboards:update_name', { leaderboardId, userId: user._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }) .catch(() => { @@ -157,7 +157,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) posthog.capture('leaderboards:join', { leaderboardId: leaderboard._id, userId: user._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }) .catch((err) => { @@ -202,7 +202,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) posthog.capture('leaderboards:create', { leaderboardId, userId: user._id, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); }) .catch(() => { @@ -226,7 +226,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) text: 'Kopiraj', onPress() { Clipboard.setStringAsync(inviteCode).then(() => { - posthog.capture('leaderboards:invite_code:copy', { leaderboardType: leaderboardType.Enum.private }); + posthog.capture('leaderboards:invite_code:copy', { leaderboardType: leaderboardType.enum.private }); toaster.toast('Koda kopirana', { intent: 'success' }); }); }, @@ -241,7 +241,7 @@ export function useLeaderboards(type: LeaderboardType, range: LeaderboardRange) posthog.capture('leaderboards:actions_open', { leaderboardId: leaderboard._id, userId: user?._id!, - leaderboardType: leaderboardType.Enum.private, + leaderboardType: leaderboardType.enum.private, }); actionSheet.present( diff --git a/src/hooks/usePuzzlesStatistics/usePuzzlesStatistics.test.ts b/src/hooks/usePuzzlesStatistics/usePuzzlesStatistics.test.ts index 5e1eb90..0335de0 100644 --- a/src/hooks/usePuzzlesStatistics/usePuzzlesStatistics.test.ts +++ b/src/hooks/usePuzzlesStatistics/usePuzzlesStatistics.test.ts @@ -30,7 +30,7 @@ describe('usePuzzleStatistics', () => { it('should trigger puzzle statistics query with "skip" param if user data is not available', () => { useUserSpy.mockReturnValue({ user: null }); - renderHook(() => usePuzzleStatistics(puzzleType.Enum.daily)); + renderHook(() => usePuzzleStatistics(puzzleType.enum.daily)); expect(usePuzzlesStatisticsQuerySpy).toHaveBeenCalledWith('skip'); }); @@ -38,11 +38,11 @@ describe('usePuzzleStatistics', () => { it('should trigger puzzle statistics query with userId and puzzle type params when user data is available', () => { useUserSpy.mockReturnValue({ user: testUser1 }); - renderHook(() => usePuzzleStatistics(puzzleType.Enum.daily)); + renderHook(() => usePuzzleStatistics(puzzleType.enum.daily)); expect(usePuzzlesStatisticsQuerySpy).toHaveBeenCalledWith({ userId: testUser1._id, - puzzleType: puzzleType.Enum.daily, + puzzleType: puzzleType.enum.daily, }); }); @@ -55,7 +55,7 @@ describe('usePuzzleStatistics', () => { ({ isLoading, isNotFound }) => { usePuzzlesStatisticsQuerySpy.mockReturnValue({ data: testPuzzleStatistics1, isLoading, isNotFound }); - const { result } = renderHook(() => usePuzzleStatistics(puzzleType.Enum.daily)); + const { result } = renderHook(() => usePuzzleStatistics(puzzleType.enum.daily)); expect(result.current.isLoading).toBe(true); expect(result.current.data).toBe(null); @@ -65,7 +65,7 @@ describe('usePuzzleStatistics', () => { it('should set isLoading=false and data to query data when query.isLoading=false and query.isNotFound=false', () => { usePuzzlesStatisticsQuerySpy.mockReturnValue({ data: testPuzzleStatistics1, isLoading: false, isNotFound: false }); - const { result } = renderHook(() => usePuzzleStatistics(puzzleType.Enum.daily)); + const { result } = renderHook(() => usePuzzleStatistics(puzzleType.enum.daily)); expect(result.current.isLoading).toBe(false); expect(result.current.data).toEqual(testPuzzleStatistics1); diff --git a/src/hooks/useTrainingPuzzle/useTrainingPuzzle.test.ts b/src/hooks/useTrainingPuzzle/useTrainingPuzzle.test.ts index 50581e4..5ad1cae 100644 --- a/src/hooks/useTrainingPuzzle/useTrainingPuzzle.test.ts +++ b/src/hooks/useTrainingPuzzle/useTrainingPuzzle.test.ts @@ -131,7 +131,7 @@ describe('useTrainingPuzzle', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('puzzle:created', { puzzleId: 'createdPuzzleId', userId: testUser1._id, - type: puzzleType.Enum.training, + type: puzzleType.enum.training, }); }); @@ -272,7 +272,7 @@ describe('useTrainingPuzzle', () => { expect(mockCaptureEvent).toHaveBeenCalledWith('puzzle:solved', { puzzleId: testTrainingPuzzle1._id, userId: testUser1._id, - type: puzzleType.Enum.training, + type: puzzleType.enum.training, }); }); }); diff --git a/src/hooks/useTrainingPuzzle/useTrainingPuzzle.ts b/src/hooks/useTrainingPuzzle/useTrainingPuzzle.ts index 49e5a08..ed991cc 100644 --- a/src/hooks/useTrainingPuzzle/useTrainingPuzzle.ts +++ b/src/hooks/useTrainingPuzzle/useTrainingPuzzle.ts @@ -55,7 +55,7 @@ export function useTrainingPuzzle() { const handleCreateTrainingPuzzle = useCallback(async () => { try { const puzzleId = await createTrainingPuzzle({ userId: user?._id! }); - posthog.capture('puzzle:created', { puzzleId, userId: user?._id!, type: puzzleType.Enum.training }); + posthog.capture('puzzle:created', { puzzleId, userId: user?._id!, type: puzzleType.enum.training }); } catch { toaster.toast('Nekaj je šlo narobe.', { intent: 'error' }); } @@ -63,7 +63,7 @@ export function useTrainingPuzzle() { const handleMarkPuzzleAsSolved = async () => { await markPuzzleAsSolved({ puzzleId: puzzle?._id!, userId: user?._id! }); - posthog.capture('puzzle:solved', { puzzleId: puzzle?._id!, userId: user?._id!, type: puzzleType.Enum.training }); + posthog.capture('puzzle:solved', { puzzleId: puzzle?._id!, userId: user?._id!, type: puzzleType.enum.training }); }; const handleSharePuzzleResults = useCallback(async () => { diff --git a/src/tests/fixtures/leaderboards.ts b/src/tests/fixtures/leaderboards.ts index 9c1b0a8..37a5660 100644 --- a/src/tests/fixtures/leaderboards.ts +++ b/src/tests/fixtures/leaderboards.ts @@ -8,7 +8,7 @@ export const testGlobalLeaderboard1: LeaderboardWithScores = { _creationTime: 1751879215893, inviteCode: null, name: 'Globalna lestvica', - type: leaderboardType.Enum.global, + type: leaderboardType.enum.global, users: [testUser1._id], creatorId: undefined, scores: [{ isForCurrentUser: true, position: 1, score: 7, user: testUser1 }], @@ -19,7 +19,7 @@ export const testPrivateLeaderboard1: LeaderboardWithScores = { _creationTime: 1751879215893, inviteCode: null, name: 'Moja lestvica', - type: leaderboardType.Enum.private, + type: leaderboardType.enum.private, users: [testUser1._id], creatorId: testUser1._id, scores: [ diff --git a/src/tests/fixtures/puzzleGuessAttempts.ts b/src/tests/fixtures/puzzleGuessAttempts.ts index dd9f6a6..cf05b5b 100644 --- a/src/tests/fixtures/puzzleGuessAttempts.ts +++ b/src/tests/fixtures/puzzleGuessAttempts.ts @@ -9,11 +9,11 @@ export const testIncorrectPuzzleGuessAttempt1: PuzzleGuessAttempt = { _creationTime: Date.now(), attempt: 'spawn', checkedLetters: [ - { index: 0, letter: 's', status: checkedLetterStatus.Enum.correct }, - { index: 1, letter: 'p', status: checkedLetterStatus.Enum.invalid }, - { index: 2, letter: 'a', status: checkedLetterStatus.Enum.misplaced }, - { index: 3, letter: 'w', status: checkedLetterStatus.Enum.invalid }, - { index: 4, letter: 'n', status: checkedLetterStatus.Enum.invalid }, + { index: 0, letter: 's', status: checkedLetterStatus.enum.correct }, + { index: 1, letter: 'p', status: checkedLetterStatus.enum.invalid }, + { index: 2, letter: 'a', status: checkedLetterStatus.enum.misplaced }, + { index: 3, letter: 'w', status: checkedLetterStatus.enum.invalid }, + { index: 4, letter: 'n', status: checkedLetterStatus.enum.invalid }, ], puzzleId: testTrainingPuzzle1._id, userId: testUser1._id, @@ -24,11 +24,11 @@ export const testCorrectPuzzleGuessAttempt1: PuzzleGuessAttempt = { _creationTime: Date.now(), attempt: 'steak', checkedLetters: [ - { index: 0, letter: 's', status: checkedLetterStatus.Enum.correct }, - { index: 1, letter: 't', status: checkedLetterStatus.Enum.correct }, - { index: 2, letter: 'e', status: checkedLetterStatus.Enum.correct }, - { index: 3, letter: 'a', status: checkedLetterStatus.Enum.correct }, - { index: 4, letter: 'k', status: checkedLetterStatus.Enum.correct }, + { index: 0, letter: 's', status: checkedLetterStatus.enum.correct }, + { index: 1, letter: 't', status: checkedLetterStatus.enum.correct }, + { index: 2, letter: 'e', status: checkedLetterStatus.enum.correct }, + { index: 3, letter: 'a', status: checkedLetterStatus.enum.correct }, + { index: 4, letter: 'k', status: checkedLetterStatus.enum.correct }, ], puzzleId: testTrainingPuzzle1._id, userId: testUser1._id, diff --git a/src/tests/fixtures/puzzleStatistics.ts b/src/tests/fixtures/puzzleStatistics.ts index 12ee1f5..ab069df 100644 --- a/src/tests/fixtures/puzzleStatistics.ts +++ b/src/tests/fixtures/puzzleStatistics.ts @@ -20,6 +20,6 @@ export const testPuzzleStatistics1: UserPuzzleStatistics = { totalFailed: 1, currentStreak: 2, maxStreak: 3, - puzzleType: puzzleType.Enum.daily, + puzzleType: puzzleType.enum.daily, userId: testUser1._id, }; diff --git a/src/tests/fixtures/puzzles.ts b/src/tests/fixtures/puzzles.ts index 4e34b1d..d4cc225 100644 --- a/src/tests/fixtures/puzzles.ts +++ b/src/tests/fixtures/puzzles.ts @@ -12,7 +12,7 @@ export const testDailyPuzzle1: Puzzle = { year: 2025, solution: 'cloth', solvedBy: [], - type: puzzleType.Enum.daily, + type: puzzleType.enum.daily, }; export const testTrainingPuzzle1: Puzzle = { @@ -24,5 +24,5 @@ export const testTrainingPuzzle1: Puzzle = { year: 2025, solution: 'steak', solvedBy: [], - type: puzzleType.Enum.training, + type: puzzleType.enum.training, }; diff --git a/src/utils/words.ts b/src/utils/words.ts index 789c476..e7f4705 100644 --- a/src/utils/words.ts +++ b/src/utils/words.ts @@ -35,21 +35,21 @@ export function checkWordleAttempt(attempt: string, solution: string) { for (let i = 0; i < attemptLetters.length; i++) { if (attemptLetters[i] === solutionLetters[i]) { - result.push({ letter: attemptLetters[i], index: i, status: checkedLetterStatus.Enum.correct }); + result.push({ letter: attemptLetters[i], index: i, status: checkedLetterStatus.enum.correct }); usedIndices[i] = true; } else { - result.push({ letter: attemptLetters[i], index: i, status: checkedLetterStatus.Enum.invalid }); + result.push({ letter: attemptLetters[i], index: i, status: checkedLetterStatus.enum.invalid }); } } for (let i = 0; i < attemptLetters.length; i++) { const res = result[i]; - if (res.status !== checkedLetterStatus.Enum.invalid) continue; + if (res.status !== checkedLetterStatus.enum.invalid) continue; const matchIndex = solutionLetters.findIndex((l, j) => l === res.letter && !usedIndices[j]); if (matchIndex !== -1) { - result[i].status = checkedLetterStatus.Enum.misplaced; + result[i].status = checkedLetterStatus.enum.misplaced; usedIndices[matchIndex] = true; } }