session.js 1.32 KB
Newer Older
abergavenny's avatar
abergavenny committed
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
import { defineStore } from 'pinia'

import { ResponseStatus } from '@/helpers'
import { self as api, users as userApi } from '@/services/api'

export const useSessionStore = defineStore({
  id: 'session',
  state: () => ({
    connectionState: false,
    currentUser: null,
    isAuthenticated: false,
    self: null,
  }),
  getters: {
    getUser: (state) => state.currentUser
  },
  actions: {
    async fetchSelf() {
      try {
        const response = await api.findOne()

        if (response.status === ResponseStatus.Success) {
          this.self = response.data

          return { success: true, message: response.code }
        }

        return { success: false, message: response.code }
      } catch (error) {
        return { success: false }
      }
    },
    setConnectionState(connectionState) {
      this.connectionState = connectionState
    },
    setUser(user, success) {
      this.currentUser = user
      this.isAuthenticated = success
    },
    async updateSharing(id, data) {
      try {
        const response = await userApi.updateSharing(id, data)

        if (response.status === ResponseStatus.Success) {
          return { success: true, message: response.code }
        }

        return { success: false, message: response.code }
      } catch (error) {
        return { success: false }
      }
    }
  }
})