diff --git a/src/components/MailTable.vue b/src/components/MailTable.vue index c9d79d9..7ecf21f 100644 --- a/src/components/MailTable.vue +++ b/src/components/MailTable.vue @@ -18,7 +18,7 @@ - + @@ -53,15 +53,31 @@ }, methods: { openEmail(email) { - email.read = true - this.updateEmail(email) - this.openedEmail = email + + if(email) { + email.read = true + this.updateEmail(email) + } }, archiveEmail(email) { email.archived = true this.updateEmail(email) }, + changeEmail({toggleRead, toggleArchive, save, closeModal, changeIndex}) { + let email = this.openedEmail + if(toggleRead) { email.read = !email.read } + if(toggleArchive) { email.archived = !email.archived } + if(save) { this.updateEmail(email) } + if(closeModal) { this.openedEmail = null } + + if(changeIndex) { + let emails = this.unarchivedEmails + let currentIndex = emails.indexOf(this.openedEmail) + let newEmail = emails[currentIndex + changeIndex] + this.openEmail(newEmail) + } + }, updateEmail(email) { axios.put(`http://localhost:3000/emails/${email.id}`, email) } diff --git a/src/components/MailView.vue b/src/components/MailView.vue index 678d88b..d02169c 100644 --- a/src/components/MailView.vue +++ b/src/components/MailView.vue @@ -21,26 +21,30 @@ export default { setup(props, {emit}){ let email = props.email; - let toggleRead = () => { - email.read = !email.read - axios.put(`http://localhost:3000/emails/${email.id}`, email) - } - let toggleArchive = () => { - email.archived = !email.archived - axios.put(`http://localhost:3000/emails/${email.id}`, email) - // How to close the modal? - } + + let toggleRead = () => { emit('changeEmail', {toggleRead: true, save: true})} + let toggleArchive = () => { emit('changeEmail', {toggleArchive: true, save: true, closeModal: true})} + let goNewer = () => { emit('changeEmail', {changeIndex: -1})} + let goOlder = () => { emit('changeEmail', {changeIndex: 1})} + let goNewerAndArchive = () => { emit('changeEmail', {changeIndex: -1, toggleArchive: true, save: true})} + let goOlderAndArchive = () => { emit('changeEmail', {changeIndex: 1, toggleArchive: true, save: true})} useKeydown([ {key: 'r', fn: toggleRead}, - {key: 'e', fn: toggleArchive} + {key: 'e', fn: toggleArchive}, + {key: 'k', fn: goNewer}, + {key: 'j', fn: goOlder}, + {key: '[', fn: goNewerAndArchive}, + {key: ']', fn: goOlderAndArchive} ]) return { format, marked, toggleRead, - toggleArchive + toggleArchive, + goNewer, + goOlder } }, props: {