From dca54b2040a44b59a3888915a8a64015dbcc0ab2 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 10 Nov 2021 09:59:28 -0500 Subject: [PATCH] fix: key names --- .../core/addon/decorators/resource-filter-param.js | 12 ++++++------ addons/core/addon/helpers/resource-filter-param.js | 14 ++++++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/addons/core/addon/decorators/resource-filter-param.js b/addons/core/addon/decorators/resource-filter-param.js index d87e00e4f..fda969722 100644 --- a/addons/core/addon/decorators/resource-filter-param.js +++ b/addons/core/addon/decorators/resource-filter-param.js @@ -40,8 +40,8 @@ export function resourceFilterParam(allowedValues, defaultValue) { * @return {object{get, set}} */ return function (target, name /*, descriptor*/) { - const filterName = `filter-${name}`; - const filterOptionsName = `filter-options-${name}`; + const filterKey = `filter-${name}`; + const filterAllowedValuesKey = `filter-allowed-values-${name}`; // If the route has no query params specified yet, declare them. if (!Object.keys(target.queryParams).length) target.queryParams = {}; @@ -49,14 +49,14 @@ export function resourceFilterParam(allowedValues, defaultValue) { // Add the resource filter query parameter to the route. Resource filter // param changes refresh the model but do not contribute to browser history. // See https://guides.emberjs.com/release/routing/query-params/ - target.queryParams[filterName] = { + target.queryParams[filterKey] = { refreshModel: true, replace: true, }; // Store the allowed values for future lookup // (via `ResourceFilterParamHelper`). - target[filterOptionsName] = allowedValues; + target[filterAllowedValuesKey] = allowedValues; // Override the decorated attribute with a getter and setter. return { @@ -64,7 +64,7 @@ export function resourceFilterParam(allowedValues, defaultValue) { * Returns the JSON-parsed query parameter value OR defaultValue. */ get() { - const value = this._router.currentRoute.queryParams[filterName]; + const value = this._router.currentRoute.queryParams[filterKey]; return value ? JSON.parse(value) : defaultValue || null; }, @@ -76,7 +76,7 @@ export function resourceFilterParam(allowedValues, defaultValue) { */ set(value) { const queryParams = {}; - queryParams[filterName] = JSON.stringify(value); + queryParams[filterKey] = JSON.stringify(value); this.transitionTo({ queryParams }); }, }; diff --git a/addons/core/addon/helpers/resource-filter-param.js b/addons/core/addon/helpers/resource-filter-param.js index 98eb791bf..5cf4e40d1 100644 --- a/addons/core/addon/helpers/resource-filter-param.js +++ b/addons/core/addon/helpers/resource-filter-param.js @@ -52,12 +52,18 @@ export default class ResourceFilterParamHelper extends Helper { const owner = getOwner(this); // Filter options const route = owner.lookup(`route:${routeName}`); - const filterOptionsName = `filter-options-${name}`; - const value = route[filterOptionsName]; + const filterAllowedValuesKey = `filter-allowed-values-${name}`; + const allowedValues = route[filterAllowedValuesKey]; // Selected filters const rawValue = route[name]; - const selectedValue = rawValue ? JSON.parse(rawValue) : null; - return { name, value, selectedValue }; + let value = rawValue; + try { + value = JSON.parse(rawValue); + } catch (e) { + /* ignore parse errors */ + } + const selectedValue = rawValue ? value : null; + return { name, allowedValues, selectedValue }; } // =actions