summaryrefslogtreecommitdiffstats
path: root/src/views/Home.vue
blob: d85760b815db59810c43f10a63310b8837d73018 (plain)
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>