From 6cd5590a15bcf19fbf9263a820bb9682a392d0bc Mon Sep 17 00:00:00 2001
From: Becky Siegel <beckysiegel@google.com>
Date: Mon, 13 Mar 2017 11:42:42 -0700
Subject: [PATCH] Fix local storage with PARENT revision

Previously, if a PARENT revision was getting compared to a patchset,
the local storage key would be the same for both, and there were issues
if a user was trying to write drafts on the same line on either side.

This addresses the issue by storing 'PARENT' as the patch number in the
local storage key, so that each key is unique.

Bug: Issue 5412
Change-Id: Ia8b2f0abe1d24a3849628fe335c931f07bcaff52
---
 .../gr-diff-comment-thread/gr-diff-comment-thread.html |  1 +
 .../elements/diff/gr-diff-comment/gr-diff-comment.js   | 10 +++++++---
 .../diff/gr-diff-comment/gr-diff-comment_test.html     |  8 ++++++++
 3 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.html b/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.html
index c446cbd61b..a86d957322 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment-thread/gr-diff-comment-thread.html
@@ -59,6 +59,7 @@ limitations under the License.
             draft="[[comment.__draft]]"
             show-actions="[[_showActions]]"
             comment-side="[[comment.__commentSide]]"
+            side="[[side]]"
             project-config="[[projectConfig]]"
             on-create-fix-comment="_handleCommentFix"
             on-comment-discard="_handleCommentDiscard"></gr-diff-comment>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
index aff29162cf..43d7c3e7ac 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
@@ -170,7 +170,7 @@
     _eraseDraftComment: function() {
       this.$.storage.eraseDraftComment({
         changeNum: this.changeNum,
-        patchNum: this.patchNum,
+        patchNum: this._getPatchNum(),
         path: this.comment.path,
         line: this.comment.line,
         range: this.comment.range,
@@ -288,7 +288,7 @@
 
         var commentLocation = {
           changeNum: this.changeNum,
-          patchNum: this.patchNum,
+          patchNum: this._getPatchNum(),
           path: this.comment.path,
           line: this.comment.line,
           range: this.comment.range,
@@ -410,6 +410,10 @@
           draft);
     },
 
+    _getPatchNum: function() {
+      return this.side === 'PARENT' ? 'PARENT' : this.patchNum;
+    },
+
     _loadLocalDraft: function(changeNum, patchNum, comment) {
       // Only apply local drafts to comments that haven't been saved
       // remotely, and haven't been given a default message already.
@@ -423,7 +427,7 @@
 
       var draft = this.$.storage.getDraftComment({
         changeNum: changeNum,
-        patchNum: patchNum,
+        patchNum: this._getPatchNum(),
         path: comment.path,
         line: comment.line,
         range: comment.range,
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
index 64be952767..2881fc181e 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
@@ -152,6 +152,14 @@ limitations under the License.
       });
     });
 
+    test('_getPatchNum', function() {
+      element.side = 'PARENT';
+      element.patchNum = 1;
+      assert.equal(element._getPatchNum(), 'PARENT');
+      element.side = 'REVISION';
+      assert.equal(element._getPatchNum(), 1);
+    });
+
     test('comment expand and collapse', function() {
       element.collapsed = true;
       assert.isFalse(isVisible(element.$$('gr-formatted-text')),