import CommonMixins from './CommonMixins.js' import { mailbox } from '../stores/mailbox.js' import { pagination } from '../stores/pagination.js' export default { mixins: [CommonMixins], data() { return { apiURI: false, pagination, mailbox, } }, watch: { 'mailbox.refresh': function (v) { if (v) { // trigger a refresh this.loadMessages() } mailbox.refresh = false } }, methods: { reloadMailbox: function () { pagination.start = 0 this.loadMessages() }, loadMessages: function () { if (!this.apiURI) { alert('apiURL not set!') return } let self = this let params = {} mailbox.selected = [] params['limit'] = pagination.limit if (pagination.start > 0) { params['start'] = pagination.start } self.get(this.apiURI, params, function (response) { mailbox.total = response.data.total // all messages mailbox.unread = response.data.unread // all unread messages mailbox.tags = response.data.tags // all tags mailbox.messages = response.data.messages // current messages mailbox.count = response.data.messages_count // total results for this mailbox/search // ensure the pagination remains consistent pagination.start = response.data.start if (response.data.count == 0 && response.data.start > 0) { pagination.start = 0 return self.loadMessages() } if (mailbox.lastMessage) { window.setTimeout(() => { let m = document.getElementById(mailbox.lastMessage) if (m) { m.focus() // m.scrollIntoView({ behavior: 'smooth', block: 'center' }) m.scrollIntoView({ block: 'center' }) } else { let mp = document.getElementById('message-page') if (mp) { mp.scrollTop = 0 } } mailbox.lastMessage = false }, 50) } else if (!window.scrollInPlace) { let mp = document.getElementById('message-page') if (mp) { mp.scrollTop = 0 } } window.scrollInPlace = false }) }, } }