DigitalConsumer.FixMyGlass/src/router/a-rewrite/methods/helpers/querystring-stash.js
2025-05-06 14:13:33 -04:00

58 lines
1.1 KiB
JavaScript

import { reactive } from "vue";
const queryStash = reactive({
queries: [],
});
function stash(key, value) {
const existingValue = getStashedQuery(key);
if (existingValue) {
existingValue.value = value;
existingValue.used = false;
return;
}
queryStash.queries.push({
key: key,
value: value,
used: false,
});
}
export function stashAllQueries(toRoute) {
const keys = Object.keys(toRoute.query);
keys.forEach((k) => stash(k, toRoute.query[k]));
}
function getStashedQuery(key) {
const match = queryStash.queries.find(
(entry) => entry?.key?.toLowerCase() === key?.toLowerCase()
);
return match;
}
export function peekQueryFromStash(key) {
return getStashedQuery(key)?.value;
}
export function consumeQueryFromStash(key) {
const match = getStashedQuery(key);
if (match) {
if (!match.used) {
match.used = true;
return match.value;
}
return null;
}
return null;
}
export function clearStash() {
queryStash.queries = [];
}