2020-05-02 19:46:51 +00:00
|
|
|
module.exports = store => {
|
2020-05-02 20:23:05 +00:00
|
|
|
// initialize data
|
2020-05-02 19:46:51 +00:00
|
|
|
if (localStorage.background !== undefined) {
|
|
|
|
store.commit("setBackground", localStorage.background);
|
|
|
|
}
|
|
|
|
if (localStorage.isPublic !== undefined) {
|
2020-05-05 18:13:30 +00:00
|
|
|
store.commit("toggleGrimoire", JSON.parse(localStorage.isPublic));
|
2020-05-02 19:46:51 +00:00
|
|
|
}
|
|
|
|
if (localStorage.edition !== undefined) {
|
2020-05-03 21:05:17 +00:00
|
|
|
// this will initialize state.roles!
|
2020-05-02 19:46:51 +00:00
|
|
|
store.commit("setEdition", localStorage.edition);
|
|
|
|
}
|
2020-05-03 21:05:17 +00:00
|
|
|
if (localStorage.bluffs !== undefined) {
|
|
|
|
JSON.parse(localStorage.bluffs).forEach((role, index) => {
|
|
|
|
store.commit("setBluff", {
|
|
|
|
index,
|
|
|
|
role: store.state.roles.get(role) || {}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2020-05-02 20:23:05 +00:00
|
|
|
if (localStorage.players) {
|
|
|
|
store.commit(
|
2020-05-03 21:05:17 +00:00
|
|
|
"players/set",
|
2020-05-02 20:23:05 +00:00
|
|
|
JSON.parse(localStorage.players).map(player => ({
|
|
|
|
...player,
|
|
|
|
role: store.state.roles.get(player.role) || {}
|
|
|
|
}))
|
|
|
|
);
|
|
|
|
}
|
2020-05-12 18:48:00 +00:00
|
|
|
if (localStorage.getItem("session")) {
|
|
|
|
const [spectator, sessionId] = JSON.parse(localStorage.getItem("session"));
|
|
|
|
store.commit("setSpectator", spectator);
|
|
|
|
store.commit("setSessionId", sessionId);
|
|
|
|
}
|
2020-05-02 19:46:51 +00:00
|
|
|
|
2020-05-02 20:23:05 +00:00
|
|
|
// listen to mutations
|
2020-05-02 19:46:51 +00:00
|
|
|
store.subscribe(({ type, payload }, state) => {
|
|
|
|
switch (type) {
|
|
|
|
case "toggleGrimoire":
|
|
|
|
localStorage.setItem(
|
|
|
|
"isPublic",
|
|
|
|
JSON.stringify(state.grimoire.isPublic)
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
case "setBackground":
|
|
|
|
if (payload) {
|
|
|
|
localStorage.setItem("background", payload);
|
|
|
|
} else {
|
|
|
|
localStorage.removeItem("background");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case "setEdition":
|
|
|
|
localStorage.setItem("edition", payload);
|
|
|
|
break;
|
2020-05-03 21:05:17 +00:00
|
|
|
case "setBluff":
|
2020-05-02 20:23:05 +00:00
|
|
|
localStorage.setItem(
|
2020-05-03 21:05:17 +00:00
|
|
|
"bluffs",
|
|
|
|
JSON.stringify(state.grimoire.bluffs.map(({ id }) => id))
|
2020-05-02 20:23:05 +00:00
|
|
|
);
|
|
|
|
break;
|
2020-05-12 18:48:00 +00:00
|
|
|
case "setSessionId":
|
|
|
|
if (payload) {
|
|
|
|
localStorage.setItem(
|
|
|
|
"session",
|
|
|
|
JSON.stringify([state.session.isSpectator, payload])
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
localStorage.removeItem("session");
|
|
|
|
}
|
|
|
|
break;
|
2020-05-03 21:05:17 +00:00
|
|
|
case "players/add":
|
|
|
|
case "players/update":
|
|
|
|
case "players/remove":
|
|
|
|
case "players/clear":
|
|
|
|
case "players/set":
|
2020-05-12 20:22:36 +00:00
|
|
|
case "players/swap":
|
2020-05-03 21:05:17 +00:00
|
|
|
if (state.players.players.length) {
|
|
|
|
localStorage.setItem(
|
|
|
|
"players",
|
|
|
|
JSON.stringify(
|
|
|
|
state.players.players.map(player => ({
|
|
|
|
...player,
|
|
|
|
// simplify the stored data
|
2020-05-04 21:05:36 +00:00
|
|
|
role: player.role.id || {}
|
2020-05-03 21:05:17 +00:00
|
|
|
}))
|
|
|
|
)
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
localStorage.removeItem("players");
|
|
|
|
}
|
|
|
|
break;
|
2020-05-02 19:46:51 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|