1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
<template>
<div class="home" v-hotkey="keymap">
Hi {{get_username}}!
<div v-for="group in groups" :key="group.name" >
<GroupSender
:group="group"
:socket="socket"
/>
</div>
<GroupMaker
v-if="popups.group_maker_show"
@close="hideGroup"
/>
<Searcher
v-if="popups.searcher_show"
@close="hideSearcher"
@toogle_group_maker="toogleGroupShow"
@group_set="openGroup"
/>
</div>
</template>
<script>
import Searcher from '@/components/searcher/Searcher.vue'
import GroupMaker from '@/components/group/GroupMaker.vue'
import GroupSender from '@/components/group/GroupSender.vue'
import io from 'socket.io-client'
const popups = {
searcher_show: false,
group_maker_show: false
}
export default {
data() {
return {
popups,
groups: [],
socket: Object
}
},
methods: {
logout() {
this.$store.dispatch('logout')
this.$router.push('/login')
},
toogleSearcherShow() {
this.popups.searcher_show = !this.popups.searcher_show
this.popups.group_maker_show = false
},
hideSearcher() { this.popups.searcher_show = false },
toogleGroupShow() { this.popups.group_maker_show = !this.popups.group_maker_show },
hideGroup() { this.popups.group_maker_show = false },
openGroup(group) {
let groups = this.groups.slice()
let index = groups.findIndex(o => o.name===group.name)
if(index >= 0)
groups.splice(index, 1)
else
groups.push(group)
this.groups = groups
}
},
computed: {
get_username() {
return this.$store.getters['get_user'].username
},
keymap() {
return {
'ctrl+esc': this.toogleSearcherShow,
'ctrl+shift+p': this.toogleSearcherShow,
'esc': this.hideGroup
}
}
},
components: {
Searcher,
GroupMaker,
GroupSender
},
created() {
if(!this.$store.getters['is_logged_in']) {
this.$router.push('/login')
}
this.socket = io()
this.socket.auth = { token: this.$store.getters.get_token };
this.socket.connect();
this.socket.on("connect", () => {
console.log("Socket connected!")
});
this.socket.on("disconnect", () => {
console.log("Scoket dsiconected")
})
}
}
</script>
|