Update reactive usage according to guidance from Evan

This commit is contained in:
Jeffrey Biles
2020-04-14 05:51:47 -07:00
parent bc22149c44
commit 0dca216d44

View File

@@ -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 }
}