somewhere
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
import { io } from 'socket.io/client-dist/socket.io'
|
||||
import Vue from 'vue'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
agentNotificationOffset: 60
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
user() {
|
||||
return this.$auth.user
|
||||
},
|
||||
userIsLoggedIn() {
|
||||
return this.$auth.loggedIn
|
||||
},
|
||||
agentWS: {
|
||||
get() {
|
||||
return this.$store.state.front.agentWS
|
||||
},
|
||||
set(val) {
|
||||
this.$store.commit('front/set', ['agentWS', val])
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
initAgentWS() {
|
||||
this.agentWS = true
|
||||
|
||||
/// /////////////////////////////////////////// connetct to ws server
|
||||
const socket = io(`${this.$config.WebSocketURL}/agent`, {
|
||||
reconnectionDelay: 20000,
|
||||
reconnectionDelayMax: 20000,
|
||||
auth: {
|
||||
token: this.$auth.strategy.token.get()
|
||||
}
|
||||
})
|
||||
|
||||
Vue.prototype.$agentSocket = socket
|
||||
|
||||
/// /////////////////////////////////////////// connection error
|
||||
// eslint-disable-next-line node/handle-callback-err
|
||||
socket.on('connect_error', err => {})
|
||||
|
||||
/// /////////////////////////////////////////// events
|
||||
socket.on('connect', () => {
|
||||
// console.log('**************** You have access to agent notifications')
|
||||
socket.emit('agent:fetchAnnouncements')
|
||||
})
|
||||
|
||||
socket.on(`agent:allNotifs`, data => {
|
||||
this.$store.commit('front/set', ['agentInbox', data.agentInbox])
|
||||
})
|
||||
|
||||
socket.on(`agent:announcements`, data => {
|
||||
this.$store.commit('front/set', ['newAgentAnnosCount', data.newAgentAnnosCount])
|
||||
this.$store.commit('front/set', ['agentAnnouncements', data.agentAnnouncements])
|
||||
})
|
||||
|
||||
socket.on(`agent:fetchNewAnnouncements`, data => {
|
||||
socket.emit('agent:fetchAnnouncements')
|
||||
})
|
||||
|
||||
socket.on(`agent:notify`, data => {
|
||||
if (data.type === 'updateAgentInbox') {
|
||||
// update store
|
||||
this.$store.commit('front/set', ['agentInbox', data.agentInbox])
|
||||
|
||||
// update DOM
|
||||
if (this.$route.name === 'account-agents-inbox') {
|
||||
this.$nuxt.refresh()
|
||||
}
|
||||
}
|
||||
|
||||
if (data.type === 'newAgentInbox') {
|
||||
// sent ui notif
|
||||
this.$notify({
|
||||
type: 'success',
|
||||
title: 'توجه',
|
||||
message: ' فرم گارانتی جدید در صندوق ورودی شما قرار گرفت',
|
||||
position: 'top-left',
|
||||
offset: this.agentNotificationOffset,
|
||||
duration: 10 * 1000
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
socket.on(`agent:notifyAll`, data => {
|
||||
if (data.type === 'fetchNewAnnouncements') {
|
||||
socket.emit('agent:fetchAnnouncements')
|
||||
this.$notify({
|
||||
type: 'success',
|
||||
title: 'توجه',
|
||||
message: 'پیام جدید در اطلاعیه های نمایندگان دارید',
|
||||
position: 'top-left',
|
||||
offset: this.userNotificationOffset
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.userIsLoggedIn && this.user.isAgent && !this.agentWS) {
|
||||
this.initAgentWS()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user