From 3d854f6ff221a78f496b8cf543e50558f329fc1a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Mar 2026 09:47:51 +0000 Subject: [PATCH 1/2] Initial plan From ee8426f3329dc836f905c5ede4a53e71fbf5a7fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Mar 2026 09:55:38 +0000 Subject: [PATCH 2/2] Rename isLoggedIn to isAuthenticated, remove firebase isAuthenticated Agent-Logs-Url: https://github.com/monkeytypegame/monkeytype/sessions/1a34e688-331a-4343-b32f-bd435c68347c --- frontend/__tests__/__harness__/mock-firebase.ts | 1 - frontend/src/ts/ape/config.ts | 2 +- frontend/src/ts/auth.tsx | 2 +- frontend/src/ts/collections/inbox.ts | 4 ++-- frontend/src/ts/commandline/commandline-metadata.ts | 4 ++-- frontend/src/ts/commandline/lists.ts | 3 ++- frontend/src/ts/commandline/lists/custom-themes-list.ts | 2 +- frontend/src/ts/commandline/lists/navigation.ts | 2 +- frontend/src/ts/commandline/lists/presets.ts | 2 +- frontend/src/ts/commandline/lists/quote-favorites.ts | 2 +- frontend/src/ts/commandline/lists/tags.ts | 2 +- .../src/ts/components/common/anime/AnimeConditional.tsx | 2 +- .../src/ts/components/layout/footer/ThemeIndicator.tsx | 2 +- .../src/ts/components/modals/MobileTestConfigModal.tsx | 4 ++-- frontend/src/ts/components/modals/QuoteSearchModal.tsx | 8 ++++---- .../ts/components/pages/leaderboard/LeaderboardPage.tsx | 6 +++--- frontend/src/ts/components/pages/leaderboard/Sidebar.tsx | 4 ++-- frontend/src/ts/components/pages/profile/UserDetails.tsx | 4 ++-- frontend/src/ts/components/pages/test/TestConfig.tsx | 4 ++-- frontend/src/ts/config/metadata.ts | 2 +- frontend/src/ts/controllers/route-controller.ts | 3 ++- frontend/src/ts/db.ts | 3 ++- .../src/ts/elements/account-settings/ape-key-table.ts | 2 +- .../ts/elements/account-settings/blocked-user-table.ts | 2 +- frontend/src/ts/elements/modes-notice.ts | 2 +- frontend/src/ts/elements/settings/theme-picker.ts | 3 +-- frontend/src/ts/event-handlers/account.ts | 2 +- frontend/src/ts/firebase.ts | 4 ---- frontend/src/ts/modals/simple-modals.ts | 7 ++----- frontend/src/ts/modals/user-report.ts | 2 +- frontend/src/ts/pages/account-settings.ts | 4 ++-- frontend/src/ts/pages/settings.ts | 3 +-- frontend/src/ts/queries/index.ts | 4 ++-- frontend/src/ts/states/core.ts | 2 +- frontend/src/ts/test/result.ts | 2 +- frontend/src/ts/test/test-logic.ts | 4 ++-- frontend/src/ts/test/test-screenshot.ts | 7 +++++-- 37 files changed, 57 insertions(+), 61 deletions(-) diff --git a/frontend/__tests__/__harness__/mock-firebase.ts b/frontend/__tests__/__harness__/mock-firebase.ts index b445c2b1979a..0c3811a591bc 100644 --- a/frontend/__tests__/__harness__/mock-firebase.ts +++ b/frontend/__tests__/__harness__/mock-firebase.ts @@ -2,5 +2,4 @@ import { vi } from "vitest"; vi.mock("../../src/ts/firebase", () => ({ app: undefined, Auth: undefined, - isAuthenticated: () => false, })); diff --git a/frontend/src/ts/ape/config.ts b/frontend/src/ts/ape/config.ts index 7bc1402587db..9e12b98e142c 100644 --- a/frontend/src/ts/ape/config.ts +++ b/frontend/src/ts/ape/config.ts @@ -1,5 +1,5 @@ import { Config } from "@monkeytype/schemas/configs"; -import { isAuthenticated } from "../firebase"; +import { isAuthenticated } from "../states/core"; import { showErrorNotification } from "../states/notifications"; import Ape from "."; diff --git a/frontend/src/ts/auth.tsx b/frontend/src/ts/auth.tsx index 972b61ff07d7..01939173ae07 100644 --- a/frontend/src/ts/auth.tsx +++ b/frontend/src/ts/auth.tsx @@ -15,7 +15,6 @@ import { authEvent } from "./events/auth"; import { isAuthAvailable, getAuthenticatedUser, - isAuthenticated, signOut as authSignOut, signInWithEmailAndPassword, createUserWithEmailAndPassword, @@ -23,6 +22,7 @@ import { resetIgnoreAuthCallback, } from "./firebase"; import * as Sentry from "./sentry"; +import { isAuthenticated } from "./states/core"; import { showLoaderBar, hideLoaderBar } from "./states/loader-bar"; import { showNoticeNotification, diff --git a/frontend/src/ts/collections/inbox.ts b/frontend/src/ts/collections/inbox.ts index 4ca003694493..398068daebdc 100644 --- a/frontend/src/ts/collections/inbox.ts +++ b/frontend/src/ts/collections/inbox.ts @@ -11,7 +11,7 @@ import { Accessor, createSignal } from "solid-js"; import Ape from "../ape"; import { queryClient } from "../queries"; import { baseKey } from "../queries/utils/keys"; -import { isLoggedIn } from "../states/core"; +import { isAuthenticated } from "../states/core"; import { flushDebounceStrategy } from "./utils/flushDebounceStrategy"; import { showErrorNotification } from "../states/notifications"; @@ -92,7 +92,7 @@ export async function flushPendingChanges({ // oxlint-disable-next-line typescript/explicit-function-return-type export function useInboxQuery(enabled: Accessor) { return useLiveQuery((q) => { - if (!isLoggedIn() || !enabled()) return undefined; + if (!isAuthenticated() || !enabled()) return undefined; return q .from({ inbox: inboxCollection }) .where(({ inbox }) => not(eq(inbox.status, "deleted"))) diff --git a/frontend/src/ts/commandline/commandline-metadata.ts b/frontend/src/ts/commandline/commandline-metadata.ts index 9744c9ee16ab..afb70b6653c2 100644 --- a/frontend/src/ts/commandline/commandline-metadata.ts +++ b/frontend/src/ts/commandline/commandline-metadata.ts @@ -3,11 +3,11 @@ import * as SoundController from "../controllers/sound-controller"; import * as TestLogic from "../test/test-logic"; import { getLanguageDisplayString } from "../utils/strings"; import * as ModesNotice from "../elements/modes-notice"; -import { isAuthenticated } from "../firebase"; + import { areUnsortedArraysEqual } from "../utils/arrays"; import { Config } from "../config/store"; import { get as getTypingSpeedUnit } from "../utils/typing-speed-units"; -import { getActivePage } from "../states/core"; +import { getActivePage, isAuthenticated } from "../states/core"; import { Fonts } from "../constants/fonts"; import { KnownFontName } from "@monkeytype/schemas/fonts"; import * as UI from "../ui"; diff --git a/frontend/src/ts/commandline/lists.ts b/frontend/src/ts/commandline/lists.ts index 7f9917222cb3..4a095f7b4f86 100644 --- a/frontend/src/ts/commandline/lists.ts +++ b/frontend/src/ts/commandline/lists.ts @@ -32,7 +32,8 @@ import * as TestStats from "../test/test-stats"; import { Command, CommandsSubgroup } from "./types"; import { buildCommandForConfigKey } from "./util"; import { CommandlineConfigMetadataObject } from "./commandline-metadata"; -import { isAuthAvailable, isAuthenticated, signOut } from "../firebase"; +import { isAuthAvailable, signOut } from "../firebase"; +import { isAuthenticated } from "../states/core"; import { ConfigKey } from "@monkeytype/schemas/configs"; import { hideFpsCounter, diff --git a/frontend/src/ts/commandline/lists/custom-themes-list.ts b/frontend/src/ts/commandline/lists/custom-themes-list.ts index aacf492df125..f513ba2bb84f 100644 --- a/frontend/src/ts/commandline/lists/custom-themes-list.ts +++ b/frontend/src/ts/commandline/lists/custom-themes-list.ts @@ -1,5 +1,5 @@ import { setConfig } from "../../config/setters"; -import { isAuthenticated } from "../../firebase"; +import { isAuthenticated } from "../../states/core"; import * as DB from "../../db"; import * as ThemeController from "../../controllers/theme-controller"; import { Command, CommandsSubgroup } from "../types"; diff --git a/frontend/src/ts/commandline/lists/navigation.ts b/frontend/src/ts/commandline/lists/navigation.ts index caf68b4cefa4..fc81b9b6ea77 100644 --- a/frontend/src/ts/commandline/lists/navigation.ts +++ b/frontend/src/ts/commandline/lists/navigation.ts @@ -1,5 +1,5 @@ import { navigate } from "../../controllers/route-controller"; -import { isAuthenticated } from "../../firebase"; +import { isAuthenticated } from "../../states/core"; import { toggleFullscreen } from "../../utils/misc"; import { Command } from "../types"; diff --git a/frontend/src/ts/commandline/lists/presets.ts b/frontend/src/ts/commandline/lists/presets.ts index 552440a6fbb2..8720745f0dfe 100644 --- a/frontend/src/ts/commandline/lists/presets.ts +++ b/frontend/src/ts/commandline/lists/presets.ts @@ -3,7 +3,7 @@ import * as ModesNotice from "../../elements/modes-notice"; import * as Settings from "../../pages/settings"; import * as PresetController from "../../controllers/preset-controller"; import * as EditPresetPopup from "../../modals/edit-preset"; -import { isAuthenticated } from "../../firebase"; +import { isAuthenticated } from "../../states/core"; import { Command, CommandsSubgroup } from "../types"; const subgroup: CommandsSubgroup = { diff --git a/frontend/src/ts/commandline/lists/quote-favorites.ts b/frontend/src/ts/commandline/lists/quote-favorites.ts index ecfe6bf8876b..360b96e0d268 100644 --- a/frontend/src/ts/commandline/lists/quote-favorites.ts +++ b/frontend/src/ts/commandline/lists/quote-favorites.ts @@ -4,7 +4,7 @@ import { showErrorNotification, showSuccessNotification, } from "../../states/notifications"; -import { isAuthenticated } from "../../firebase"; +import { isAuthenticated } from "../../states/core"; import { showLoaderBar, hideLoaderBar } from "../../states/loader-bar"; import * as TestWords from "../../test/test-words"; import { Command } from "../types"; diff --git a/frontend/src/ts/commandline/lists/tags.ts b/frontend/src/ts/commandline/lists/tags.ts index 33a18be8abf9..4ea7b7ea1792 100644 --- a/frontend/src/ts/commandline/lists/tags.ts +++ b/frontend/src/ts/commandline/lists/tags.ts @@ -4,7 +4,7 @@ import * as ModesNotice from "../../elements/modes-notice"; import * as TagController from "../../controllers/tag-controller"; import { Config } from "../../config/store"; import * as PaceCaret from "../../test/pace-caret"; -import { isAuthenticated } from "../../firebase"; +import { isAuthenticated } from "../../states/core"; import { Command, CommandsSubgroup } from "../types"; const subgroup: CommandsSubgroup = { diff --git a/frontend/src/ts/components/common/anime/AnimeConditional.tsx b/frontend/src/ts/components/common/anime/AnimeConditional.tsx index f3040115a453..cd14b8950c0d 100644 --- a/frontend/src/ts/components/common/anime/AnimeConditional.tsx +++ b/frontend/src/ts/components/common/anime/AnimeConditional.tsx @@ -15,7 +15,7 @@ import { AnimePresence } from "./AnimePresence"; * @example * ```tsx * } * else={} * exitBeforeEnter diff --git a/frontend/src/ts/components/layout/footer/ThemeIndicator.tsx b/frontend/src/ts/components/layout/footer/ThemeIndicator.tsx index 9b91c232e84b..de67f5b25a83 100644 --- a/frontend/src/ts/components/layout/footer/ThemeIndicator.tsx +++ b/frontend/src/ts/components/layout/footer/ThemeIndicator.tsx @@ -2,9 +2,9 @@ import { JSXElement, Show } from "solid-js"; import { setConfig } from "../../../config/setters"; import { Config } from "../../../config/store"; -import { isAuthenticated } from "../../../firebase"; import { getThemeIndicator, + isAuthenticated, setCommandlineSubgroup, } from "../../../states/core"; import { showModal } from "../../../states/modals"; diff --git a/frontend/src/ts/components/modals/MobileTestConfigModal.tsx b/frontend/src/ts/components/modals/MobileTestConfigModal.tsx index 4b3ab07c5b0e..69719e717f31 100644 --- a/frontend/src/ts/components/modals/MobileTestConfigModal.tsx +++ b/frontend/src/ts/components/modals/MobileTestConfigModal.tsx @@ -9,7 +9,7 @@ import { For, JSXElement, Show } from "solid-js"; import { setConfig, setQuoteLengthAll } from "../../config/setters"; import { getConfig } from "../../config/store"; import { restartTestEvent } from "../../events/test"; -import { isLoggedIn } from "../../states/core"; +import { isAuthenticated } from "../../states/core"; import { showModal } from "../../states/modals"; import { areUnsortedArraysEqual } from "../../utils/arrays"; import { AnimatedModal } from "../common/AnimatedModal"; @@ -186,7 +186,7 @@ export function MobileTestConfigModal(): JSXElement { {(ql) => ( - + void; onToggleFavorite: () => Promise; }): JSXElement { - const loggedOut = (): boolean => !isLoggedIn(); + const loggedOut = (): boolean => !isAuthenticated(); const [isFav, setIsFav] = createSignal( // oxlint-disable-next-line solid/reactivity -- intentionally reading once as initial value !loggedOut() && QuotesController.isQuoteFavorite(props.quote), @@ -455,7 +455,7 @@ export function QuoteSearchModal(): JSXElement {
Quote search
- +
- +