From 2085d71eb15acfb038f1b2cd22e05891d785909e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mikl=C3=B3s=20T=C3=B3th?= <tothmiklostibor@gmail.com>
Date: Fri, 10 Jun 2022 15:03:40 +0200
Subject: [PATCH] Edit comment instead of adding a new one

---
 src/jsMain/kotlin/pekstuff/PekNote.kt   | 23 +++++++++++++++++------
 src/jsMain/kotlin/processing/Process.kt |  2 +-
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/jsMain/kotlin/pekstuff/PekNote.kt b/src/jsMain/kotlin/pekstuff/PekNote.kt
index 86da658..f45e64e 100644
--- a/src/jsMain/kotlin/pekstuff/PekNote.kt
+++ b/src/jsMain/kotlin/pekstuff/PekNote.kt
@@ -2,6 +2,7 @@ package pekstuff
 
 import kotlinx.browser.document
 import kotlinx.coroutines.delay
+import org.w3c.dom.HTMLAnchorElement
 import org.w3c.dom.HTMLInputElement
 import org.w3c.dom.HTMLTextAreaElement
 
@@ -9,14 +10,24 @@ object PekNote {
     val noteNameCnt get() = document.querySelector("#comment-container > div.uk-padding.uk-text-center")
     val noteName get() = noteNameCnt?.textContent
 
+    val editBtn get() =
+        document.querySelectorAll("#comment-container > article.uk-comment > header.uk-comment-header > div.uk-comment-meta > a")
+            .toList().lastOrNull() as? HTMLAnchorElement
     val noteCnt get() = document.getElementById("comment-textarea") as? HTMLTextAreaElement
-    val btn get() = document.querySelector("#new_point_detail_comment > article > div.uk-clearfix > div.uk-float-right > input.uk-button") as? HTMLInputElement
-    var note
-        get() = noteCnt!!.value
-        set(value) {
-            noteCnt!!.value = value
-            btn!!.click()
+    val btn get() = document.querySelector("#comment-container > div > form.edit_point_detail_comment > article.uk-comment > div.uk-clearfix > div.uk-float-right > input.uk-button") as? HTMLInputElement
+    fun getNote() = noteCnt!!.value
+    suspend fun setNote(value: String) {
+        val edit = editBtn
+        if (edit != null) {
+            edit.click()
+            delay(1000)
         }
+        if (noteCnt!!.value == value) {
+            return
+        }
+        noteCnt!!.value = value
+        btn!!.click()
+    }
 
     suspend fun waitUntilLoaded(person: String, principle: String) {
         val expected = "$person - $principle"
diff --git a/src/jsMain/kotlin/processing/Process.kt b/src/jsMain/kotlin/processing/Process.kt
index 616f344..6313085 100644
--- a/src/jsMain/kotlin/processing/Process.kt
+++ b/src/jsMain/kotlin/processing/Process.kt
@@ -42,7 +42,7 @@ suspend fun DataSource.process(
             PekDelay()
             if (this is NoteDataSource) {
                 PekNote.waitUntilLoaded(pekPerson, pekPrinciple)
-                PekNote.note = getNote(person, principle)
+                PekNote.setNote(getNote(person, principle))
             }
 
             progress(calcProgress(i, j, people.size, principles.size))
-- 
GitLab