From 1c9616c5735363889e15b69873adaaab1722d419 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Wed, 16 May 2018 23:33:39 -0500 Subject: [PATCH] Fixes issue where save tag is called twice because of blur + enter. Make enter blur instead, calls it only once. Calling it twice results in issue where dummy note is deleted, creating invalid interface state --- app/assets/javascripts/app/controllers/home.js | 4 ++-- app/assets/javascripts/app/controllers/tags.js | 10 ++++++---- app/assets/templates/tags.html.haml | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/app/controllers/home.js b/app/assets/javascripts/app/controllers/home.js index f3a1e8253..f301f3a8f 100644 --- a/app/assets/javascripts/app/controllers/home.js +++ b/app/assets/javascripts/app/controllers/home.js @@ -144,11 +144,11 @@ angular.module('app') } $scope.tagsSelectionMade = function(tag) { - $scope.selectedTag = tag; - if($scope.selectedNote && $scope.selectedNote.dummy) { modelManager.removeItemLocally($scope.selectedNote); } + + $scope.selectedTag = tag; } $scope.tagsAddNew = function(tag) { diff --git a/app/assets/javascripts/app/controllers/tags.js b/app/assets/javascripts/app/controllers/tags.js index 1b3e5eedb..21a430b45 100644 --- a/app/assets/javascripts/app/controllers/tags.js +++ b/app/assets/javascripts/app/controllers/tags.js @@ -129,10 +129,12 @@ angular.module('app') return; } - this.save()(tag, function(savedTag){ - this.selectTag(tag); - this.newTag = null; - }.bind(this)); + this.save()(tag, (savedTag) => { + $timeout(() => { + this.selectTag(tag); + this.newTag = null; + }) + }); } function inputElementForTag(tag) { diff --git a/app/assets/templates/tags.html.haml b/app/assets/templates/tags.html.haml index 8bb32cced..e40505d20 100644 --- a/app/assets/templates/tags.html.haml +++ b/app/assets/templates/tags.html.haml @@ -18,7 +18,7 @@ .tag{"ng-repeat" => "tag in ctrl.tags track by tag.uuid", "ng-click" => "ctrl.selectTag(tag)", "ng-class" => "{'selected' : ctrl.selectedTag == tag}"} .info %input.title{"ng-attr-id" => "tag-{{tag.uuid}}", "ng-click" => "ctrl.selectTag(tag)", "ng-model" => "tag.title", - "ng-keyup" => "$event.keyCode == 13 && ctrl.saveTag($event, tag)", "sn-autofocus" => "true", "should-focus" => "ctrl.newTag || ctrl.editingTag == tag", + "ng-keyup" => "$event.keyCode == 13 && $event.target.blur()", "sn-autofocus" => "true", "should-focus" => "ctrl.newTag || ctrl.editingTag == tag", "ng-change" => "ctrl.tagTitleDidChange(tag)", "ng-blur" => "ctrl.saveTag($event, tag)", "spellcheck" => "false"} .count {{ctrl.noteCount(tag)}}