summaryrefslogtreecommitdiffstats
path: root/src/components/group/GroupMaker.vue
blob: f3da293eedd7eb3381714e04d4cb88f43871ab11 (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
<template>
  <div class="group_maker">
      Group maker
      <form @submit="make_group">
          <input
              v-model="group_name"
              ref='input'
              type="text"
              placeholder="Type group name..."
          />

          <select multiple v-model="users_selection">

            <option
              v-for="user in users"
              :key="user.id"
              :value="user.id">
              {{user.username}}
            </option>

          </select>
      </form>
  </div>
</template>

<script>
import ChatService from "@/services/ChatService.js"
import AuthService from "@/services/AuthService.js"

export default {
  data() {
    return {
      group_name: "",
      users_selection: [],
      users: []
    }
  },

  methods: {
      close() {
        this.$emit('close')
      },

      async make_group(e) {
        e.preventDefault()
        console.log(this.users_selection)
        const {status} = await ChatService.group_create({
          "name": this.group_name,
          "users": this.users_selection
        })

        if(status === 201) {
          this.$notify({
            type: "success",
            text: "Group created!"
          })

          this.close()
        }

      },

    async set_users() {
      const {status, data} = await AuthService.info("all=true")

      if(status === 200)
        this.users = data.users
      else
        this.close()

      console.log(this.users)
    }
  },

  created() {
    this.$nextTick(function () {
      this.$refs.input.focus()

      this.set_users()
    })
  }
}
</script>

<style scoped>

.group_maker {
    position: absolute;
    width: 30%;
    height: 80%;
    top: 50%;
    left: 50%;
    background-color: #202020;
    padding: 20px;
    border-radius: 10px;
    transform: translate(-50%, -50%);
  }

</style>