mirror of
https://github.com/kevin-DL/build-gmail-clone-with-vue-3.git
synced 2026-01-11 18:54:31 +00:00
Update reactive usage according to guidance from Evan
This commit is contained in:
@@ -1,36 +1,39 @@
|
|||||||
import { reactive } from 'vue';
|
import { reactive } from 'vue';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
||||||
let emails = new Set()
|
let emailSet = new Set()
|
||||||
export const useEmailSelection = function(){
|
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,
|
emails: emails,
|
||||||
toggle(id) {
|
toggle(id) {
|
||||||
if(this.emails.has(id)) {
|
if(emails.has(id)) {
|
||||||
this.emails.delete(id)
|
emails.delete(id)
|
||||||
} else {
|
} else {
|
||||||
this.emails.add(id);
|
emails.add(id);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
clear(){
|
|
||||||
this.emails.clear();
|
|
||||||
},
|
|
||||||
addMultiple(emails) {
|
addMultiple(emails) {
|
||||||
emails.forEach(email => {
|
emails.forEach(email => {
|
||||||
this.emails.add(email)
|
emails.add(email)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
forSelected(fn){
|
clear: clear,
|
||||||
this.emails.forEach(email => {
|
markRead(){ forSelected(e => e.read = true )},
|
||||||
fn(email)
|
markUnread(){ forSelected(e => e.read = false )},
|
||||||
axios.put(`http://localhost:3000/emails/${email.id}`, email)
|
archive(){ forSelected(e => e.archived = true); clear();},
|
||||||
})
|
moveToInbox(){ forSelected(e => e.archived = false); clear();}
|
||||||
},
|
}
|
||||||
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();}
|
|
||||||
})
|
|
||||||
|
|
||||||
return { emailSelection }
|
return { emailSelection }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user