-
+
@@ -8,21 +8,23 @@
\ No newline at end of file
diff --git a/src/composables/use-email-selection.js b/src/composables/use-email-selection.js
new file mode 100644
index 0000000..7b82463
--- /dev/null
+++ b/src/composables/use-email-selection.js
@@ -0,0 +1,44 @@
+import { reactive } from "@vue/reactivity"
+import axios from "axios"
+
+const emails = reactive(new Set());
+
+export const useEmailSelection = function () {
+ let toggle = (email) => {
+ if (emails.has(email)) {
+ emails.delete(email);
+ } else {
+ emails.add(email);
+ }
+
+ };
+ const clear = () => {
+ emails.clear();
+ }
+ const addMultiple = (newEmails) => {
+ newEmails.forEach(element => {
+ emails.add(element)
+ });
+ }
+
+ let forSelected = (fn) => {
+ emails.forEach((email) => {
+ fn(email);
+ axios.put(`http://localhost:3000/emails/${email.id}`, email);
+ })
+ }
+ const markRead = () => forSelected((e) => e.read = true)
+ const markUnread = () => forSelected((e) => e.read = false)
+ const archive = () => { forSelected((e) => e.archived = true); clear() }
+
+ return {
+ emails,
+ toggle,
+ clear,
+ addMultiple,
+ markRead,
+ markUnread,
+ archive
+ }
+}
+export default useEmailSelection
\ No newline at end of file
diff --git a/src/composables/use-keydown.js b/src/composables/use-keydown.js
new file mode 100644
index 0000000..859f22d
--- /dev/null
+++ b/src/composables/use-keydown.js
@@ -0,0 +1,19 @@
+
+import { onBeforeUnmount } from "@vue/runtime-core";
+
+const useKeydown = (keyCombos) => {
+ let onKeydown = ({ key }) => {
+
+ const kc = keyCombos.find((k) => k.key === key);
+ if (kc) {
+ kc.fn();
+ }
+ };
+
+ window.addEventListener("keydown", onKeydown);
+ onBeforeUnmount(() => {
+ window.removeEventListener("keydown", onKeydown);
+ });
+};
+
+export default useKeydown;
\ No newline at end of file
diff --git a/src/composition/useEmailSelection.js b/src/composition/useEmailSelection.js
deleted file mode 100644
index 76d227d..0000000
--- a/src/composition/useEmailSelection.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { reactive } from 'vue';
-import axios from 'axios';
-
-let emailSet = new Set()
-
-export const useEmailSelection = function(){
- 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 toggle = (id) => {
- if(emails.has(id)) {
- emails.delete(id)
- } else {
- emails.add(id);
- }
- }
- const addMultiple = (newEmails) => {
- newEmails.forEach(email => {
- emails.add(email)
- })
- }
- const markRead = () => { forSelected(e => e.read = true )}
- const markUnread = () => { forSelected(e => e.read = false )}
- const archive = () => { forSelected(e => e.archived = true); clear();}
- const moveToInbox = () => { forSelected(e => e.archived = false); clear();}
-
- return {
- emails,
- clear,
- toggle,
- addMultiple,
- markRead,
- markUnread,
- archive,
- moveToInbox
- }
-}
-
-export default useEmailSelection;
\ No newline at end of file
diff --git a/src/composition/useKeydown.js b/src/composition/useKeydown.js
deleted file mode 100644
index acfd5a4..0000000
--- a/src/composition/useKeydown.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { onBeforeUnmount } from 'vue';
-
-export const useKeydown = function(keyCombos) {
- let onkey = function(event) {
- let kc = keyCombos.find(({key, fn}) => key == event.key )
- if(kc) {
- kc.fn()
- }
- }
-
- window.addEventListener('keydown', onkey);
-
- onBeforeUnmount(()=> {
- window.removeEventListener('keydown', onkey);
- })
-}
-
-export default useKeydown;
\ No newline at end of file