diff options
| author | 2021-04-26 18:31:37 +0200 | |
|---|---|---|
| committer | 2021-04-26 23:31:37 +0700 | |
| commit | 6cd801086af7e3c0c75360bbab943c77c9c3c7ff (patch) | |
| tree | 0ac27cfc93917f71b6fcc7084fa623a0d9f3a27f /source/features/delete-review-comments-faster.tsx | |
| parent | 304d7387b1691379cf83ab8f6d8f5f16fcb4efdb (diff) | |
| download | refined-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.tsx | 51 |
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 +}); |
