mirror of
https://github.com/kihashi/stardew_community_checklist.git
synced 2025-10-19 08:03:17 +00:00
Add support for saving data to local storage
This commit is contained in:
parent
784050fdde
commit
542e4f7bf1
@ -22,7 +22,8 @@
|
|||||||
"sass-loader": "^6.0.6",
|
"sass-loader": "^6.0.6",
|
||||||
"vue": "^2.5.2",
|
"vue": "^2.5.2",
|
||||||
"vue-router": "^3.0.1",
|
"vue-router": "^3.0.1",
|
||||||
"vuex": "^3.0.1"
|
"vuex": "^3.0.1",
|
||||||
|
"vuex-persistedstate": "^2.5.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^7.1.2",
|
"autoprefixer": "^7.1.2",
|
||||||
|
|||||||
@ -14,6 +14,9 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
HeaderBar,
|
HeaderBar,
|
||||||
AppFooter
|
AppFooter
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.$store.commit('initState')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import Vuex from 'vuex'
|
import Vuex from 'vuex'
|
||||||
|
import createPersistedState from 'vuex-persistedstate'
|
||||||
|
|
||||||
import SkillJson from '@/assets/game_data/skills.json'
|
import SkillJson from '@/assets/game_data/skills.json'
|
||||||
import SeasonJson from '@/assets/game_data/seasons.json'
|
import SeasonJson from '@/assets/game_data/seasons.json'
|
||||||
@ -9,18 +10,24 @@ import ItemJson from '@/assets/game_data/items.json'
|
|||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
|
|
||||||
var state = {
|
var prestate = {
|
||||||
StoredItems: {},
|
|
||||||
seasons: loadSeasons(),
|
seasons: loadSeasons(),
|
||||||
skills: loadSkills(),
|
skills: loadSkills(),
|
||||||
rooms: loadRooms()
|
rooms: loadRooms()
|
||||||
}
|
}
|
||||||
|
|
||||||
state.bundles = loadBundles(state.rooms)
|
prestate.bundles = loadBundles(prestate.rooms)
|
||||||
state.items = loadItems(state.bundles, state.skills, state.seasons)
|
prestate.items = loadItems(prestate.bundles, prestate.skills, prestate.seasons)
|
||||||
|
|
||||||
export default new Vuex.Store({
|
export default new Vuex.Store({
|
||||||
state: state,
|
state: {
|
||||||
|
StoredItems: {}
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
createPersistedState({
|
||||||
|
reducer: state => ({ StoredItems: state.StoredItems })
|
||||||
|
})
|
||||||
|
],
|
||||||
getters: {
|
getters: {
|
||||||
IsBundleItemRedeemed: (state) => (BundleItem) => {
|
IsBundleItemRedeemed: (state) => (BundleItem) => {
|
||||||
return state.StoredItems.hasOwnProperty(BundleItem.id)
|
return state.StoredItems.hasOwnProperty(BundleItem.id)
|
||||||
@ -38,6 +45,13 @@ export default new Vuex.Store({
|
|||||||
},
|
},
|
||||||
UndoRedeemItem (state, BundleItem) {
|
UndoRedeemItem (state, BundleItem) {
|
||||||
Vue.delete(state.StoredItems, BundleItem.id)
|
Vue.delete(state.StoredItems, BundleItem.id)
|
||||||
|
},
|
||||||
|
initState (state) {
|
||||||
|
Vue.set(state, 'seasons', prestate.seasons)
|
||||||
|
Vue.set(state, 'skills', prestate.skills)
|
||||||
|
Vue.set(state, 'rooms', prestate.rooms)
|
||||||
|
Vue.set(state, 'bundles', prestate.bundles)
|
||||||
|
Vue.set(state, 'items', prestate.items)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
15
yarn.lock
15
yarn.lock
@ -1908,6 +1908,10 @@ deep-is@~0.1.3:
|
|||||||
version "0.1.3"
|
version "0.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||||
|
|
||||||
|
deepmerge@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.0.tgz#511a54fff405fc346f0240bb270a3e9533a31102"
|
||||||
|
|
||||||
define-properties@^1.1.2:
|
define-properties@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
|
||||||
@ -5759,6 +5763,10 @@ shellwords@^0.1.1:
|
|||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
|
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
|
||||||
|
|
||||||
|
shvl@^1.3.0:
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/shvl/-/shvl-1.3.1.tgz#6c20a17b4a20b08e9f8cab60c50a92229fcc176e"
|
||||||
|
|
||||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||||
@ -6550,6 +6558,13 @@ vue@^2.5.2:
|
|||||||
version "2.5.13"
|
version "2.5.13"
|
||||||
resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.13.tgz#95bd31e20efcf7a7f39239c9aa6787ce8cf578e1"
|
resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.13.tgz#95bd31e20efcf7a7f39239c9aa6787ce8cf578e1"
|
||||||
|
|
||||||
|
vuex-persistedstate@^2.5.4:
|
||||||
|
version "2.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/vuex-persistedstate/-/vuex-persistedstate-2.5.4.tgz#a19710ad7f9a08cea4e65fc585924d9fdac7384a"
|
||||||
|
dependencies:
|
||||||
|
deepmerge "^2.1.0"
|
||||||
|
shvl "^1.3.0"
|
||||||
|
|
||||||
vuex@^3.0.1:
|
vuex@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2"
|
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user