Skip to content

Commit 316d4f9

Browse files
committed
feat(web): Stop saving release lookup inputs on change
This was a bit confusing since these inputs were not saved for active lookups. Now we have a dedicated settings page and can do it better. Since we still want to load persisted default values, persistent inputs got yet another option to (not) store changes.
1 parent 2608948 commit 316d4f9

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

server/components/ProviderInput.tsx

+12-7
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ export function ProviderCheckbox({
99
internalName,
1010
disabled = false,
1111
enabled = false,
12-
persistent = false,
12+
loadDefaults = false,
13+
storeChanges = false,
1314
}: {
1415
providerName: string;
1516
internalName: string;
1617
disabled?: boolean;
1718
enabled?: boolean;
18-
persistent?: boolean;
19+
loadDefaults?: boolean;
20+
storeChanges?: boolean;
1921
}) {
2022
const id = `${internalName}-input`;
2123

@@ -27,25 +29,27 @@ export function ProviderCheckbox({
2729
>
2830
<ProviderIcon providerName={providerName} />
2931
{providerName}
30-
{(persistent && !disabled)
32+
{(loadDefaults && !disabled)
3133
? (
3234
<PersistentCheckbox
3335
name={internalName}
3436
id={id}
3537
namespace='persist'
3638
initialValue={enabled}
3739
formValue=''
38-
useCookie
40+
storeChanges={storeChanges}
41+
useCookie={storeChanges}
3942
/>
4043
)
4144
: <input type='checkbox' name={internalName} id={id} checked={enabled} value='' disabled={disabled} />}
4245
</label>
4346
);
4447
}
4548

46-
export function ProviderCheckboxes({ enabledProviders, persistent = false }: {
49+
export function ProviderCheckboxes({ enabledProviders, loadDefaults = false, storeChanges = false }: {
4750
enabledProviders?: Set<string>;
48-
persistent?: boolean;
51+
loadDefaults?: boolean;
52+
storeChanges?: boolean;
4953
}) {
5054
return (
5155
<div class='row'>
@@ -59,7 +63,8 @@ export function ProviderCheckboxes({ enabledProviders, persistent = false }: {
5963
disabled={providers.findByName(name)!.getQuality('GTIN lookup') <=
6064
FeatureQuality.UNKNOWN}
6165
enabled={enabledProviders?.has(internalName)}
62-
persistent={persistent}
66+
loadDefaults={loadDefaults}
67+
storeChanges={storeChanges}
6368
/>
6469
);
6570
})}

server/components/ReleaseLookup.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ export default function ReleaseLookup({
5555
namespace='persist'
5656
initialValue={regionValue}
5757
placeholder='Region (Country Code)'
58-
useCookie
58+
storeChanges={false}
5959
/>
6060
),
6161
)}
6262
<InputWithOverlay type='submit' value='Lookup'>
6363
<SpriteIcon name='search' />
6464
</InputWithOverlay>
6565
</div>
66-
<ProviderCheckboxes enabledProviders={enabledProviders} persistent={!isActiveLookup} />
66+
<ProviderCheckboxes enabledProviders={enabledProviders} loadDefaults={!isActiveLookup} storeChanges={false} />
6767
</form>
6868
);
6969
}

server/islands/PersistentInput.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export interface PersistentInputProps extends JSX.HTMLAttributes<HTMLInputElemen
3131
id?: string;
3232
/** A namespace will be used to prefix the storage key of this input. */
3333
namespace?: string;
34+
/** Store the new value when the input changes. */
35+
storeChanges?: boolean;
3436
/** Store the value as cookie, making it available to the server. */
3537
useCookie?: boolean;
3638
}
@@ -54,6 +56,7 @@ export function PersistentCheckbox({
5456
trueValue = '1',
5557
falseValue = '0',
5658
formValue = '1',
59+
storeChanges = true,
5760
useCookie = false,
5861
...props
5962
}: PersistentCheckboxProps) {
@@ -73,7 +76,9 @@ export function PersistentCheckbox({
7376
{...props}
7477
value={formValue}
7578
checked={persistedValue.value !== falseValue}
76-
onChange={(event) => persistedValue.value = event.currentTarget.checked ? trueValue : falseValue}
79+
onChange={storeChanges
80+
? ((event) => persistedValue.value = event.currentTarget.checked ? trueValue : falseValue)
81+
: undefined}
7782
/>
7883
);
7984
}
@@ -88,6 +93,7 @@ export function PersistentTextInput({
8893
id,
8994
namespace,
9095
initialValue = '',
96+
storeChanges = true,
9197
useCookie = false,
9298
...props
9399
}: PersistentTextInputProps) {
@@ -106,7 +112,7 @@ export function PersistentTextInput({
106112
id={id}
107113
{...props}
108114
value={text}
109-
onChange={(event) => text.value = event.currentTarget.value}
115+
onChange={storeChanges ? ((event) => text.value = event.currentTarget.value) : undefined}
110116
/>
111117
);
112118
}

server/routes/settings.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function Settings() {
1515
<h2>Settings</h2>
1616
<h3>Lookup Defaults</h3>
1717
<p>Providers which should be looked up by barcode:</p>
18-
<ProviderCheckboxes enabledProviders={defaultProviders} persistent />
18+
<ProviderCheckboxes enabledProviders={defaultProviders} loadDefaults storeChanges />
1919
<p>
2020
Some providers only do lookups for a specific region. Specify the region which should be tried if the looked up
2121
URL doesn’t already contain a region.

0 commit comments

Comments
 (0)