diff --git a/src/modules/migrate/templates/migrate.html b/src/modules/migrate/templates/migrate.html index b35a520d75..d04c299eb4 100644 --- a/src/modules/migrate/templates/migrate.html +++ b/src/modules/migrate/templates/migrate.html @@ -60,6 +60,8 @@
+ + @@ -122,4 +124,4 @@ - \ No newline at end of file + diff --git a/src/modules/utils/services/Storage.js b/src/modules/utils/services/Storage.js index 3bfab08cb2..2c5eb7f26d 100644 --- a/src/modules/utils/services/Storage.js +++ b/src/modules/utils/services/Storage.js @@ -27,7 +27,8 @@ return saveUsersWithUniqueName(storage) .then(data => addNewGateway(data, WavesApp.defaultAssets.BNT)); }, - '1.4.0': storage => migrateCommonSettings(storage) + '1.4.0': storage => migrateCommonSettings(storage), + '1.4.6': storage => fixMigrateCommonSettings(storage) }; function newTerms(storage) { @@ -93,6 +94,84 @@ }); } + function fixSettings(user) { + const newDefaultSettings = defaultSettings.create(); + const pinnedList = newDefaultSettings.get('pinnedAssetIdList'); + + if (!user || typeof user.settings !== 'object') { + return {}; + } + + const settings = { ...user.settings }; + + if (settings.pinnedAssetIdList && settings.pinnedAssetIdList.length) { + const list = [ ...settings.pinnedAssetIdList ]; + + for (let assetIndex = list.length; assetIndex--; ) { + if (list[assetIndex] == null) { + list[assetIndex] = pinnedList[assetIndex]; + } + } + + settings.pinnedAssetIdList = list; + } + + if (settings.dex && settings.dex.watchlist && settings.dex.watchlist.favourite) { + const dexSettings = { ... settings.dex }; + dexSettings.watchlist = { ...dexSettings.watchlist }; + + if (!Array.isArray(dexSettings.watchlist.favourite)) { + dexSettings.watchlist.favourite = []; + } + + const favourite = dexSettings.watchlist.favourite + .map(pair => { + if (!pair || pair.length === 0) { + return null; + } + + if (!pair[0] || !pair[1]) { + return null; + } + + return pair; + }) + .filter(Boolean); + + dexSettings.watchlist.favourite = favourite; + settings.dex = dexSettings; + } + + return settings; + } + + function fixMigrateCommonSettings(storage) { + return Promise.all([storage.load('userList'), storage.load('multiAccountUsers')]).then(([userList, multiAccountUsers]) => { + try { + if (userList && userList.length) { + userList = userList.map(user => ({ ...user, settings: fixSettings(user) })); + } + + if (multiAccountUsers && typeof multiAccountUsers === 'object') { + const users = Object.entries(multiAccountUsers); + multiAccountUsers = users.reduce((acc, [key, user]) => { + user = { ...user, settings: fixSettings(user) }; + acc[key] = user; + return acc; + }, Object.create(null)); + } + } catch (e) { + + } + + return Promise.all([ + storage.save('multiAccountUsers', multiAccountUsers), + storage.save('userList', userList) + ]); + + }); + } + function migrateCommonSettings(storage) { return storage.load('userList').then(userList => { const commonSettings = defaultSettings.create();