From f21627a9ba9e32766650e2a5f68ebc8fe0a7ade3 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 10 Nov 2021 10:38:16 -0500 Subject: [PATCH] fix: value handling and helper recomputation --- addons/api/addon/services/resource-filter-store.js | 2 +- .../core/addon/decorators/resource-filter-param.js | 8 +++++--- addons/core/addon/helpers/resource-filter-param.js | 14 ++++---------- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/addons/api/addon/services/resource-filter-store.js b/addons/api/addon/services/resource-filter-store.js index 94d934359..8bd4130ae 100644 --- a/addons/api/addon/services/resource-filter-store.js +++ b/addons/api/addon/services/resource-filter-store.js @@ -10,7 +10,7 @@ import { inject as service } from '@ember/service'; * type: 'oidc', * status: ['active', 'pending'] * }); - * console.log(filter.queryExpression); + * log(filter.queryExpression); * // ("/item/type" == "oidc") and ("/item/status" == "active" or "/item/status" == "pending") */ export class ResourceFilter { diff --git a/addons/core/addon/decorators/resource-filter-param.js b/addons/core/addon/decorators/resource-filter-param.js index fda969722..bf48c2d4b 100644 --- a/addons/core/addon/decorators/resource-filter-param.js +++ b/addons/core/addon/decorators/resource-filter-param.js @@ -27,7 +27,7 @@ * // via a route transition. * this.status = status; * // Log the value of query param `filter-status`. - * console.log(this.status); + * log(this.status); * } * } * @@ -64,8 +64,10 @@ export function resourceFilterParam(allowedValues, defaultValue) { * Returns the JSON-parsed query parameter value OR defaultValue. */ get() { - const value = this._router.currentRoute.queryParams[filterKey]; - return value ? JSON.parse(value) : defaultValue || null; + const value = + this._router.currentRoute.queryParams[filterKey] || + JSON.stringify(defaultValue); + return value ? JSON.parse(value) : null; }, /** diff --git a/addons/core/addon/helpers/resource-filter-param.js b/addons/core/addon/helpers/resource-filter-param.js index 5cf4e40d1..e78ac20a7 100644 --- a/addons/core/addon/helpers/resource-filter-param.js +++ b/addons/core/addon/helpers/resource-filter-param.js @@ -29,14 +29,14 @@ export default class ResourceFilterParamHelper extends Helper { */ constructor() { super(...arguments); - this.router.on('routeWillChange', this.routeWillChange); + this.router.on('routeDidChange', this.routeDidChange); } /** * Stop listening to route events when this helper is destroyed. */ willDestroy() { - this.router.off('routeWillChange', this.routeWillChange); + this.router.off('routeDidChange', this.routeDidChange); super.willDestroy(); } @@ -56,13 +56,7 @@ export default class ResourceFilterParamHelper extends Helper { const allowedValues = route[filterAllowedValuesKey]; // Selected filters const rawValue = route[name]; - let value = rawValue; - try { - value = JSON.parse(rawValue); - } catch (e) { - /* ignore parse errors */ - } - const selectedValue = rawValue ? value : null; + const selectedValue = rawValue || null; return { name, allowedValues, selectedValue }; } @@ -73,7 +67,7 @@ export default class ResourceFilterParamHelper extends Helper { * route query params change. */ @action - routeWillChange() { + routeDidChange() { this.recompute(); } }