SequenceDiagram/web/scripts/slots/SlotLocalStores.mjs

59 lines
978 B
JavaScript

const VALID_SLOT_KEY = /^s[0-9]+$/;
export default class SlotLocalStores {
getSlotKey(slot) {
return `s${slot}`;
}
getAllSlots() {
const result = [];
try {
for(const key in window.localStorage) {
if(VALID_SLOT_KEY.test(key)) {
result.push(Number(key.substr(1)));
}
}
} catch(e) {
// Ignore
}
return result;
}
nextAvailableSlot(limit = Number.MAX_SAFE_INTEGER) {
try {
for(let i = 1; i < limit; ++ i) {
if(window.localStorage.getItem(this.getSlotKey(i)) === null) {
return i;
}
}
return null;
} catch(e) {
return null;
}
}
set(slot, value) {
try {
window.localStorage.setItem(this.getSlotKey(slot), value);
} catch(ignore) {
// Ignore
}
}
get(slot) {
try {
return window.localStorage.getItem(this.getSlotKey(slot)) || '';
} catch(e) {
return '';
}
}
remove(slot) {
try {
window.localStorage.removeItem(this.getSlotKey(slot));
} catch(ignore) {
// Ignore
}
}
}