summaryrefslogtreecommitdiff
path: root/source/features/delete-review-comments-faster.tsx
diff options
context:
space:
mode:
authorGravatar Florent <cheap.glitch@gmail.com> 2021-04-26 18:31:37 +0200
committerGravatar GitHub <noreply@github.com> 2021-04-26 23:31:37 +0700
commit6cd801086af7e3c0c75360bbab943c77c9c3c7ff (patch)
tree0ac27cfc93917f71b6fcc7084fa623a0d9f3a27f /source/features/delete-review-comments-faster.tsx
parent304d7387b1691379cf83ab8f6d8f5f16fcb4efdb (diff)
downloadrefined-github-6cd801086af7e3c0c75360bbab943c77c9c3c7ff.tar.gz
refined-github-6cd801086af7e3c0c75360bbab943c77c9c3c7ff.tar.zst
refined-github-6cd801086af7e3c0c75360bbab943c77c9c3c7ff.zip
Add `delete-review-comments-faster` feature (#4099)
Co-authored-by: Federico Brigante <me@fregante.com>
Diffstat (limited to 'source/features/delete-review-comments-faster.tsx')
-rw-r--r--source/features/delete-review-comments-faster.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/source/features/delete-review-comments-faster.tsx b/source/features/delete-review-comments-faster.tsx
new file mode 100644
index 00000000..e4fca356
--- /dev/null
+++ b/source/features/delete-review-comments-faster.tsx
@@ -0,0 +1,51 @@
+import React from 'dom-chef';
+import select from 'select-dom';
+import delegate from 'delegate-it';
+import {observe} from 'selector-observer';
+import {TrashIcon} from '@primer/octicons-react';
+import * as pageDetect from 'github-url-detection';
+
+import features from '.';
+import loadDetailsMenu from '../github-helpers/load-details-menu';
+
+const deinit: VoidFunction[] = [];
+
+async function onButtonClick({delegateTarget: button}: delegate.Event): Promise<void> {
+ button
+ .closest('.js-comment')!
+ .querySelector('.show-more-popover .js-comment-delete > button')!
+ .click();
+}
+
+async function onEditButtonClick({delegateTarget: button}: delegate.Event): Promise<void> {
+ const comment = button.closest('.js-comment')!;
+ await loadDetailsMenu(select('details-menu.show-more-popover', comment)!);
+}
+
+function addDeleteButton(cancelButton: Element): void {
+ cancelButton.classList.add('rgh-delete-button-added');
+ cancelButton.after(
+ <button className="btn btn-danger float-left rgh-review-comment-delete-button" type="button">
+ <TrashIcon/>
+ </button>
+ );
+}
+
+function init(): void {
+ const listener = delegate(document, '.rgh-review-comment-delete-button', 'click', onButtonClick);
+ const editButtonListener = delegate(document, '.rgh-edit-comments-faster-button', 'click', onEditButtonClick);
+ const observer = observe('.review-comment > .unminimized-comment form:not(.js-single-suggested-change-form) .js-comment-cancel-button:not(.rgh-delete-button-added)', {
+ add: addDeleteButton
+ });
+ deinit.push(listener.destroy, editButtonListener.destroy, observer.abort);
+}
+
+void features.add(__filebasename, {
+ include: [
+ pageDetect.isPRConversation,
+ pageDetect.isPRFiles
+ ],
+ awaitDomReady: false,
+ init,
+ deinit
+});