Add event bus vue component. Refactoring helpers.

This commit is contained in:
2019-03-16 09:55:52 +07:00
parent 8bab799f54
commit ee1b858f06
13 changed files with 52 additions and 11 deletions

View File

@@ -66,7 +66,7 @@
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import YoutubeButton from '@/components/Article/YoutubeButton'; import YoutubeButton from '@/components/Article/YoutubeButton';
import { getArticleLevel, declOfNum } from '@/helpers'; import { getArticleLevel, declOfNum } from '@/utils';
export default { export default {
props: { props: {

View File

@@ -39,7 +39,7 @@
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getFullOriginalWord, WORD_TYPES } from '@/helpers'; import { getFullOriginalWord, WORD_TYPES } from '@/utils';
export default { export default {
props: { props: {

View File

@@ -120,7 +120,7 @@
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { emailRules, passwordRules, nameRules } from "@/helpers"; import { emailRules, passwordRules, nameRules, EVENTS } from "@/utils";
export default { export default {
data: () => ({ data: () => ({
@@ -162,5 +162,13 @@
}); });
}, },
}, },
created() {
this.$bus.$on(EVENTS.USER.DATA_CHANGED, () => {
this.dialog = false;
});
},
beforeDestroy() {
this.$bus.$off(EVENTS.USER.DATA_CHANGED);
},
}; };
</script> </script>

View File

@@ -1,4 +0,0 @@
export * from '@/helpers/article';
export * from '@/helpers/formRules';
export * from '@/helpers/utils';
export * from '@/helpers/word';

View File

@@ -10,10 +10,11 @@ import 'vuetify/dist/vuetify.min.css';
import 'material-design-icons-iconfont/dist/material-design-icons.css'; import 'material-design-icons-iconfont/dist/material-design-icons.css';
import App from '@/App.vue'; import App from '@/App.vue';
import router from '@/router';
import store from '@/store';
import firebaseConfig from '@/config/firebase'; import firebaseConfig from '@/config/firebase';
import formattedDate from '@/filters/formattedDate'; import formattedDate from '@/filters/formattedDate';
import router from '@/router';
import store from '@/store';
import { setUpEventBus } from '@/utils';
const firebaseApp = firebase.initializeApp(firebaseConfig); const firebaseApp = firebase.initializeApp(firebaseConfig);
const db = firebaseApp.firestore(); const db = firebaseApp.firestore();
@@ -31,6 +32,8 @@ Vue.use(VueYouTubeEmbed);
Vue.filter('formattedDate', formattedDate); Vue.filter('formattedDate', formattedDate);
setUpEventBus();
new Vue({ new Vue({
router, router,
store, store,

View File

@@ -1,6 +1,7 @@
import Vue from 'vue'; import Vue from 'vue';
import firebase from 'firebase/app'; import firebase from 'firebase/app';
import 'firebase/auth'; import 'firebase/auth';
import { EventBus, EVENTS } from '@/utils';
export default { export default {
state: { state: {
@@ -118,6 +119,7 @@ export default {
}); });
await commit('setProcessing', false); await commit('setProcessing', false);
await EventBus.notify(EVENTS.USER.DATA_CHANGED);
}, },
}, },
getters: { getters: {

25
src/utils/eventBus.js Normal file
View File

@@ -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;
},
},
});
}

View File

@@ -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) => { export const declOfNum = (number, titles) => {
const cases = [2, 0, 1, 1, 1, 2]; const cases = [2, 0, 1, 1, 1, 2];
return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]]; return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
}; };

View File

@@ -52,7 +52,7 @@
</template> </template>
<script> <script>
import { emailRules, passwordRules } from '@/helpers'; import { emailRules, passwordRules } from '@/utils';
export default { export default {
beforeMount() { beforeMount() {

View File

@@ -63,7 +63,7 @@
</template> </template>
<script> <script>
import { emailRules, passwordRules, nameRules } from '@/helpers'; import { emailRules, passwordRules, nameRules } from '@/utils';
export default { export default {
beforeMount() { beforeMount() {