Yield generated for ba2c4e78-85f0-4f44-a845-47decc5fe3ea
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

74 lines
1.7 KiB

import ApiService from "@/common/api.service";
import {
FETCH_PROFILE,
FETCH_PROFILE_FOLLOW,
FETCH_PROFILE_UNFOLLOW
} from "./actions.type";
import { SET_PROFILE } from "./mutations.type";
const state = {
errors: {},
profile: {}
};
const getters = {
profile(state) {
return state.profile;
}
};
const actions = {
[FETCH_PROFILE](context, payload) {
const { username } = payload;
return ApiService.get("profiles", username)
.then(({ data }) => {
context.commit(SET_PROFILE, data.profile);
return data;
})
.catch(() => {
// #todo SET_ERROR cannot work in multiple states
// context.commit(SET_ERROR, response.data.errors)
});
},
[FETCH_PROFILE_FOLLOW](context, payload) {
const { username } = payload;
return ApiService.post(`profiles/${username}/follow`)
.then(({ data }) => {
context.commit(SET_PROFILE, data.profile);
return data;
})
.catch(() => {
// #todo SET_ERROR cannot work in multiple states
// context.commit(SET_ERROR, response.data.errors)
});
},
[FETCH_PROFILE_UNFOLLOW](context, payload) {
const { username } = payload;
return ApiService.delete(`profiles/${username}/follow`)
.then(({ data }) => {
context.commit(SET_PROFILE, data.profile);
return data;
})
.catch(() => {
// #todo SET_ERROR cannot work in multiple states
// context.commit(SET_ERROR, response.data.errors)
});
}
};
const mutations = {
// [SET_ERROR] (state, error) {
// state.errors = error
// },
[SET_PROFILE](state, profile) {
state.profile = profile;
state.errors = {};
}
};
export default {
state,
actions,
mutations,
getters
};