From 4df5eacd0339a22419c01f5ce54ddb52ee39a7d4 Mon Sep 17 00:00:00 2001 From: John Cleaver Date: Mon, 11 Mar 2019 21:46:12 -0400 Subject: [PATCH] Import V1 Data (#117) * Add method to get open bundles * Add method to load V1 data * Convert v1 data on load --- src/App.vue | 6 ++++++ src/store/index.js | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/App.vue b/src/App.vue index 1e16639..00721fc 100644 --- a/src/App.vue +++ b/src/App.vue @@ -17,6 +17,12 @@ export default { }, created () { this.$store.commit('initState') + var v1data = localStorage.getItem('user_data') + if (v1data !== null && v1data !== '') { + this.$store.dispatch('LoadV1State', JSON.parse(atob(v1data))) + localStorage.removeItem('user_data') + localStorage.setItem('v1data', v1data) + } } } diff --git a/src/store/index.js b/src/store/index.js index aec994f..1d956f0 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -73,6 +73,9 @@ export default new Vuex.Store({ }, IsRoomComplete: (state, getters) => (room) => { return getters.GetRoomItemsRedeemed(room) >= room.items_required + }, + GetOpenBundleItems: (state, getters) => (bundleId, itemId) => { + return (getters.GetBundleById(bundleId)).items.filter(bundleItem => bundleItem.item.id === itemId && !getters.IsBundleItemRedeemed(bundleItem)) } }, mutations: { @@ -113,6 +116,30 @@ export default new Vuex.Store({ resetData (state) { state.StoredItems = {} } + }, + actions: { + LoadV1State (context, v1state) { + for (var i = 0; i < v1state.length; i++) { + for (var j = 0; j < v1state[i].length; j++) { + var itemId = v1state[i][j].item + // Patch for duplicate oak + if (itemId === 116) { + itemId = 24 + } + + // Patch for parsnip + if (itemId === 26 && i === 6) { + itemId = 27 + } + var bundleItems = context.getters.GetOpenBundleItems(i, itemId) + if (bundleItems.length > 0) { + context.commit('RedeemItem', bundleItems[0]) + } else { + console.log(`Tried to redeem bundle ${i} item ${itemId}, but no open bundle items were found`) + } + } + } + } } })