I´m trying to update the user vuex state from a Login component have here. I have very few experience with vuex so I´m little lost in the process... this is how I´m trying:
By the way, I´m trying to use (https://github.com/devjin0617/vue2-admin-lte) , however I just added a Login component to the project
`const mutations = {
set: (state, user) =>{
state.main = Object.assign({}, state.main, user)
}
export const updateCurrentUser = ( {commit}, form ) => {
commit('setUser',form)
}
export const UPDATE_USER = 'UPDATE_USER'
Finally in the Login.vue component I have the login() method in which I´m trying to call the action
methods:{
...mapActions([
'updateCurrentUser'
]),
logIn() {
this.$store.commit() // I dont know which parameters to call here
this.currentUser.mutations.set(this.form) // I´ve tried this, but doesn´t work
}
`
I´m want to update the user but at the moment I´m being able to access the setter method
I don´t know if I´m following the correct method resolution order to make this work...
I still lost in the order to call the procedures.
The final solution is like this:
import firebase from 'firebase'
const state = {
user:null
}
const getters = {
user: state => {
return state.user
}
}
// mutations
const mutations = {
'SET_USER' (state, user) {
state.user = user
}
}
// actions
const actions = {
setUser: ( {commit}, user ) => {
if (user){
let fireUser = null
firebase.firestore().collection("users").doc(user.uid).get()
.then( doc => {
fireUser = doc.data()
commit('SET_USER', fireUser)
}).catch( err => {
console.log(err)
})
}
console.log(state.user)
}
}
export default {
state,mutations,actions,getters
}
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
Vue.use(Vuex)
// debugger
export const store = new Vuex.Store({
modules:{
user
}
})
// So here is where the event is fired when the user get´s logged in the firebase
created(){
let _this = this
window.firebase.auth().onAuthStateChanged( user => {
// set user credentials
if (user){
if (_this.$store)
_this.$store.dispatch('setUser', user)
} else {
if(_this.$store)
_this.$store.dispatch('setUser', null)
}
})
}
I don´t know if it is the best implementation, but It´s working for the moment