diff --git a/src/composition/useEmailSelection.js b/src/composition/useEmailSelection.js index f088dc8..5e444ee 100644 --- a/src/composition/useEmailSelection.js +++ b/src/composition/useEmailSelection.js @@ -1,36 +1,39 @@ import { reactive } from 'vue'; import axios from 'axios'; -let emails = new Set() +let emailSet = new Set() export const useEmailSelection = function(){ - let emailSelection = reactive({ + const emails = reactive(emailSet) + const forSelected = (fn) => { + emails.forEach(email => { + fn(email) + axios.put(`http://localhost:3000/emails/${email.id}`, email) + }) + } + const clear = () => { + emails.clear(); + } + + const emailSelection = { emails: emails, toggle(id) { - if(this.emails.has(id)) { - this.emails.delete(id) + if(emails.has(id)) { + emails.delete(id) } else { - this.emails.add(id); + emails.add(id); } }, - clear(){ - this.emails.clear(); - }, addMultiple(emails) { emails.forEach(email => { - this.emails.add(email) + emails.add(email) }) }, - forSelected(fn){ - this.emails.forEach(email => { - fn(email) - axios.put(`http://localhost:3000/emails/${email.id}`, email) - }) - }, - markRead(){ this.forSelected(e => e.read = true )}, - markUnread(){ this.forSelected(e => e.read = false )}, - archive(){ this.forSelected(e => e.archived = true); this.clear();}, - moveToInbox(){ this.forSelected(e => e.archived = false); this.clear();} - }) + clear: clear, + markRead(){ forSelected(e => e.read = true )}, + markUnread(){ forSelected(e => e.read = false )}, + archive(){ forSelected(e => e.archived = true); clear();}, + moveToInbox(){ forSelected(e => e.archived = false); clear();} + } return { emailSelection } }