|
5 | 5 | import Message from "./components/Message.svelte"; |
6 | 6 |
|
7 | 7 | import { Loader } from "@lucide/svelte"; |
8 | | - import { type Problem } from "./utils/types"; |
| 8 | + import { type Problem, type ClosedRange, createValidRange } from "./utils/types"; |
| 9 | + import { cacheInput, loadLastInput } from "./cacher"; |
9 | 10 |
|
10 | | - let under_diff = $state<string>("0"); |
11 | | - let over_diff = $state<string>("3854"); |
| 11 | + const MIN_DIFF: number = 0; |
| 12 | + const MAX_DIFF: number = 3854; |
| 13 | +
|
| 14 | + let cachedInput : ClosedRange | null = loadLastInput(); |
| 15 | + let currentInput : ClosedRange | null; |
| 16 | +
|
| 17 | + let under_diff = $state<number>(cachedInput ? cachedInput.min : MIN_DIFF); |
| 18 | + let over_diff = $state<number>(cachedInput ? cachedInput.max : MAX_DIFF); |
12 | 19 | |
13 | 20 | let errors = $derived({ |
14 | | - rangeError: parseInt(under_diff) > parseInt(over_diff), |
15 | | - isMinusUnderDiff: parseInt(under_diff) < 0, |
16 | | - isMinusOverDiff: parseInt(over_diff) < 0, |
| 21 | + rangeError: !(currentInput = createValidRange(under_diff, over_diff)), |
| 22 | + isMinusUnderDiff: under_diff < 0, |
| 23 | + isMinusOverDiff: over_diff < 0, |
17 | 24 | }); |
18 | 25 |
|
19 | 26 | let result = $state<Problem | null>(null); |
|
74 | 81 | <div class="flex items-center gap-2"> |
75 | 82 | <Input type="number" placeholder="最低Diffを入力してください。" isErrors={errors} bind:value={under_diff} /> |
76 | 83 | <Input type="number" placeholder="最高Diffを入力してください。" isErrors={errors} bind:value={over_diff} /> |
77 | | - <Button onclick={sendQuery} class="shrink-0 w-24 h-12 flex justify-center items-center" disabled={loading}> |
| 84 | + <Button onclick={() =>{sendQuery(), cacheInput(currentInput!)}} class="shrink-0 w-24 h-12 flex justify-center items-center" disabled={loading}> |
78 | 85 | {#if loading} |
79 | 86 | <div class="animate-spin [animation-duration: 1.05s]"> |
80 | 87 | <Loader size="1.5rem" /> |
|
0 commit comments