mirror of
https://github.com/axllent/mailpit.git
synced 2025-12-20 00:12:26 +02:00
95 lines
2.2 KiB
JavaScript
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);
|
|
}
|
|
},
|
|
);
|