From aa9c759853356607086c643a3f22a0676f6af4c6 Mon Sep 17 00:00:00 2001 From: HesterG Date: Fri, 24 Feb 2023 16:56:57 +0800 Subject: [PATCH 01/12] fix firdt quote reply blank --- web_src/js/features/repo-issue.js | 10 +++++++++- web_src/js/features/repo-legacy.js | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 4fc8bb5e62d90..944c167d2fe59 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -453,7 +453,7 @@ export function initRepoPullRequestReview() { $(`#show-outdated-${id}`).removeClass('gt-hidden'); }); - $(document).on('click', 'button.comment-form-reply', async function (e) { + $(document).on('click', 'button.comment-form-reply', async function (e, content='') { e.preventDefault(); hideElem($(this)); @@ -464,9 +464,17 @@ export function initRepoPullRequestReview() { if (!easyMDE) { await attachTribute($textarea.get(), {mentions: true, emoji: true}); easyMDE = await createCommentEasyMDE($textarea); + if (content != ''){ + if (easyMDE.value() !== '') { + easyMDE.value(`${easyMDE.value()}\n\n${content}`); + } else { + easyMDE.value(`${content}`); + } + } } $textarea.focus(); easyMDE.codemirror.focus(); + easyMDE.codemirror.setCursor(easyMDE.codemirror.lineCount(), 0); assignMenuAttributes(form.find('.menu')); }); diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index a9229c0d1e6f5..6b185034672a0 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -614,7 +614,7 @@ function initRepoIssueCommentEdit() { let easyMDE; if ($(this).hasClass('quote-reply-diff')) { const $parent = $(this).closest('.comment-code-cloud'); - $parent.find('button.comment-form-reply').trigger('click'); + $parent.find('button.comment-form-reply').trigger('click', [content]); easyMDE = getAttachedEasyMDE($parent.find('[name="content"]')); } else { // for normal issue/comment page From 6ab7979d2d75b33dcc8f4706a95764da3f17934b Mon Sep 17 00:00:00 2001 From: HesterG Date: Fri, 24 Feb 2023 20:58:13 +0800 Subject: [PATCH 02/12] remove useless logic --- web_src/js/features/repo-issue.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 944c167d2fe59..9c21f1bf256b1 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -453,7 +453,7 @@ export function initRepoPullRequestReview() { $(`#show-outdated-${id}`).removeClass('gt-hidden'); }); - $(document).on('click', 'button.comment-form-reply', async function (e, content='') { + $(document).on('click', 'button.comment-form-reply', async function (e, content) { e.preventDefault(); hideElem($(this)); @@ -464,12 +464,10 @@ export function initRepoPullRequestReview() { if (!easyMDE) { await attachTribute($textarea.get(), {mentions: true, emoji: true}); easyMDE = await createCommentEasyMDE($textarea); - if (content != ''){ - if (easyMDE.value() !== '') { - easyMDE.value(`${easyMDE.value()}\n\n${content}`); - } else { - easyMDE.value(`${content}`); - } + if (easyMDE.value() !== '') { + easyMDE.value(`${easyMDE.value()}\n\n${content}`); + } else { + easyMDE.value(`${content}`); } } $textarea.focus(); From 45a14cf6a0585ecc2071b1e9b3bd705ff05d12e8 Mon Sep 17 00:00:00 2001 From: HesterG Date: Fri, 24 Feb 2023 21:07:00 +0800 Subject: [PATCH 03/12] add check for null for the case of directly reply or comment --- web_src/js/features/repo-issue.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 9c21f1bf256b1..2b3c5db4f9c8f 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -453,9 +453,8 @@ export function initRepoPullRequestReview() { $(`#show-outdated-${id}`).removeClass('gt-hidden'); }); - $(document).on('click', 'button.comment-form-reply', async function (e, content) { + $(document).on('click', 'button.comment-form-reply', async function (e, content=null) { e.preventDefault(); - hideElem($(this)); const form = $(this).closest('.comment-code-cloud').find('.comment-form'); form.removeClass('gt-hidden'); @@ -464,10 +463,13 @@ export function initRepoPullRequestReview() { if (!easyMDE) { await attachTribute($textarea.get(), {mentions: true, emoji: true}); easyMDE = await createCommentEasyMDE($textarea); - if (easyMDE.value() !== '') { - easyMDE.value(`${easyMDE.value()}\n\n${content}`); - } else { - easyMDE.value(`${content}`); + // The first time quote reply is clicked, content is not null + if (content != null) { + if (easyMDE.value() !== '') { + easyMDE.value(`${easyMDE.value()}\n\n${content}`); + } else { + easyMDE.value(`${content}`); + } } } $textarea.focus(); From 104e4c4634cddfbbc17e4cd933b262334b199487 Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 09:48:21 +0800 Subject: [PATCH 04/12] fix lint --- web_src/js/features/repo-issue.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 2b3c5db4f9c8f..f9e15a231c33b 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -453,7 +453,7 @@ export function initRepoPullRequestReview() { $(`#show-outdated-${id}`).removeClass('gt-hidden'); }); - $(document).on('click', 'button.comment-form-reply', async function (e, content=null) { + $(document).on('click', 'button.comment-form-reply', async function (e, content = null) { e.preventDefault(); hideElem($(this)); const form = $(this).closest('.comment-code-cloud').find('.comment-form'); @@ -464,7 +464,7 @@ export function initRepoPullRequestReview() { await attachTribute($textarea.get(), {mentions: true, emoji: true}); easyMDE = await createCommentEasyMDE($textarea); // The first time quote reply is clicked, content is not null - if (content != null) { + if (content !== null) { if (easyMDE.value() !== '') { easyMDE.value(`${easyMDE.value()}\n\n${content}`); } else { From cae207c833e7738f5eba89f8f52abd9d6eb61267 Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 13:03:46 +0800 Subject: [PATCH 05/12] use await for comment-form-reply --- web_src/js/features/repo-issue.js | 10 +--------- web_src/js/features/repo-legacy.js | 4 ++-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index f9e15a231c33b..7026b201d5edf 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -453,7 +453,7 @@ export function initRepoPullRequestReview() { $(`#show-outdated-${id}`).removeClass('gt-hidden'); }); - $(document).on('click', 'button.comment-form-reply', async function (e, content = null) { + $(document).on('click', 'button.comment-form-reply', async function (e) { e.preventDefault(); hideElem($(this)); const form = $(this).closest('.comment-code-cloud').find('.comment-form'); @@ -463,14 +463,6 @@ export function initRepoPullRequestReview() { if (!easyMDE) { await attachTribute($textarea.get(), {mentions: true, emoji: true}); easyMDE = await createCommentEasyMDE($textarea); - // The first time quote reply is clicked, content is not null - if (content !== null) { - if (easyMDE.value() !== '') { - easyMDE.value(`${easyMDE.value()}\n\n${content}`); - } else { - easyMDE.value(`${content}`); - } - } } $textarea.focus(); easyMDE.codemirror.focus(); diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 6b185034672a0..656b7a973ab9a 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -607,14 +607,14 @@ function initRepoIssueCommentEdit() { $(document).on('click', '.edit-content', onEditContent); // Quote reply - $(document).on('click', '.quote-reply', function (event) { + $(document).on('click', '.quote-reply', async function (event) { const target = $(this).data('target'); const quote = $(`#${target}`).text().replace(/\n/g, '\n> '); const content = `> ${quote}\n\n`; let easyMDE; if ($(this).hasClass('quote-reply-diff')) { const $parent = $(this).closest('.comment-code-cloud'); - $parent.find('button.comment-form-reply').trigger('click', [content]); + await $.when($parent.find('button.comment-form-reply').trigger('click')) easyMDE = getAttachedEasyMDE($parent.find('[name="content"]')); } else { // for normal issue/comment page From c185185d12a4df82f94b321267616386dd961bd9 Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 13:04:56 +0800 Subject: [PATCH 06/12] add back blank line --- web_src/js/features/repo-issue.js | 1 + web_src/js/features/repo-legacy.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 7026b201d5edf..f4f6156752643 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -455,6 +455,7 @@ export function initRepoPullRequestReview() { $(document).on('click', 'button.comment-form-reply', async function (e) { e.preventDefault(); + hideElem($(this)); const form = $(this).closest('.comment-code-cloud').find('.comment-form'); form.removeClass('gt-hidden'); diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 656b7a973ab9a..052a362861206 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -614,7 +614,7 @@ function initRepoIssueCommentEdit() { let easyMDE; if ($(this).hasClass('quote-reply-diff')) { const $parent = $(this).closest('.comment-code-cloud'); - await $.when($parent.find('button.comment-form-reply').trigger('click')) + await $.when($parent.find('button.comment-form-reply').trigger('click')); easyMDE = getAttachedEasyMDE($parent.find('[name="content"]')); } else { // for normal issue/comment page From a1ce432ec2b3d2c6fefd256c3e8a22837d2bbde5 Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 13:05:27 +0800 Subject: [PATCH 07/12] remove space --- web_src/js/features/repo-issue.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index f4f6156752643..545c887822a88 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -455,7 +455,7 @@ export function initRepoPullRequestReview() { $(document).on('click', 'button.comment-form-reply', async function (e) { e.preventDefault(); - + hideElem($(this)); const form = $(this).closest('.comment-code-cloud').find('.comment-form'); form.removeClass('gt-hidden'); From a0369f5c704d8e45e0c6901d3ece0b8791e55972 Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 13:06:47 +0800 Subject: [PATCH 08/12] remove unnecessary change --- web_src/js/features/repo-issue.js | 1 - 1 file changed, 1 deletion(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 545c887822a88..4fc8bb5e62d90 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -467,7 +467,6 @@ export function initRepoPullRequestReview() { } $textarea.focus(); easyMDE.codemirror.focus(); - easyMDE.codemirror.setCursor(easyMDE.codemirror.lineCount(), 0); assignMenuAttributes(form.find('.menu')); }); From 0ae0a28567416b5a897f128b8ddb2049c2d8239d Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 18:38:11 +0800 Subject: [PATCH 09/12] save for later tests --- web_src/js/features/repo-issue.js | 27 ++++++++++++++++----------- web_src/js/features/repo-legacy.js | 6 +++--- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 4fc8bb5e62d90..1e97afac82a47 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -418,6 +418,21 @@ function assignMenuAttributes(menu) { return id; } +export async function generateMDE(_this) { + const form = _this.closest('.comment-code-cloud').find('.comment-form'); + form.removeClass('gt-hidden'); + const $textarea = form.find('textarea'); + let easyMDE = getAttachedEasyMDE($textarea); + if (!easyMDE) { + await attachTribute($textarea.get(), {mentions: true, emoji: true}); + easyMDE = await createCommentEasyMDE($textarea); + } + $textarea.focus(); + easyMDE.codemirror.focus(); + assignMenuAttributes(form.find('.menu')); + return easyMDE; +} + export function initRepoPullRequestReview() { if (window.location.hash && window.location.hash.startsWith('#issuecomment-')) { const commentDiv = $(window.location.hash); @@ -457,17 +472,7 @@ export function initRepoPullRequestReview() { e.preventDefault(); hideElem($(this)); - const form = $(this).closest('.comment-code-cloud').find('.comment-form'); - form.removeClass('gt-hidden'); - const $textarea = form.find('textarea'); - let easyMDE = getAttachedEasyMDE($textarea); - if (!easyMDE) { - await attachTribute($textarea.get(), {mentions: true, emoji: true}); - easyMDE = await createCommentEasyMDE($textarea); - } - $textarea.focus(); - easyMDE.codemirror.focus(); - assignMenuAttributes(form.find('.menu')); + await generateMDE($(this)); }); const $reviewBox = $('.review-box-panel'); diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 052a362861206..a18c8c485b0f4 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -6,7 +6,7 @@ import { initRepoIssueBranchSelect, initRepoIssueCodeCommentCancel, initRepoIssueCommentDelete, initRepoIssueComments, initRepoIssueDependencyDelete, initRepoIssueReferenceIssue, initRepoIssueStatusButton, initRepoIssueTitleEdit, initRepoIssueWipToggle, - initRepoPullRequestUpdate, updateIssuesMeta, + initRepoPullRequestUpdate, updateIssuesMeta, generateMDE } from './repo-issue.js'; import {initUnicodeEscapeButton} from './repo-unicode-escape.js'; import {svg} from '../svg.js'; @@ -614,8 +614,8 @@ function initRepoIssueCommentEdit() { let easyMDE; if ($(this).hasClass('quote-reply-diff')) { const $parent = $(this).closest('.comment-code-cloud'); - await $.when($parent.find('button.comment-form-reply').trigger('click')); - easyMDE = getAttachedEasyMDE($parent.find('[name="content"]')); + hideElem($parent.find('button.comment-form-reply')); + easyMDE = await generateMDE($(this)); } else { // for normal issue/comment page easyMDE = getAttachedEasyMDE($('#comment-form .edit_area')); From e6c95d4be6f4dbbb02212668c775c4e9703a05e4 Mon Sep 17 00:00:00 2001 From: HesterG Date: Mon, 27 Feb 2023 20:31:06 +0800 Subject: [PATCH 10/12] change function name and clean up --- web_src/js/features/repo-issue.js | 7 +++---- web_src/js/features/repo-legacy.js | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 1e97afac82a47..3836611445663 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -418,7 +418,8 @@ function assignMenuAttributes(menu) { return id; } -export async function generateMDE(_this) { +export async function handleReply(_this) { + hideElem(_this); const form = _this.closest('.comment-code-cloud').find('.comment-form'); form.removeClass('gt-hidden'); const $textarea = form.find('textarea'); @@ -470,9 +471,7 @@ export function initRepoPullRequestReview() { $(document).on('click', 'button.comment-form-reply', async function (e) { e.preventDefault(); - - hideElem($(this)); - await generateMDE($(this)); + await handleReply($(this)); }); const $reviewBox = $('.review-box-panel'); diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index a18c8c485b0f4..8b5eb80e49001 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -6,7 +6,7 @@ import { initRepoIssueBranchSelect, initRepoIssueCodeCommentCancel, initRepoIssueCommentDelete, initRepoIssueComments, initRepoIssueDependencyDelete, initRepoIssueReferenceIssue, initRepoIssueStatusButton, initRepoIssueTitleEdit, initRepoIssueWipToggle, - initRepoPullRequestUpdate, updateIssuesMeta, generateMDE + initRepoPullRequestUpdate, updateIssuesMeta, handleReply } from './repo-issue.js'; import {initUnicodeEscapeButton} from './repo-unicode-escape.js'; import {svg} from '../svg.js'; @@ -613,9 +613,8 @@ function initRepoIssueCommentEdit() { const content = `> ${quote}\n\n`; let easyMDE; if ($(this).hasClass('quote-reply-diff')) { - const $parent = $(this).closest('.comment-code-cloud'); - hideElem($parent.find('button.comment-form-reply')); - easyMDE = await generateMDE($(this)); + const $replyBtn = $(this).closest('.comment-code-cloud').find('button.comment-form-reply'); + easyMDE = await handleReply($replyBtn); } else { // for normal issue/comment page easyMDE = getAttachedEasyMDE($('#comment-form .edit_area')); From 653eb1733f0ab209a87057d23dc2f553cd33641d Mon Sep 17 00:00:00 2001 From: HesterG Date: Tue, 28 Feb 2023 11:56:54 +0800 Subject: [PATCH 11/12] rename param and move preventdefault and add empty onchange --- web_src/js/features/repo-issue.js | 8 ++++---- web_src/js/features/repo-legacy.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 3836611445663..cb76cfd98e16e 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -418,15 +418,15 @@ function assignMenuAttributes(menu) { return id; } -export async function handleReply(_this) { - hideElem(_this); - const form = _this.closest('.comment-code-cloud').find('.comment-form'); +export async function handleReply($el) { + hideElem($el); + const form = $el.closest('.comment-code-cloud').find('.comment-form'); form.removeClass('gt-hidden'); const $textarea = form.find('textarea'); let easyMDE = getAttachedEasyMDE($textarea); if (!easyMDE) { await attachTribute($textarea.get(), {mentions: true, emoji: true}); - easyMDE = await createCommentEasyMDE($textarea); + easyMDE = await createCommentEasyMDE($textarea, {'onChange': () => {}}); } $textarea.focus(); easyMDE.codemirror.focus(); diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 9527c76cbc809..174101c1d8584 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -614,6 +614,7 @@ function initRepoIssueCommentEdit() { // Quote reply $(document).on('click', '.quote-reply', async function (event) { + event.preventDefault(); const target = $(this).data('target'); const quote = $(`#${target}`).text().replace(/\n/g, '\n> '); const content = `> ${quote}\n\n`; @@ -636,6 +637,5 @@ function initRepoIssueCommentEdit() { easyMDE.codemirror.setCursor(easyMDE.codemirror.lineCount(), 0); }); } - event.preventDefault(); }); } From eda0e2b6955bce305f5db19ab80f53b5345d27b1 Mon Sep 17 00:00:00 2001 From: HesterG Date: Tue, 28 Feb 2023 12:12:57 +0800 Subject: [PATCH 12/12] change onchange function to optional in easymde --- web_src/js/features/comp/EasyMDE.js | 2 +- web_src/js/features/repo-issue.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web_src/js/features/comp/EasyMDE.js b/web_src/js/features/comp/EasyMDE.js index a030db83a36c2..2979627b0096a 100644 --- a/web_src/js/features/comp/EasyMDE.js +++ b/web_src/js/features/comp/EasyMDE.js @@ -78,7 +78,7 @@ export async function createCommentEasyMDE(textarea, easyMDEOptions = {}) { const inputField = easyMDE.codemirror.getInputField(); easyMDE.codemirror.on('change', (...args) => { - easyMDEOptions?.onChange(...args); + easyMDEOptions?.onChange?.(...args); }); easyMDE.codemirror.setOption('extraKeys', { 'Cmd-Enter': codeMirrorQuickSubmit, diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index cb76cfd98e16e..4163fb120e527 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -426,7 +426,7 @@ export async function handleReply($el) { let easyMDE = getAttachedEasyMDE($textarea); if (!easyMDE) { await attachTribute($textarea.get(), {mentions: true, emoji: true}); - easyMDE = await createCommentEasyMDE($textarea, {'onChange': () => {}}); + easyMDE = await createCommentEasyMDE($textarea); } $textarea.focus(); easyMDE.codemirror.focus();