Fix/Invalid parameter counts saveable (#4052)

* Add frontend check for parameters

* Fix backend

* ./check

* Fix: Wrong type
This commit is contained in:
Luc Mcgrady 2025-06-03 10:27:04 +01:00 committed by GitHub
parent 4e928fd7ca
commit bbac90d97d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 4 deletions

View file

@ -110,9 +110,9 @@ impl DeckConfig {
/// Retrieve the FSRS 6.0 params, falling back on 5.0 or 4.x ones. /// Retrieve the FSRS 6.0 params, falling back on 5.0 or 4.x ones.
pub fn fsrs_params(&self) -> &Vec<f32> { pub fn fsrs_params(&self) -> &Vec<f32> {
if self.inner.fsrs_params_6.len() == 21 { if !self.inner.fsrs_params_6.is_empty() {
&self.inner.fsrs_params_6 &self.inner.fsrs_params_6
} else if self.inner.fsrs_params_5.len() == 19 { } else if !self.inner.fsrs_params_5.is_empty() {
&self.inner.fsrs_params_5 &self.inner.fsrs_params_5
} else { } else {
&self.inner.fsrs_params_4 &self.inner.fsrs_params_4

View file

@ -4,6 +4,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
--> -->
<script lang="ts"> <script lang="ts">
import { tick } from "svelte"; import { tick } from "svelte";
import * as tr from "@generated/ftl";
export let value: number[]; export let value: number[];
export let defaults: number[]; export let defaults: number[];
@ -28,12 +29,22 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
return params.map((v) => v.toFixed(4)).join(", "); return params.map((v) => v.toFixed(4)).join(", ");
} }
function update(this: HTMLInputElement): void { const validParamCounts = [0, 17, 19, 21];
value = this.value
function update(e: Event): void {
const input = e.target as HTMLTextAreaElement;
const newValue = input.value
.replace(/ /g, "") .replace(/ /g, "")
.split(",") .split(",")
.filter((e) => e) .filter((e) => e)
.map((v) => Number(v)); .map((v) => Number(v));
if (validParamCounts.includes(newValue.length)) {
value = newValue;
} else {
alert(tr.deckConfigInvalidParameters());
input.value = stringValue;
}
} }
</script> </script>