getaddress-autocomplete-modal
Version:
GetAddress.io - Autocomplete modal plug-in
113 lines • 3.48 kB
JavaScript
var _a;
class Storage {
}
_a = Storage;
Storage.key = "getaddress_saved_addresses";
Storage.save = (id, address) => {
let savedAddresses = localStorage.getItem(_a.key);
if (!savedAddresses || _a.isObjectEmpty(savedAddresses)) {
const map = new Map();
const storedAddress = new StoredAddress(address, new Date().getTime());
map.set(id, storedAddress);
const jsonMap = JSON.stringify([...map]);
localStorage.setItem(_a.key, jsonMap);
}
else {
const map = new Map(JSON.parse(savedAddresses));
if (!map.get(id)) {
if (map.size >= 6) {
const storedEntries = [...map.entries()].sort((a, b) => {
const address1 = a[1];
const address2 = b[1];
return address1.timestamp - address2.timestamp;
});
map.delete(storedEntries[0][0]);
}
const storedAddress = new StoredAddress(address, new Date().getTime());
map.set(id, storedAddress);
const jsonMap = JSON.stringify([...map]);
localStorage.setItem(_a.key, jsonMap);
}
}
};
Storage.list = () => {
let savedAddresses = localStorage.getItem(_a.key);
if (!savedAddresses || _a.isObjectEmpty(savedAddresses)) {
return [];
}
const map = new Map(JSON.parse(savedAddresses));
const addresses = [...map.entries()].map(sa => {
const storedAddress = sa[1];
const id = sa[0];
return { address: storedAddress.address, id: id };
});
return addresses.reverse();
};
Storage.isObjectEmpty = (obj) => {
if (!obj) {
return true;
}
return obj === "{}" || obj === '"{}"';
};
Storage.clear = () => {
localStorage.removeItem(_a.key);
};
Storage.clearExpired = () => {
let savedAddresses = localStorage.getItem(_a.key);
if (!savedAddresses || _a.isObjectEmpty(savedAddresses)) {
return;
}
const map = new Map(JSON.parse(savedAddresses));
let hasExpiredEntries = false;
map.forEach((sa, key) => {
const storedAddress = sa;
let today = new Date();
var priorDate = new Date(new Date().setDate(today.getDate() - 30));
if (priorDate.getTime() > storedAddress.timestamp) {
map.delete(key);
hasExpiredEntries = true;
}
});
if (hasExpiredEntries) {
if (map.size > 0) {
const jsonMap = JSON.stringify([...map]);
localStorage.setItem(_a.key, jsonMap);
}
else {
localStorage.removeItem(_a.key);
}
}
};
Storage.remove = (key) => {
let savedAddresses = localStorage.getItem(_a.key);
if (!savedAddresses || _a.isObjectEmpty(savedAddresses)) {
return;
}
const map = new Map(JSON.parse(savedAddresses));
let deleted = false;
map.forEach((sa, k) => {
const storedAddress = sa;
if (k === key) {
map.delete(key);
deleted = true;
}
});
if (deleted) {
if (map.size > 0) {
const jsonMap = JSON.stringify([...map]);
localStorage.setItem(_a.key, jsonMap);
}
else {
localStorage.removeItem(_a.key);
}
}
};
export default Storage;
class StoredAddress {
constructor(address, timestamp) {
this.address = address;
this.timestamp = timestamp;
}
}
;
//# sourceMappingURL=Storage.js.map