aboutsummaryrefslogtreecommitdiff
path: root/public/javascripts/favorite.js
diff options
context:
space:
mode:
authorBuildTools <Noah Loomans>2017-01-07 22:37:16 +0100
committerBuildTools <Noah Loomans>2017-01-07 22:37:16 +0100
commit549364fb691f7f092223e186033a8138c3ead2fd (patch)
treebec1b0bbc972a08ff69464853190044780eb667d /public/javascripts/favorite.js
parent4e8da42863406764a659a7337e774ad216d356c9 (diff)
parenta5238353ab86923bb3911e0bf2886ebcb53dfbd2 (diff)
Merge branch 'beta'
Diffstat (limited to 'public/javascripts/favorite.js')
-rw-r--r--public/javascripts/favorite.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/public/javascripts/favorite.js b/public/javascripts/favorite.js
new file mode 100644
index 0000000..9edc248
--- /dev/null
+++ b/public/javascripts/favorite.js
@@ -0,0 +1,79 @@
+/* global USERS */
+
+const EventEmitter = require('events')
+
+const self = new EventEmitter()
+
+self._nodes = {
+ toggle: document.querySelector('.fav')
+}
+
+self.get = function () {
+ try {
+ const localStorageUser = JSON.parse(window.localStorage.getItem('fav'))
+ if (localStorageUser == null) return
+
+ const correctedUser = USERS.filter(function (user) {
+ return user.type === localStorageUser.type &&
+ user.value === localStorageUser.value
+ })[0]
+ return correctedUser
+ } catch (e) {
+ self.delete()
+ return
+ }
+}
+
+self.set = function (user) {
+ window.localStorage.setItem('fav', JSON.stringify(user))
+ self._nodes.innerHTML = '&#xE838;'
+}
+
+self.delete = function () {
+ window.localStorage.removeItem('fav')
+}
+
+self.updateDom = function (isFavorite) {
+ if (isFavorite) {
+ self._nodes.toggle.innerHTML = '&#xE838;'
+ } else {
+ self._nodes.toggle.innerHTML = '&#xE83A'
+ }
+}
+
+self.update = function (selectedUser) {
+ const currentUser = self.get()
+
+ if (currentUser == null) {
+ self.updateDom(false)
+ return
+ }
+
+ const isEqual = currentUser.type === selectedUser.type &&
+ currentUser.index === selectedUser.index
+
+ self.updateDom(isEqual)
+}
+
+self.toggle = function (selectedUser) {
+ const currentUser = self.get()
+ const isEqual = currentUser != null &&
+ currentUser.type === selectedUser.type &&
+ currentUser.index === selectedUser.index
+
+ if (isEqual) {
+ self.delete()
+ self.updateDom(false)
+ } else {
+ self.set(selectedUser)
+ self.updateDom(true)
+ }
+}
+
+self._handleClick = function () {
+ self.emit('click')
+}
+
+self._nodes.toggle.addEventListener('click', self._handleClick)
+
+module.exports = self