Skip to content

Commit 0dca216

Browse files
author
Jeffrey Biles
committed
Update reactive usage according to guidance from Evan
1 parent bc22149 commit 0dca216

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/composition/useEmailSelection.js

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,39 @@
11
import { reactive } from 'vue';
22
import axios from 'axios';
33

4-
let emails = new Set()
4+
let emailSet = new Set()
55
export const useEmailSelection = function(){
6-
let emailSelection = reactive({
6+
const emails = reactive(emailSet)
7+
const forSelected = (fn) => {
8+
emails.forEach(email => {
9+
fn(email)
10+
axios.put(`http://localhost:3000/emails/${email.id}`, email)
11+
})
12+
}
13+
const clear = () => {
14+
emails.clear();
15+
}
16+
17+
const emailSelection = {
718
emails: emails,
819
toggle(id) {
9-
if(this.emails.has(id)) {
10-
this.emails.delete(id)
20+
if(emails.has(id)) {
21+
emails.delete(id)
1122
} else {
12-
this.emails.add(id);
23+
emails.add(id);
1324
}
1425
},
15-
clear(){
16-
this.emails.clear();
17-
},
1826
addMultiple(emails) {
1927
emails.forEach(email => {
20-
this.emails.add(email)
21-
})
22-
},
23-
forSelected(fn){
24-
this.emails.forEach(email => {
25-
fn(email)
26-
axios.put(`http://localhost:3000/emails/${email.id}`, email)
28+
emails.add(email)
2729
})
2830
},
29-
markRead(){ this.forSelected(e => e.read = true )},
30-
markUnread(){ this.forSelected(e => e.read = false )},
31-
archive(){ this.forSelected(e => e.archived = true); this.clear();},
32-
moveToInbox(){ this.forSelected(e => e.archived = false); this.clear();}
33-
})
31+
clear: clear,
32+
markRead(){ forSelected(e => e.read = true )},
33+
markUnread(){ forSelected(e => e.read = false )},
34+
archive(){ forSelected(e => e.archived = true); clear();},
35+
moveToInbox(){ forSelected(e => e.archived = false); clear();}
36+
}
3437

3538
return { emailSelection }
3639
}

0 commit comments

Comments
 (0)