From ebed0c9be6463846a177f1986056a94a6ba22d2c Mon Sep 17 00:00:00 2001 From: Johannes Millan Date: Fri, 24 Nov 2017 18:56:39 +0100 Subject: [PATCH] fix(appStorage): messing up with backlog data and import of settings --- .../main/global-services/app-storage-s.js | 39 +++++++++++++++++-- .../backup-settings/backup-settings-d.js | 9 +---- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/app-src/scripts/main/global-services/app-storage-s.js b/app-src/scripts/main/global-services/app-storage-s.js index a058e718e9b..537719db24e 100644 --- a/app-src/scripts/main/global-services/app-storage-s.js +++ b/app-src/scripts/main/global-services/app-storage-s.js @@ -15,7 +15,7 @@ /* @ngInject */ constructor(LS_DEFAULTS, SAVE_APP_STORAGE_POLL_INTERVAL, TMP_FIELDS, $interval, $rootScope, ON_DEMAND_LS_FIELDS, ON_DEMAND_LS_FIELDS_FOR_PROJECT, IS_ELECTRON) { this.PROJECTS_KEY = 'projects'; - this.BACKLOG_TASKS_KEY = 'doneBacklogTasks'; + this.DONE_BACKLOG_TASKS_KEY = 'doneBacklogTasks'; this.LS_DEFAULTS = LS_DEFAULTS; this.TMP_FIELDS = TMP_FIELDS; this.SAVE_APP_STORAGE_POLL_INTERVAL = SAVE_APP_STORAGE_POLL_INTERVAL; @@ -72,7 +72,7 @@ // also add projects data data[this.PROJECTS_KEY] = this.getProjects(); // also add backlog tasks - data[this.BACKLOG_TASKS_KEY] = this.getDoneBacklogTasks(); + data[this.DONE_BACKLOG_TASKS_KEY] = this.getDoneBacklogTasks(); fs.writeFile(path, JSON.stringify(data), function(err) { if (err) { @@ -104,12 +104,32 @@ } getDoneBacklogTasks() { - return this.getLsItem(this.BACKLOG_TASKS_KEY); + const projects = this.getProjects(); + + if (projects && this.$rootScope.r.currentProject && this.$rootScope.r.currentProject.id) { + const currentProject = _.find(projects, ['id', this.$rootScope.r.currentProject.id]); + console.log(currentProject.data); + + return currentProject.data[this.DONE_BACKLOG_TASKS_KEY]; + } else { + return this.getLsItem(this.DONE_BACKLOG_TASKS_KEY); + } } saveDoneBacklogTasks(doneBacklogTasks) { if (Array.isArray(doneBacklogTasks)) { - this.saveLsItem(doneBacklogTasks, this.BACKLOG_TASKS_KEY); + const projects = this.getProjects(); + + // we also need to save the backlog tasks to the current project + if (projects && this.$rootScope.r.currentProject && this.$rootScope.r.currentProject.id) { + console.log(projects, this.$rootScope.r.currentProject.id); + + const currentProject = _.find(projects, ['id', this.$rootScope.r.currentProject.id]); + currentProject.data[this.DONE_BACKLOG_TASKS_KEY] = doneBacklogTasks; + this.saveProjects(projects); + } else { + this.saveLsItem(doneBacklogTasks, this.DONE_BACKLOG_TASKS_KEY); + } } } @@ -120,6 +140,17 @@ } } + importData(data) { + _.forOwn(data, (val, key) => { + this.$rootScope.r[key] = val; + }); + + // update to ls (NOTE: order is important!) + this.saveToLs(); + this.saveProjects(data[this.PROJECTS_KEY]); + this.saveDoneBacklogTasks(data[this.DONE_BACKLOG_TASKS_KEY]); + } + getProjects() { return this.getLsItem(this.PROJECTS_KEY); } diff --git a/app-src/scripts/settings/backup-settings/backup-settings-d.js b/app-src/scripts/settings/backup-settings/backup-settings-d.js index a98f15e65ae..4fd5550b24e 100644 --- a/app-src/scripts/settings/backup-settings/backup-settings-d.js +++ b/app-src/scripts/settings/backup-settings/backup-settings-d.js @@ -27,19 +27,14 @@ } /* @ngInject */ - function BackupSettingsCtrl($rootScope, AppStorage, IS_ELECTRON) { + function BackupSettingsCtrl(AppStorage, IS_ELECTRON) { let vm = this; vm.IS_ELECTRON = IS_ELECTRON; // import/export stuff vm.importSettings = (uploadSettingsTextarea) => { let settings = JSON.parse(uploadSettingsTextarea); - - _.forOwn(settings, (val, key) => { - $rootScope.r[key] = val; - }); - - AppStorage.saveToLs(); + AppStorage.importData(settings); // reload page completely afterwards window.location.reload(true);