From ab874ddba1d9bd042463e68523ac7b05ddeb9f3e Mon Sep 17 00:00:00 2001 From: Zach Watson Date: Mon, 11 May 2026 16:44:43 -0700 Subject: [PATCH 1/2] prevent failure if lng='en' and add timing fallback to memory game --- task-launcher/src/tasks/memory-game/trials/instructions.ts | 2 +- task-launcher/src/tasks/memory-game/trials/stimulus.ts | 5 ++++- .../src/tasks/shared/helpers/checkFallbackCriteria.ts | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/task-launcher/src/tasks/memory-game/trials/instructions.ts b/task-launcher/src/tasks/memory-game/trials/instructions.ts index 0f27489e..079c4dd1 100644 --- a/task-launcher/src/tasks/memory-game/trials/instructions.ts +++ b/task-launcher/src/tasks/memory-game/trials/instructions.ts @@ -146,7 +146,7 @@ const instructions = instructionData.map((data) => { setPromptDurations = true; const displayPromptDurations = - taskStore().language === 'en' + taskStore().language.includes('en') ? { memoryGameInstruct7Downex: await PageAudioHandler.getAudioDuration( mediaAssets.audio.memoryGameInstruct7Downex, diff --git a/task-launcher/src/tasks/memory-game/trials/stimulus.ts b/task-launcher/src/tasks/memory-game/trials/stimulus.ts index faac6603..27b88439 100644 --- a/task-launcher/src/tasks/memory-game/trials/stimulus.ts +++ b/task-launcher/src/tasks/memory-game/trials/stimulus.ts @@ -164,8 +164,11 @@ export function getCorsiBlocks({ // get the pre-assigned prompt duration values from task store const displayPromptDurations = taskStore().displayPromptDurations; + const durationSec = displayPromptDurations[cue as keyof typeof displayPromptDurations]; + const durationMs = + durationSec != null && Number.isFinite(durationSec) ? durationSec * 1000 : 3000; - return displayPromptDurations[cue as keyof typeof displayPromptDurations] * 1000; + return durationMs; }, on_load: () => { doOnLoad(mode, isPractice, reverse, animation, prompt); diff --git a/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts b/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts index 3f218676..c654b829 100644 --- a/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts +++ b/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts @@ -10,5 +10,5 @@ export const checkFallbackCriteria = (filterInputTrials: boolean = false) => { } const numIncorrect = incorrectTrials.count(); - return numIncorrect >= 2 && taskStore().language === 'en'; + return numIncorrect >= 2 && taskStore().language.includes('en'); }; From c389ddc80da8a74e83e8bfbed0734af588655c1a Mon Sep 17 00:00:00 2001 From: Zach Watson Date: Mon, 18 May 2026 15:00:56 -0700 Subject: [PATCH 2/2] add helper to check for English locale --- task-launcher/src/tasks/memory-game/trials/instructions.ts | 4 ++-- task-launcher/src/tasks/mental-rotation/catTimeline.ts | 3 ++- .../src/tasks/shared/helpers/checkFallbackCriteria.ts | 3 ++- task-launcher/src/tasks/shared/helpers/checkLocale.ts | 1 + task-launcher/src/tasks/shared/helpers/index.ts | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 task-launcher/src/tasks/shared/helpers/checkLocale.ts diff --git a/task-launcher/src/tasks/memory-game/trials/instructions.ts b/task-launcher/src/tasks/memory-game/trials/instructions.ts index 079c4dd1..2dbe9d1e 100644 --- a/task-launcher/src/tasks/memory-game/trials/instructions.ts +++ b/task-launcher/src/tasks/memory-game/trials/instructions.ts @@ -1,7 +1,7 @@ import jsPsychHtmlMultiResponse from '@jspsych-contrib/plugin-html-multi-response'; import { jsPsych } from '../../taskSetup'; import { mediaAssets } from '../../..'; -import { PageStateHandler, PageAudioHandler, replayButtonSvg, setupReplayAudio } from '../../shared/helpers'; +import { PageStateHandler, PageAudioHandler, replayButtonSvg, setupReplayAudio, isEnglish } from '../../shared/helpers'; import { taskStore } from '../../../taskStore'; let setPromptDurations = false; @@ -146,7 +146,7 @@ const instructions = instructionData.map((data) => { setPromptDurations = true; const displayPromptDurations = - taskStore().language.includes('en') + isEnglish(taskStore().language) ? { memoryGameInstruct7Downex: await PageAudioHandler.getAudioDuration( mediaAssets.audio.memoryGameInstruct7Downex, diff --git a/task-launcher/src/tasks/mental-rotation/catTimeline.ts b/task-launcher/src/tasks/mental-rotation/catTimeline.ts index af1fc63d..9b7db624 100644 --- a/task-launcher/src/tasks/mental-rotation/catTimeline.ts +++ b/task-launcher/src/tasks/mental-rotation/catTimeline.ts @@ -12,6 +12,7 @@ import { filterMedia, prepareMultiBlockCat, checkFallbackCriteria, + isEnglish } from '../shared/helpers'; // trials import { @@ -123,7 +124,7 @@ export default function buildMentalRotationCatTimeline(config: Record { - return taskStore().currentCatBlock === 1 && taskStore().language?.toLowerCase().startsWith('en'); + return taskStore().currentCatBlock === 1 && isEnglish(taskStore().language); }, }; diff --git a/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts b/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts index c654b829..15777cef 100644 --- a/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts +++ b/task-launcher/src/tasks/shared/helpers/checkFallbackCriteria.ts @@ -1,5 +1,6 @@ import { taskStore } from '../../../taskStore'; import { jsPsych } from '../../taskSetup'; +import { isEnglish } from '.' export const checkFallbackCriteria = (filterInputTrials: boolean = false) => { const data = jsPsych.data.get().filter({ assessment_stage: 'test_response' }).last(4); @@ -10,5 +11,5 @@ export const checkFallbackCriteria = (filterInputTrials: boolean = false) => { } const numIncorrect = incorrectTrials.count(); - return numIncorrect >= 2 && taskStore().language.includes('en'); + return numIncorrect >= 2 && isEnglish(taskStore().language); }; diff --git a/task-launcher/src/tasks/shared/helpers/checkLocale.ts b/task-launcher/src/tasks/shared/helpers/checkLocale.ts new file mode 100644 index 00000000..25038d10 --- /dev/null +++ b/task-launcher/src/tasks/shared/helpers/checkLocale.ts @@ -0,0 +1 @@ +export const isEnglish = (langCode: string) => langCode === 'en' || langCode.startsWith('en-'); diff --git a/task-launcher/src/tasks/shared/helpers/index.ts b/task-launcher/src/tasks/shared/helpers/index.ts index 0f1f8200..b7faca52 100644 --- a/task-launcher/src/tasks/shared/helpers/index.ts +++ b/task-launcher/src/tasks/shared/helpers/index.ts @@ -49,3 +49,4 @@ export { shouldTerminateCat } from './shouldTerminateCat'; export { selectNextSequentialTrial } from './selectNextSequentialTrial'; export { checkFallbackCriteria } from './checkFallbackCriteria'; export { addKeyHelpers } from './addKeyHelpers'; +export { isEnglish } from './checkLocale';