22 lines
582 B
JavaScript
22 lines
582 B
JavaScript
import { computed } from '@ember/object';
|
|
|
|
// An unattractive but robust way to encode query params
|
|
export const serialize = (val) => {
|
|
if (typeof val === 'string' || typeof val === 'number') return val;
|
|
return val.length ? JSON.stringify(val) : '';
|
|
};
|
|
|
|
export const deserialize = (str) => {
|
|
try {
|
|
return JSON.parse(str).compact().without('');
|
|
} catch (e) {
|
|
return [];
|
|
}
|
|
};
|
|
|
|
// A computed property macro for deserializing a query param
|
|
export const deserializedQueryParam = (qpKey) =>
|
|
computed(qpKey, function () {
|
|
return deserialize(this.get(qpKey));
|
|
});
|