summaryrefslogtreecommitdiff
path: root/source/features/revert-file.tsx
diff options
context:
space:
mode:
authorGravatar Federico Brigante <github@bfred.it> 2020-01-07 00:19:09 +0700
committerGravatar GitHub <noreply@github.com> 2020-01-07 00:19:09 +0700
commit7f1f2c52d8deeb0fddb7a7322af7dd090ac19461 (patch)
tree6d5aba6a51777875918a609e4fdf2534870169be /source/features/revert-file.tsx
parentdac2a0302aad5462c3a6b896fc66b18391c73d12 (diff)
downloadrefined-github-7f1f2c52d8deeb0fddb7a7322af7dd090ac19461.tar.gz
refined-github-7f1f2c52d8deeb0fddb7a7322af7dd090ac19461.tar.zst
refined-github-7f1f2c52d8deeb0fddb7a7322af7dd090ac19461.zip
Keep features working after clicking the browser’s Back button (#2639)
Diffstat (limited to 'source/features/revert-file.tsx')
-rw-r--r--source/features/revert-file.tsx19
1 files changed, 13 insertions, 6 deletions
diff --git a/source/features/revert-file.tsx b/source/features/revert-file.tsx
index 9221d9cf..c0b0e25b 100644
--- a/source/features/revert-file.tsx
+++ b/source/features/revert-file.tsx
@@ -72,10 +72,17 @@ async function commitFileContent(menuItem: Element, content: string): Promise<vo
await postForm(form);
}
-async function handleRevertFileClick(event: React.MouseEvent<HTMLButtonElement>): Promise<void> {
- const menuItem = event.currentTarget;
- // Allow only one click
- menuItem.removeEventListener('click', handleRevertFileClick as unknown as EventListener);
+const filesReverted = new WeakSet<HTMLButtonElement>();
+async function handleRevertFileClick(event: DelegateEvent<MouseEvent, HTMLButtonElement>): Promise<void> {
+ const menuItem = event.delegateTarget;
+
+ // Only allow one click
+ if (filesReverted.has(menuItem)) {
+ return;
+ }
+
+ filesReverted.add(menuItem);
+
menuItem.textContent = 'Reverting…';
event.preventDefault();
event.stopPropagation();
@@ -120,7 +127,6 @@ function handleMenuOpening(event: DelegateEvent): void {
style={{whiteSpace: 'pre-wrap'}}
role="menuitem"
type="button"
- onClick={handleRevertFileClick}
>
Revert changes
</button>
@@ -128,7 +134,8 @@ function handleMenuOpening(event: DelegateEvent): void {
}
function init(): void {
- delegate('#files', '.js-file-header-dropdown > summary', 'click', handleMenuOpening);
+ delegate('.js-file-header-dropdown > summary', 'click', handleMenuOpening);
+ delegate('.rgh-revert-file', 'click', handleRevertFileClick, true);
}
features.add({