From 0dca216d447c57b69d06e26aa1cb043e41a6d491 Mon Sep 17 00:00:00 2001 From: Jeffrey Biles Date: Tue, 14 Apr 2020 05:51:47 -0700 Subject: [PATCH] Update reactive usage according to guidance from Evan --- src/composition/useEmailSelection.js | 43 +++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) 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 } }