2021-04-20 15:55:18 +02:00

83 lines
2.1 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
import loginAPI from '../apis/loginAPI'
import communityAPI from '../apis/communityAPI'
import createPersistedState from 'vuex-persistedstate'
export const store = new Vuex.Store({
plugins: [
createPersistedState({
storage: window.sessionStorage,
}),
],
state: {
session_id: null,
email: '',
language: 'en',
user: {
name: '',
balance: 0,
balance_gdt: 0,
},
modals: false,
optionAxios: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true',
},
},
},
getters: {},
// Syncronous mutation of the state
mutations: {
language: (state, language) => {
state.language = language
},
email: (state, email) => {
state.email = email
},
session_id: (state, session_id) => {
state.session_id = session_id
},
user_balance: (state, balance) => {
state.user.balance = balance / 10000
},
user_balance_gdt: (state, balance) => {
state.user.balance_gdt = balance / 10000
},
},
actions: {
login: async ({ dispatch, commit }, data) => {
commit('session_id', data.session_id)
commit('email', data.email)
},
passwordReset: async (data) => {},
schoepfen: async (data) => {
// http://localhost/transaction-creations/ajaxCreate
},
createUser: async ({ commit, dispatch }, data) => {
commit('session_id', data.session_id)
commit('email', data.email)
},
logout: async ({ commit, state }) => {
if (state.session_id) {
const result = await loginAPI.logout(state.session_id)
// The result can be error, but thats ok with us
}
commit('session_id', null)
commit('email', null)
sessionStorage.clear()
},
accountBalance: async ({ commit, dispatch, state }) => {
const result = await communityAPI.balance(state.session_id)
if (result.success) {
commit('user_balance', result.result.data.balance)
} else {
//dispatch('logout')
}
},
},
})