Sorunu sonunda çözebildim. Belki başkasının da işine yarar. Hazır çalışır durumda.
store/index.js içeriği:
import Vue from 'vue';
import Vuex from 'vuex';
import createLogger from 'vuex/dist/logger';
import Notification from './Core/Notification.js';
Vue.use(Vuex);
const debug = process.env.NODE_ENV !== 'production';
export default {
modules: {
Notification,
},
strict: debug,
plugins: debug? [ createLogger() ] : [],
}
Notification Vuex dosyasını aşağıdaki gibi değiştirin.
import Vuex from 'vuex'
const Notification = new Vuex.Store({
state: {
notifications: [],
},
mutations: {
setNotifications(state, notifications) {
state.notifications = notifications
},
addNotification(state, notification) {
state.notifications.push(notification)
},
},
actions: {
notificationsCount(){
return this.$store.modules.Notification.getters.getTotalNotificationsCount;
},
setNotifications(context, notifications) {
context.commit('setNotifications', notifications)
},
},
getters: {
getNotifications(state) {
return state.notifications
},
getTotalNotificationsCount(state) {
return state.notifications.length
},
},
})
export default Notification
Notifications.vue component içeriği:
<script>
export default {
name: "Notifications",
computed: {
notifications(){
return this.$store.modules.Notification.getters.getNotifications;
}
},
mounted() {
const $this = this;
const frontend = this.$pusher.subscribe('Frontend')
frontend.bind('Illuminate\\Notifications\\Events\\BroadcastNotificationCreated', function (notification) {
$this.$store.modules.Notification.commit('addNotification', notification)
});
},
}
</script>
HTML kısmını da kendinize göre yazmanız lazım.
İşinize yarayacak diğer kaynaklar:
https://gist.github.com/DawidMyslak/2b046cca5959427e8fb5c1da45ef7748
https://github.com/jaggy/vue-pusher
https://medium.com/js-dojo/laravel-passport-pusher-vue-js-27fcec38546b
İşinize yaraması dileğiyle..