21 lines
507 B
JavaScript
21 lines
507 B
JavaScript
|
import { computed } from '@ember/object';
|
||
|
|
||
|
// An unattractive but robust way to encode query params
|
||
|
export const serialize = arr => (arr.length ? JSON.stringify(arr) : '');
|
||
|
|
||
|
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));
|
||
|
});
|