Added: "ReviewerRequest" type

This commit is contained in:
Luc Mcgrady 2025-10-29 15:48:21 +00:00
parent 386133743e
commit 246e6f6df6
No known key found for this signature in database
GPG key ID: 4F3D7A0B17CC3D9C
4 changed files with 18 additions and 4 deletions

View file

@ -5,7 +5,8 @@ import "../../reviewer/reviewer.scss";
import "mathjax/es5/tex-chtml-full.js";
import { renderError } from "../../reviewer";
import { enableNightMode } from "../reviewer/reviewer";
import type { InnerReviewerRequest } from "./reviewerRequest";
import type { ReviewerRequest } from "../reviewer/reviewerRequest";
import type { InnerReviewerRequest } from "./innerReviewerRequest";
declare const MathJax: any;
const urlParams = new URLSearchParams(location.search);
@ -57,7 +58,10 @@ function pycmd(cmd: string) {
const match = cmd.match(/play:(q|a):(\d+)/);
if (match) {
const [_, context, index] = match;
window.parent.postMessage({ type: "audio", answerSide: context == "a", index: parseInt(index) }, "*");
window.parent.postMessage(
{ type: "audio", answerSide: context == "a", index: parseInt(index) } satisfies ReviewerRequest,
"*",
);
}
}
globalThis.pycmd = pycmd;

View file

@ -3,7 +3,8 @@
import { CardAnswer, type NextCardDataResponse_NextCardData } from "@generated/anki/scheduler_pb";
import { nextCardData, playAudio } from "@generated/backend";
import { derived, get, writable } from "svelte/store";
import type { InnerReviewerRequest } from "../reviewer-inner/reviewerRequest";
import type { InnerReviewerRequest } from "../reviewer-inner/innerReviewerRequest";
import type { ReviewerRequest } from "./reviewerRequest";
export function isNightMode() {
// https://stackoverflow.com/a/57795518
@ -40,7 +41,7 @@ export class ReviewerState {
addEventListener("message", this.onMessage.bind(this));
}
onMessage(e: MessageEvent<any>) {
onMessage(e: MessageEvent<ReviewerRequest>) {
switch (e.data.type) {
case "audio": {
playAudio({ answerSide: e.data.answerSide, index: e.data.index, cid: this.currentCard!.card!.id });

View file

@ -0,0 +1,9 @@
// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
interface AudioMessage {
type: "audio";
answerSide: boolean;
index: number;
}
export type ReviewerRequest = AudioMessage;