diff --git a/app/assets/javascripts/app/services/directives/views/accountMenu.js b/app/assets/javascripts/app/services/directives/views/accountMenu.js index 4b2046284..3d52a9af8 100644 --- a/app/assets/javascripts/app/services/directives/views/accountMenu.js +++ b/app/assets/javascripts/app/services/directives/views/accountMenu.js @@ -6,10 +6,10 @@ class AccountMenu { this.scope = {}; } - controller($scope, authManager, modelManager, syncManager, $timeout) { + controller($scope, authManager, modelManager, syncManager, dbManager, $timeout) { 'ngInject'; - $scope.formData = {url: syncManager.serverURL}; + $scope.formData = {mergeLocal: true, url: syncManager.serverURL}; $scope.user = authManager.user; $scope.server = syncManager.serverURL; @@ -113,10 +113,32 @@ class AccountMenu { }) } + $scope.localNotesCount = function() { + return modelManager.filteredNotes.length; + } + + $scope.mergeLocalChanged = function() { + if(!$scope.formData.mergeLocal) { + if(!confirm("Unchecking this option means any of the notes you have written while you were signed out will be deleted. Are you sure you want to discard these notes?")) { + $scope.formData.mergeLocal = true; + } + } + } + $scope.onAuthSuccess = function() { - syncManager.markAllItemsDirtyAndSaveOffline(function(){ + var block = function() { window.location.reload(); - }) + } + + if($scope.formData.mergeLocal) { + syncManager.markAllItemsDirtyAndSaveOffline(function(){ + block(); + }) + } else { + dbManager.clearAllItems(function(){ + block(); + }) + } } $scope.destroyLocalData = function() { diff --git a/app/assets/templates/frontend/directives/account-menu.html.haml b/app/assets/templates/frontend/directives/account-menu.html.haml index 6927bff0f..3c93889a5 100644 --- a/app/assets/templates/frontend/directives/account-menu.html.haml +++ b/app/assets/templates/frontend/directives/account-menu.html.haml @@ -8,6 +8,10 @@ %input.form-control{:name => 'server', :placeholder => 'Server URL', :required => true, :type => 'text', 'ng-model' => 'formData.url'} %input.form-control{:autofocus => 'autofocus', :name => 'email', :placeholder => 'Email', :required => true, :type => 'email', 'ng-model' => 'formData.email'} %input.form-control{:placeholder => 'Password', :name => 'password', :required => true, :type => 'password', 'ng-model' => 'formData.user_password'} + .checkbox{"ng-if" => "localNotesCount() > 0"} + %label + %input{"type" => "checkbox", "ng-model" => "formData.mergeLocal", "ng-bind" => "true", "ng-change" => "mergeLocalChanged()"} + Merge local notes ({{localNotesCount()}} notes) %div{"ng-if" => "!formData.status"} %button.btn.dark-button.half-button{"ng-click" => "loginSubmitPressed()", "data-style" => "expand-right", "data-size" => "s", "state" => "buttonState"} @@ -94,4 +98,4 @@ .spinner.mt-10{"ng-if" => "importData.loading"} - %a.block.mt-25.red{"ng-click" => "destroyLocalData()"} Destroy all local data + %a.block.mt-25.red{"ng-click" => "destroyLocalData()"} {{ user ? "Sign out and clear local data" : "Clear all local data" }}