Skip to content

Commit 13f348e

Browse files
committed
Omit redundant preset degrees from URLs
1 parent 1a0dbd0 commit 13f348e

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

src/services/SchemeUrlState.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,13 +399,17 @@ export function buildSchemeQueryParams(scheme) {
399399
const params = new URLSearchParams();
400400
const defaults = createDefaultScheme();
401401
const hueSet = resolvedHueSet(scheme);
402+
const presetDegrees = hueSet ? degreesForHueSet(hueSet, scheme.hueDistance) : null;
403+
const hasRedundantDegrees = presetDegrees && sameValue(scheme.degrees, presetDegrees);
402404

403405
setParamIfChanged(params, 'hue', scheme.hue, defaults.hue);
404406
if (hueSet && hueSet !== defaults.hueSet) {
405407
params.set('hueSet', hueSet);
406408
}
407409
setParamIfChanged(params, 'hueDistance', scheme.hueDistance, defaults.hueDistance);
408-
setParamIfChanged(params, 'degrees', scheme.degrees, defaults.degrees);
410+
if (!hasRedundantDegrees) {
411+
setParamIfChanged(params, 'degrees', scheme.degrees, defaults.degrees);
412+
}
409413
setParamIfChanged(params, 'saturation', scheme.saturation, defaults.saturation);
410414
setParamIfChanged(params, 'saturationRange', scheme.saturationRange, defaults.saturationRange);
411415
setParamIfChanged(

tests/SchemeUrlState.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ describe('SchemeUrlState', () => {
5454
expect(buildSchemeSearch(createDefaultScheme())).toBe('');
5555
});
5656

57+
it('omits degrees when they are implied by hue-set and hue-distance', () => {
58+
const scheme = createDefaultScheme();
59+
60+
scheme.hue = 12;
61+
scheme.hueSet = 'duotone';
62+
scheme.hueDistance = 18;
63+
scheme.degrees = degreesForHueSet('duotone', 18);
64+
65+
expect(buildSchemeSearch(scheme)).toBe('?hue=12&hueSet=duotone&hueDistance=18');
66+
});
67+
5768
it('roundtrips a custom scheme through the query string', () => {
5869
const scheme = createDefaultScheme();
5970

tests/SocialShare.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe('SocialShare', () => {
1818
origin: 'https://ciembor.github.io',
1919
pathname: '/4bit/',
2020
})).toBe(
21-
'https://ciembor.github.io/4bit/?hue=12&hueSet=duotone&hueDistance=18&degrees=0,18,180,198,162,342'
21+
'https://ciembor.github.io/4bit/?hue=12&hueSet=duotone&hueDistance=18'
2222
);
2323
});
2424

0 commit comments

Comments
 (0)