diff --git a/src/components/Article/Details.vue b/src/components/Article/Details.vue
index f78d11f..3030be2 100644
--- a/src/components/Article/Details.vue
+++ b/src/components/Article/Details.vue
@@ -66,7 +66,7 @@
diff --git a/src/helpers/index.js b/src/helpers/index.js
deleted file mode 100644
index 8733a98..0000000
--- a/src/helpers/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from '@/helpers/article';
-export * from '@/helpers/formRules';
-export * from '@/helpers/utils';
-export * from '@/helpers/word';
diff --git a/src/main.js b/src/main.js
index d54b1d6..57d103d 100644
--- a/src/main.js
+++ b/src/main.js
@@ -10,10 +10,11 @@ import 'vuetify/dist/vuetify.min.css';
import 'material-design-icons-iconfont/dist/material-design-icons.css';
import App from '@/App.vue';
-import router from '@/router';
-import store from '@/store';
import firebaseConfig from '@/config/firebase';
import formattedDate from '@/filters/formattedDate';
+import router from '@/router';
+import store from '@/store';
+import { setUpEventBus } from '@/utils';
const firebaseApp = firebase.initializeApp(firebaseConfig);
const db = firebaseApp.firestore();
@@ -31,6 +32,8 @@ Vue.use(VueYouTubeEmbed);
Vue.filter('formattedDate', formattedDate);
+setUpEventBus();
+
new Vue({
router,
store,
diff --git a/src/store/user.js b/src/store/user.js
index d6cd639..8b4782f 100644
--- a/src/store/user.js
+++ b/src/store/user.js
@@ -1,6 +1,7 @@
import Vue from 'vue';
import firebase from 'firebase/app';
import 'firebase/auth';
+import { EventBus, EVENTS } from '@/utils';
export default {
state: {
@@ -118,6 +119,7 @@ export default {
});
await commit('setProcessing', false);
+ await EventBus.notify(EVENTS.USER.DATA_CHANGED);
},
},
getters: {
diff --git a/src/utils/eventBus.js b/src/utils/eventBus.js
new file mode 100644
index 0000000..6290ab0
--- /dev/null
+++ b/src/utils/eventBus.js
@@ -0,0 +1,25 @@
+import Vue from 'vue';
+
+export const EVENTS = {
+ USER: {
+ DATA_CHANGED: 'user-profile-data-changed',
+ },
+};
+
+export const EventBus = new Vue({
+ methods: {
+ notify(eventName, eventPayload) {
+ this.$emit(eventName, eventPayload);
+ },
+ },
+});
+
+export const setUpEventBus = () => {
+ Object.defineProperties(Vue.prototype, {
+ $bus: {
+ get: function() {
+ return EventBus;
+ },
+ },
+ });
+}
\ No newline at end of file
diff --git a/src/helpers/article.js b/src/utils/helpers/article.js
similarity index 100%
rename from src/helpers/article.js
rename to src/utils/helpers/article.js
diff --git a/src/helpers/formRules.js b/src/utils/helpers/formRules.js
similarity index 100%
rename from src/helpers/formRules.js
rename to src/utils/helpers/formRules.js
diff --git a/src/helpers/word.js b/src/utils/helpers/word.js
similarity index 100%
rename from src/helpers/word.js
rename to src/utils/helpers/word.js
diff --git a/src/helpers/utils.js b/src/utils/index.js
similarity index 55%
rename from src/helpers/utils.js
rename to src/utils/index.js
index ee55eb0..0b43e8c 100644
--- a/src/helpers/utils.js
+++ b/src/utils/index.js
@@ -1,4 +1,11 @@
+export * from '@/utils/helpers/article';
+export * from '@/utils/helpers/formRules';
+export * from '@/utils/helpers/word';
+
+export * from '@/utils/eventBus';
+
export const declOfNum = (number, titles) => {
const cases = [2, 0, 1, 1, 1, 2];
return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
};
+
diff --git a/src/views/SignIn.vue b/src/views/SignIn.vue
index 5f8eca0..4cfa50a 100644
--- a/src/views/SignIn.vue
+++ b/src/views/SignIn.vue
@@ -52,7 +52,7 @@