2019-06-23 03:40:53 +03:00
|
|
|
import { get, post } from "../api";
|
2019-06-22 18:52:24 +03:00
|
|
|
import { Module } from "vuex";
|
|
|
|
import { GuildState, LoadStatus, RootState } from "./types";
|
|
|
|
|
|
|
|
export const GuildStore: Module<GuildState, RootState> = {
|
|
|
|
namespaced: true,
|
|
|
|
|
|
|
|
state: {
|
|
|
|
availableGuildsLoadStatus: LoadStatus.None,
|
|
|
|
available: [],
|
|
|
|
configs: {},
|
|
|
|
},
|
|
|
|
|
|
|
|
actions: {
|
|
|
|
async loadAvailableGuilds({ dispatch, commit, state }) {
|
|
|
|
if (state.availableGuildsLoadStatus !== LoadStatus.None) return;
|
|
|
|
commit("setAvailableGuildsLoadStatus", LoadStatus.Loading);
|
|
|
|
|
|
|
|
const availableGuilds = await get("guilds/available");
|
|
|
|
commit("setAvailableGuilds", availableGuilds);
|
|
|
|
},
|
2019-06-23 03:40:53 +03:00
|
|
|
|
|
|
|
async loadConfig({ commit }, guildId) {
|
|
|
|
const result = await get(`guilds/${guildId}/config`);
|
|
|
|
commit("setConfig", { guildId, config: result.config });
|
|
|
|
},
|
|
|
|
|
|
|
|
async saveConfig({ commit }, { guildId, config }) {
|
|
|
|
await post(`guilds/${guildId}/config`, { config });
|
|
|
|
},
|
2019-06-22 18:52:24 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
mutations: {
|
|
|
|
setAvailableGuildsLoadStatus(state: GuildState, status: LoadStatus) {
|
|
|
|
state.availableGuildsLoadStatus = status;
|
|
|
|
},
|
|
|
|
|
|
|
|
setAvailableGuilds(state: GuildState, guilds) {
|
|
|
|
state.available = guilds;
|
|
|
|
state.availableGuildsLoadStatus = LoadStatus.Done;
|
|
|
|
},
|
2019-06-23 03:40:53 +03:00
|
|
|
|
|
|
|
setConfig(state: GuildState, { guildId, config }) {
|
|
|
|
state.configs[guildId] = config;
|
|
|
|
},
|
2019-06-22 18:52:24 +03:00
|
|
|
},
|
|
|
|
};
|