Files
build-gmail-clone-with-vue-3/src/composables/use-email-selection.js
2020-08-18 01:04:06 -07:00

43 lines
912 B
JavaScript

import { reactive } from 'vue';
import axios from 'axios';
let emails = reactive(new Set())
export const useEmailSelection = function(){
let toggle = function(email) {
if(emails.has(email)) {
emails.delete(email)
} else {
emails.add(email)
}
}
let clear = () => {
emails.clear()
}
let addMultiple = (newEmails) => {
newEmails.forEach((email) => {
emails.add(email)
})
}
let forSelected = (fn) => {
emails.forEach((email) => {
fn(email);
axios.put(`http://localhost:3000/emails/${email.id}`, email)
})
}
let markRead = () => forSelected(e => e.read = true)
let markUnread = () => forSelected(e => e.read = false)
let archive = () => { forSelected(e => e.archived = true); clear() }
return {
emails,
toggle,
clear,
addMultiple,
markRead,
markUnread,
archive
}
}
export default useEmailSelection