Chore: Replace localStorage retrieval with a dedicated function for default release addresses

This commit is contained in:
Ralph Slooten
2026-03-10 11:20:33 +13:00
parent 804d49b7ca
commit 3073ef9afe
2 changed files with 17 additions and 6 deletions

View File

@@ -14,9 +14,7 @@ export default {
timezones,
chaosConfig: false,
chaosUpdated: false,
defaultReleaseAddressesOptions: localStorage.getItem("defaultReleaseAddresses")
? JSON.parse(localStorage.getItem("defaultReleaseAddresses"))
: [], // set with default release addresses
defaultReleaseAddressesOptions: mailbox.defaultReleaseAddresses.slice(), // set with default release addresses
};
},

View File

@@ -2,6 +2,21 @@
import { reactive, watch } from "vue";
// Parse and validate a string[] from localStorage, returning [] on any invalid value.
const storageToStringArray = (key) => {
try {
const raw = localStorage.getItem(key);
if (!raw) return [];
const parsed = JSON.parse(raw);
if (Array.isArray(parsed) && parsed.every((v) => typeof v === "string")) {
return parsed;
}
} catch {
// ignore malformed JSON
}
return [];
};
// global mailbox info
export const mailbox = reactive({
total: 0, // total number of messages in database
@@ -20,9 +35,7 @@ export const mailbox = reactive({
appInfo: {}, // application information
uiConfig: {}, // configuration for UI
lastMessage: false, // return scrolling
defaultReleaseAddresses: localStorage.getItem("defaultReleaseAddresses")
? JSON.parse(localStorage.getItem("defaultReleaseAddresses"))
: [], // default release addresses for released messages
defaultReleaseAddresses: storageToStringArray("defaultReleaseAddresses"), // default release addresses for released messages
// settings
showTagColors: !localStorage.getItem("hideTagColors"),