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,
|
2020-05-23 16:22:03 +03:00
|
|
|
available: new Map(),
|
2019-06-22 18:52:24 +03:00
|
|
|
configs: {},
|
|
|
|
},
|
|
|
|
|
|
|
|
actions: {
|
|
|
|
async loadAvailableGuilds({ dispatch, commit, state }) {
|
|
|
|
if (state.availableGuildsLoadStatus !== LoadStatus.None) return;
|
|
|
|
commit("setAvailableGuildsLoadStatus", LoadStatus.Loading);
|
|
|
|
|
|
|
|
const availableGuilds = await get("guilds/available");
|
2020-05-23 16:22:03 +03:00
|
|
|
for (const guild of availableGuilds) {
|
|
|
|
commit("addGuild", guild);
|
|
|
|
}
|
|
|
|
|
|
|
|
commit("setAvailableGuildsLoadStatus", LoadStatus.Done);
|
|
|
|
},
|
|
|
|
|
|
|
|
async loadGuild({ commit, state }, guildId) {
|
|
|
|
if (state.available.has(guildId)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const guild = await get(`guilds/${guildId}`);
|
|
|
|
if (guild) {
|
|
|
|
commit("addGuild", guild);
|
|
|
|
}
|
2019-06-22 18:52:24 +03:00
|
|
|
},
|
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;
|
|
|
|
},
|
|
|
|
|
2020-05-23 16:22:03 +03:00
|
|
|
addGuild(state: GuildState, guild) {
|
|
|
|
state.available.set(guild.id, guild);
|
2019-06-22 18:52:24 +03:00
|
|
|
},
|
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
|
|
|
},
|
|
|
|
};
|