diff --git a/src/components/big-interactive-pages/editor.tsx b/src/components/big-interactive-pages/editor.tsx index 436205984e..0a010e3164 100644 --- a/src/components/big-interactive-pages/editor.tsx +++ b/src/components/big-interactive-pages/editor.tsx @@ -472,6 +472,7 @@ export default function Editor({ persistenceState, cookies, roomState }: EditorP window.addEventListener("keydown", handler); return () => window.removeEventListener("keydown", handler); } + return }, [continueSaving.value]); let initialCode = ""; diff --git a/src/components/codemirror.tsx b/src/components/codemirror.tsx index 398fc685de..9a4153637a 100644 --- a/src/components/codemirror.tsx +++ b/src/components/codemirror.tsx @@ -10,13 +10,13 @@ import { Signal, useSignal, useSignalEffect } from '@preact/signals' import { Awareness } from 'y-protocols/awareness' import { WebrtcProvider } from 'y-webrtc' import * as Y from 'yjs' -import { saveGame, startSavingGame } from './big-interactive-pages/editor' +import { startSavingGame } from './big-interactive-pages/editor' import { yCollab } from 'y-codemirror.next' interface CodeMirrorProps { class?: string | undefined - persistenceState?: Signal - roomState?: Signal + persistenceState: Signal | undefined + roomState: Signal | undefined initialCode?: string onCodeChange?: () => void onRunShortcut?: () => void @@ -146,7 +146,8 @@ export default function CodeMirror(props: CodeMirrorProps) { yProviderAwarenessSignal.value = provider.awareness console.log(props.persistenceState.peek().session?.user) - const isHost = ((props.persistenceState.peek().kind == "PERSISTED" && props.persistenceState.peek().game != "LOADING") && props.persistenceState.peek().session?.user.id === props.persistenceState.peek().game.ownerId) + let persistenceState = props.persistenceState.peek(); + const isHost = ((persistenceState.kind == "PERSISTED" && persistenceState.game != "LOADING") && persistenceState.session?.user.id === persistenceState.game.ownerId) provider.awareness.setLocalStateField("user", { name: props.persistenceState.peek().session?.user.email ?? diff --git a/src/components/navbar-editor.tsx b/src/components/navbar-editor.tsx index 019b2cab55..8f819fcded 100644 --- a/src/components/navbar-editor.tsx +++ b/src/components/navbar-editor.tsx @@ -81,7 +81,7 @@ const canDelete = (persistenceState: Signal) => { interface EditorNavbarProps { persistenceState: Signal - roomState?: Signal + roomState: Signal | undefined } type StuckCategory = @@ -228,6 +228,7 @@ export default function EditorNavbar(props: EditorNavbarProps) { : props.roomState?.value.participants.filter((participant) => { if(participant.isHost) return true + return false })[0]?.userEmail === props.persistenceState.value.session?.user.email ? props.persistenceState.value.session?.user.email : "???" }`, SAVING: "Saving...", @@ -293,6 +294,7 @@ export default function EditorNavbar(props: EditorNavbarProps) { by { (!isNewSaveStrat.value || props.roomState?.value.participants.filter((participant) => { if(participant.isHost) return true + return false })[0]?.userEmail === props.persistenceState.value.session?.user.email) ? "you" : "???" diff --git a/src/components/popups-etc/help.tsx b/src/components/popups-etc/help.tsx index 58450c3b06..27d7e843cf 100644 --- a/src/components/popups-etc/help.tsx +++ b/src/components/popups-etc/help.tsx @@ -16,7 +16,6 @@ interface HelpProps { defaultHelpAreaHeight: number; helpAreaSize: Signal; showingTutorialWarning?: Signal; - sessionId: string } const helpHtml = compiledContent(); diff --git a/src/lib/codemirror/init.ts b/src/lib/codemirror/init.ts index c5e9ff7a63..e24aba3c11 100644 --- a/src/lib/codemirror/init.ts +++ b/src/lib/codemirror/init.ts @@ -1,4 +1,4 @@ -import { EditorState, Extension } from '@codemirror/state' +import { EditorState } from '@codemirror/state' import { getSearchQuery, highlightSelectionMatches, search, searchKeymap, setSearchQuery } from '@codemirror/search' import widgets from './widgets' import { effect, signal } from '@preact/signals' diff --git a/src/pages/api/games/start-saving.ts b/src/pages/api/games/start-saving.ts index ec696896f6..c3092d4d7a 100644 --- a/src/pages/api/games/start-saving.ts +++ b/src/pages/api/games/start-saving.ts @@ -2,6 +2,7 @@ import type { APIRoute } from "astro"; import { getGame, getSession, + setDocument, updateDocument, } from "../../../lib/game-saving/account"; import { updateEmailListLastModifiedTime } from "../../../lib/game-saving/email"; @@ -34,6 +35,7 @@ export const post: APIRoute = async ({ request, cookies }) => { let trackingId = game.id; let trackingType = "game"; + const trackingDate = new Date().toDateString() if (!game.unprotected) { const session = await getSession(cookies); @@ -55,15 +57,19 @@ export const post: APIRoute = async ({ request, cookies }) => { }); try{ - updateDocument("games", gameId, { + await updateDocument("games", gameId, { tutorialName: tutorialName ?? "", modifiedAt: Timestamp.now(), }); + + await setDocument('daily-edits', `${trackingId}-${trackingDate}`, { + type: trackingType, + id: trackingId, + date: Timestamp.now() + }); return new Response(JSON.stringify({}), { status: 200 }) } catch (error) { return new Response("Internal server error", { status: 500 }) } - return new Response(JSON.stringify({}), { status: 200 }) - }; \ No newline at end of file