diff --git a/packages/back-nest/src/seeder/commands/challenge.seeder.ts b/packages/back-nest/src/seeder/commands/challenge.seeder.ts index d665936..575ca7f 100644 --- a/packages/back-nest/src/seeder/commands/challenge.seeder.ts +++ b/packages/back-nest/src/seeder/commands/challenge.seeder.ts @@ -93,6 +93,26 @@ export class ProjectSeedRunner extends CommandRunner { '}'; thirdChallenge.project = project; + const fourthChallenge = new Challenge(); + challenges.push(fourthChallenge); + fourthChallenge.id = '6be1759b-a6ed-445e-aeef-dad6d7083e45'; + fourthChallenge.sha = '097f875bcfe0dd3703f5b3fd6837cc0bdbc2ccb8'; + fourthChallenge.treeSha = 'ac219cef2ad7999fc95c8fd4eb3b945ba37abd43'; + fourthChallenge.path = 'zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/SnapshotInfo.java'; + fourthChallenge.language = 'java'; + fourthChallenge.url = + 'https://github.com/apache/zookeeper/blob/ac219cef2ad7999fc95c8fd4eb3b945ba37abd43/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/SnapshotInfo.java/#L25-L35'; + fourthChallenge.content = + 'public class SnapshotInfo {\n' + + '\tpublic long zxid;\n' + + '\tpublic long timestamp;\n' + + '\tSnapshotInfo(long zxid, long timestamp) {\n' + + '\t\tthis.zxid = zxid;\n' + + '\t\tthis.timestamp = timestamp;\n' + + '\t}\n' + + '}'; + fourthChallenge.project = project; + return challenges; } } diff --git a/packages/webapp-next/modules/play2/components/RaceSettings.tsx b/packages/webapp-next/modules/play2/components/RaceSettings.tsx index 5a03571..96ed08c 100755 --- a/packages/webapp-next/modules/play2/components/RaceSettings.tsx +++ b/packages/webapp-next/modules/play2/components/RaceSettings.tsx @@ -15,8 +15,15 @@ import { LanguageSelector } from "./race-settings/LanguageSelector"; export const RaceSettings: React.FC = () => { const isOpen = useSettingsStore((s) => s.languageModalIsOpen); - const languageSelected = useSettingsStore((s) => s.languageSelected); - const language = languageSelected ? languageSelected.name : "language"; + const languagesSelected = useSettingsStore((s) => s.languageSelected); + let language = "language"; + if (languagesSelected.length > 0) { + if (languagesSelected.length === 1) { + language = languagesSelected[0].name; + } else { + language = `${languagesSelected.length} selected`; + } + } return ( <> diff --git a/packages/webapp-next/modules/play2/components/race-settings/LanguageSelector.tsx b/packages/webapp-next/modules/play2/components/race-settings/LanguageSelector.tsx index d7475da..26b1d93 100644 --- a/packages/webapp-next/modules/play2/components/race-settings/LanguageSelector.tsx +++ b/packages/webapp-next/modules/play2/components/race-settings/LanguageSelector.tsx @@ -5,9 +5,9 @@ import { getExperimentalServerUrl } from "../../../../common/utils/getServerUrl" import { useSettingsStore, LanguageDTO, setLanguage } from "../../state/settings-store"; import { useGameStore } from "../../state/game-store"; -const selectProgrammingLanguage = (languageSelected: LanguageDTO | null) => { - setLanguage(languageSelected); - if (languageSelected) { +const selectProgrammingLanguages = (languagesSelected: LanguageDTO[]) => { + setLanguage(languagesSelected); + if (languagesSelected.length > 0) { useGameStore.getState().game?.next(); } }; @@ -19,16 +19,27 @@ export function LanguageSelector() { fetch(...args).then((res) => res.json()) ); const languages = data as undefined | { language: string; name: string }[]; - const selectedLanguage = useSettingsStore((s) => s.languageSelected); + const selectedLanguages = useSettingsStore((s) => s.languageSelected); + + const isSelected = (language: LanguageDTO) => { + return selectedLanguages.some((l) => l.language === language.language); + }; + + const displayValue = () => { + if (selectedLanguages.length === 0) return "nothing selected"; + if (selectedLanguages.length === 1) return selectedLanguages[0].name; + return `${selectedLanguages.length} selected`; + } + return (

select language

- +
- {selectedLanguage?.name || "nothing selected"} + {displayValue()} - {selectedLanguage && ( + {selectedLanguages.length > 0 && (