1
0
mirror of https://github.com/axllent/mailpit.git synced 2025-12-20 00:12:26 +02:00
Files
mailpit/server/ui-src/stores/mailbox.js

95 lines
2.2 KiB
JavaScript

// State Management
import { reactive, watch } from "vue";
// global mailbox info
export const mailbox = reactive({
total: 0, // total number of messages in database
unread: 0, // total unread messages in database
count: 0, // total in mailbox or search
messages: [], // current messages
tags: [], // all tags
selected: [], // currently selected
connected: false, // websocket connection
searching: false, // current search, false for none
refresh: false, // to listen from MessagesMixin
autoPaginating: true, // allows temporary bypass of loadMessages() via auto-pagination
notificationsSupported: false, // browser supports notifications
notificationsEnabled: false, // user has enabled notifications
skipConfirmations: false, // skip modal confirmations for "Delete all" & "mark all read"
appInfo: {}, // application information
uiConfig: {}, // configuration for UI
lastMessage: false, // return scrolling
// settings
showTagColors: !localStorage.getItem("hideTagColors"),
showHTMLCheck: !localStorage.getItem("hideHTMLCheck"),
showLinkCheck: !localStorage.getItem("hideLinkCheck"),
showSpamCheck: !localStorage.getItem("hideSpamCheck"),
timeZone: localStorage.getItem("timeZone")
? localStorage.getItem("timeZone")
: Intl.DateTimeFormat().resolvedOptions().timeZone,
});
watch(
() => mailbox.count,
() => {
mailbox.selected = [];
},
);
watch(
() => mailbox.showTagColors,
(v) => {
if (v) {
localStorage.removeItem("hideTagColors");
} else {
localStorage.setItem("hideTagColors", "1");
}
},
);
watch(
() => mailbox.showHTMLCheck,
(v) => {
if (v) {
localStorage.removeItem("hideHTMLCheck");
} else {
localStorage.setItem("hideHTMLCheck", "1");
}
},
);
watch(
() => mailbox.showLinkCheck,
(v) => {
if (v) {
localStorage.removeItem("hideLinkCheck");
} else {
localStorage.setItem("hideLinkCheck", "1");
}
},
);
watch(
() => mailbox.showSpamCheck,
(v) => {
if (v) {
localStorage.removeItem("hideSpamCheck");
} else {
localStorage.setItem("hideSpamCheck", "1");
}
},
);
watch(
() => mailbox.timeZone,
(v) => {
if (v === Intl.DateTimeFormat().resolvedOptions().timeZone) {
localStorage.removeItem("timeZone");
} else {
localStorage.setItem("timeZone", v);
}
},
);