diff options
48 files changed, 52 insertions, 5 deletions
diff --git a/source/features/align-issue-labels.tsx b/source/features/align-issue-labels.tsx index 2ac94978..da74860e 100644 --- a/source/features/align-issue-labels.tsx +++ b/source/features/align-issue-labels.tsx @@ -3,4 +3,4 @@ import * as pageDetect from 'github-url-detection'; import features from '.'; -void features.addCssFeature(__filebasename, [pageDetect.isConversationList]); +void features.addCssFeature(__filebasename, [pageDetect.isConversationList], 'has-rgh-inner'); diff --git a/source/features/clean-conversation-filters.tsx b/source/features/clean-conversation-filters.tsx index 961e5b7f..2cb89b2c 100644 --- a/source/features/clean-conversation-filters.tsx +++ b/source/features/clean-conversation-filters.tsx @@ -76,5 +76,6 @@ void features.add(__filebasename, { pageDetect.isRepoConversationList, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/clean-conversation-headers.tsx b/source/features/clean-conversation-headers.tsx index 88f349ed..4ed7aa5f 100644 --- a/source/features/clean-conversation-headers.tsx +++ b/source/features/clean-conversation-headers.tsx @@ -74,6 +74,7 @@ void features.add(__filebasename, { onConversationHeaderUpdate, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init: initIssue, }, { include: [ diff --git a/source/features/clean-conversation-sidebar.tsx b/source/features/clean-conversation-sidebar.tsx index 5519bb66..dd6deb48 100644 --- a/source/features/clean-conversation-sidebar.tsx +++ b/source/features/clean-conversation-sidebar.tsx @@ -121,5 +121,6 @@ void features.add(__filebasename, { void onReplacedElement('#partial-discussion-sidebar', clean); }, ], + deduplicate: 'has-rgh-inner', init: clean, }); diff --git a/source/features/clean-pinned-issues.tsx b/source/features/clean-pinned-issues.tsx index cb5fd32d..066826cf 100644 --- a/source/features/clean-pinned-issues.tsx +++ b/source/features/clean-pinned-issues.tsx @@ -3,4 +3,4 @@ import * as pageDetect from 'github-url-detection'; import features from '.'; -void features.addCssFeature(__filebasename, [pageDetect.isRepoIssueList]); +void features.addCssFeature(__filebasename, [pageDetect.isRepoIssueList], 'has-rgh-inner'); diff --git a/source/features/clean-repo-filelist-actions.tsx b/source/features/clean-repo-filelist-actions.tsx index c46f26de..647ca486 100644 --- a/source/features/clean-repo-filelist-actions.tsx +++ b/source/features/clean-repo-filelist-actions.tsx @@ -54,5 +54,6 @@ void features.add(__filebasename, { pageDetect.isRepoTree, pageDetect.isSingleFile, ], + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/clean-repo-sidebar.tsx b/source/features/clean-repo-sidebar.tsx index 6a8a5842..8d1b96f9 100644 --- a/source/features/clean-repo-sidebar.tsx +++ b/source/features/clean-repo-sidebar.tsx @@ -87,5 +87,6 @@ void features.add(__filebasename, { pageDetect.isRepoRoot, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/clean-rich-text-editor.tsx b/source/features/clean-rich-text-editor.tsx index 9dabfced..bc3c1fc6 100644 --- a/source/features/clean-rich-text-editor.tsx +++ b/source/features/clean-rich-text-editor.tsx @@ -19,6 +19,7 @@ void features.add(__filebasename, { include: [ pageDetect.hasRichTextEditor, ], + deduplicate: 'has-rgh-inner', init: hideTextareaTooltip, }, { include: [ diff --git a/source/features/comment-fields-keyboard-shortcuts.tsx b/source/features/comment-fields-keyboard-shortcuts.tsx index e3bba739..f4308ef6 100644 --- a/source/features/comment-fields-keyboard-shortcuts.tsx +++ b/source/features/comment-fields-keyboard-shortcuts.tsx @@ -72,5 +72,6 @@ void features.add(__filebasename, { pageDetect.hasRichTextEditor, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/comments-time-machine-links.tsx b/source/features/comments-time-machine-links.tsx index b604bf6d..74867571 100644 --- a/source/features/comments-time-machine-links.tsx +++ b/source/features/comments-time-machine-links.tsx @@ -132,6 +132,7 @@ void features.add(__filebasename, { exclude: [ pageDetect.isGist, ], + deduplicate: 'has-rgh-inner', init, }, { include: [ diff --git a/source/features/conversation-activity-filter.tsx b/source/features/conversation-activity-filter.tsx index a2a9e38b..80808bb0 100644 --- a/source/features/conversation-activity-filter.tsx +++ b/source/features/conversation-activity-filter.tsx @@ -164,5 +164,6 @@ void features.add(__filebasename, { onConversationHeaderUpdate, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/conversation-filters.tsx b/source/features/conversation-filters.tsx index 236e9ce2..eef06bf7 100644 --- a/source/features/conversation-filters.tsx +++ b/source/features/conversation-filters.tsx @@ -32,5 +32,6 @@ void features.add(__filebasename, { include: [ pageDetect.isRepoConversationList, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/edit-comments-faster.tsx b/source/features/edit-comments-faster.tsx index adb51f32..7fb209e2 100644 --- a/source/features/edit-comments-faster.tsx +++ b/source/features/edit-comments-faster.tsx @@ -41,5 +41,6 @@ void features.add(__filebasename, { pageDetect.hasComments, pageDetect.isDiscussion, ], + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/edit-readme.tsx b/source/features/edit-readme.tsx index 77ceedd6..2c1bc829 100644 --- a/source/features/edit-readme.tsx +++ b/source/features/edit-readme.tsx @@ -45,5 +45,6 @@ void features.add(__filebasename, { pageDetect.isRepoTree, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/expand-all-hidden-comments.tsx b/source/features/expand-all-hidden-comments.tsx index 0595a51f..56747f5f 100644 --- a/source/features/expand-all-hidden-comments.tsx +++ b/source/features/expand-all-hidden-comments.tsx @@ -33,5 +33,6 @@ void features.add(__filebasename, { include: [ pageDetect.isConversation, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/extend-conversation-status-filters.tsx b/source/features/extend-conversation-status-filters.tsx index 5f5833d1..c05ffc57 100644 --- a/source/features/extend-conversation-status-filters.tsx +++ b/source/features/extend-conversation-status-filters.tsx @@ -66,5 +66,6 @@ void features.add(__filebasename, { pageDetect.isConversationList, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/hide-comments-faster.tsx b/source/features/hide-comments-faster.tsx index e7148fef..3fb20f12 100644 --- a/source/features/hide-comments-faster.tsx +++ b/source/features/hide-comments-faster.tsx @@ -79,5 +79,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasComments, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/hide-issue-list-autocomplete.tsx b/source/features/hide-issue-list-autocomplete.tsx index 96b27753..9ba261cd 100644 --- a/source/features/hide-issue-list-autocomplete.tsx +++ b/source/features/hide-issue-list-autocomplete.tsx @@ -14,5 +14,6 @@ void features.add(__filebasename, { exclude: [ pageDetect.isMilestone, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/hide-useless-comments.tsx b/source/features/hide-useless-comments.tsx index 9ed4d02f..5234f861 100644 --- a/source/features/hide-useless-comments.tsx +++ b/source/features/hide-useless-comments.tsx @@ -81,5 +81,6 @@ void features.add(__filebasename, { include: [ pageDetect.isIssue, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/highest-rated-comment.tsx b/source/features/highest-rated-comment.tsx index 57349a0c..ae82ef9c 100644 --- a/source/features/highest-rated-comment.tsx +++ b/source/features/highest-rated-comment.tsx @@ -106,5 +106,6 @@ void features.add(__filebasename, { include: [ pageDetect.isIssue, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/highlight-collaborators-and-own-conversations.tsx b/source/features/highlight-collaborators-and-own-conversations.tsx index 8c182197..3d8700ed 100644 --- a/source/features/highlight-collaborators-and-own-conversations.tsx +++ b/source/features/highlight-collaborators-and-own-conversations.tsx @@ -45,10 +45,12 @@ void features.add(__filebasename, { () => select.exists('.blankslate'), ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init: highlightCollaborators, }, { include: [ pageDetect.isConversationList, ], + deduplicate: 'has-rgh-inner', init: highlightSelf, }); diff --git a/source/features/index.tsx b/source/features/index.tsx index 157ad6f5..135283df 100644 --- a/source/features/index.tsx +++ b/source/features/index.tsx @@ -253,9 +253,10 @@ const add = async (id: FeatureID, ...loaders: FeatureLoader[]): Promise<void> => } }; -const addCssFeature = async (id: FeatureID, include: BooleanFunction[]): Promise<void> => { +const addCssFeature = async (id: FeatureID, include: BooleanFunction[], deduplicate?: false | string): Promise<void> => { void add(id, { include, + deduplicate, awaitDomReady: false, init: () => { document.body.classList.add('rgh-' + id); @@ -274,6 +275,7 @@ void add(__filebasename, { // `await` kicks it to the next tick, after the other features have checked for 'has-rgh', so they can run once. await Promise.resolve(); select('#js-repo-pjax-container, #js-pjax-container')?.append(<has-rgh/>); + select('#repo-content-pjax-container')?.append(<has-rgh-inner/>); // #4567 }, }); diff --git a/source/features/keyboard-navigation.tsx b/source/features/keyboard-navigation.tsx index 17d754d1..3f99d6d6 100644 --- a/source/features/keyboard-navigation.tsx +++ b/source/features/keyboard-navigation.tsx @@ -62,5 +62,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasComments, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/linkify-code.tsx b/source/features/linkify-code.tsx index 0d1452e4..09f6fba7 100644 --- a/source/features/linkify-code.tsx +++ b/source/features/linkify-code.tsx @@ -59,5 +59,6 @@ void features.add(__filebasename, { additionalListeners: [ onConversationHeaderUpdate, ], + deduplicate: 'has-rgh-inner', init: initTitle, }); diff --git a/source/features/linkify-user-edit-history-popup.tsx b/source/features/linkify-user-edit-history-popup.tsx index 09d970bf..61f249e1 100644 --- a/source/features/linkify-user-edit-history-popup.tsx +++ b/source/features/linkify-user-edit-history-popup.tsx @@ -24,5 +24,6 @@ void features.add(__filebasename, { include: [ pageDetect.isConversation, ], + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/minimize-upload-bar.tsx b/source/features/minimize-upload-bar.tsx index 279f0970..c05c01c1 100644 --- a/source/features/minimize-upload-bar.tsx +++ b/source/features/minimize-upload-bar.tsx @@ -3,4 +3,4 @@ import * as pageDetect from 'github-url-detection'; import features from '.'; -void features.addCssFeature(__filebasename, [pageDetect.hasRichTextEditor]); +void features.addCssFeature(__filebasename, [pageDetect.hasRichTextEditor], 'has-rgh-inner'); diff --git a/source/features/monospace-textareas.tsx b/source/features/monospace-textareas.tsx index 0eeb4439..13ff3e28 100644 --- a/source/features/monospace-textareas.tsx +++ b/source/features/monospace-textareas.tsx @@ -3,4 +3,4 @@ import * as pageDetect from 'github-url-detection'; import features from '.'; -void features.addCssFeature(__filebasename, [pageDetect.hasRichTextEditor]); +void features.addCssFeature(__filebasename, [pageDetect.hasRichTextEditor], 'has-rgh-inner'); diff --git a/source/features/one-key-formatting.tsx b/source/features/one-key-formatting.tsx index 00153207..ea14ffed 100644 --- a/source/features/one-key-formatting.tsx +++ b/source/features/one-key-formatting.tsx @@ -42,5 +42,6 @@ void features.add(__filebasename, { pageDetect.isGist, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/open-all-conversations.tsx b/source/features/open-all-conversations.tsx index 265f8c92..6a48d774 100644 --- a/source/features/open-all-conversations.tsx +++ b/source/features/open-all-conversations.tsx @@ -52,5 +52,6 @@ void features.add(__filebasename, { pageDetect.isConversationList, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/open-issue-to-latest-comment.tsx b/source/features/open-issue-to-latest-comment.tsx index 07c7af0f..e9c7ad31 100644 --- a/source/features/open-issue-to-latest-comment.tsx +++ b/source/features/open-issue-to-latest-comment.tsx @@ -13,5 +13,6 @@ void features.add(__filebasename, { include: [ pageDetect.isConversationList, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/pinned-issues-update-time.tsx b/source/features/pinned-issues-update-time.tsx index e2bd04ba..08e07bc8 100644 --- a/source/features/pinned-issues-update-time.tsx +++ b/source/features/pinned-issues-update-time.tsx @@ -56,5 +56,6 @@ void features.add(__filebasename, { include: [ pageDetect.isRepoIssueList, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/pr-filters.tsx b/source/features/pr-filters.tsx index 0c1dd304..4be0e0c3 100644 --- a/source/features/pr-filters.tsx +++ b/source/features/pr-filters.tsx @@ -122,5 +122,6 @@ void features.add(__filebasename, { pageDetect.isPRList, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/prevent-link-loss.tsx b/source/features/prevent-link-loss.tsx index a6dc1bff..37462558 100644 --- a/source/features/prevent-link-loss.tsx +++ b/source/features/prevent-link-loss.tsx @@ -64,5 +64,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasRichTextEditor, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/preview-hidden-comments.tsx b/source/features/preview-hidden-comments.tsx index 737f2562..8dcce777 100644 --- a/source/features/preview-hidden-comments.tsx +++ b/source/features/preview-hidden-comments.tsx @@ -36,5 +36,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasComments, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/quick-mention.tsx b/source/features/quick-mention.tsx index 7fda86da..2b3f7062 100644 --- a/source/features/quick-mention.tsx +++ b/source/features/quick-mention.tsx @@ -57,5 +57,6 @@ void features.add(__filebasename, { additionalListeners: [ onNewComments, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/reactions-avatars.tsx b/source/features/reactions-avatars.tsx index 9a86051e..eb1f5ffd 100644 --- a/source/features/reactions-avatars.tsx +++ b/source/features/reactions-avatars.tsx @@ -95,5 +95,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasComments, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/remove-label-faster.tsx b/source/features/remove-label-faster.tsx index 19c54d99..149a8b6c 100644 --- a/source/features/remove-label-faster.tsx +++ b/source/features/remove-label-faster.tsx @@ -64,5 +64,6 @@ void features.add(__filebasename, { exclude: [ canNotEditLabels, ], + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/repo-age.tsx b/source/features/repo-age.tsx index c6f8efca..eb6122c1 100644 --- a/source/features/repo-age.tsx +++ b/source/features/repo-age.tsx @@ -126,5 +126,6 @@ void features.add(__filebasename, { pageDetect.isEmptyRepoRoot, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/rgh-linkify-features.tsx b/source/features/rgh-linkify-features.tsx index c60b613c..7b6562cc 100644 --- a/source/features/rgh-linkify-features.tsx +++ b/source/features/rgh-linkify-features.tsx @@ -34,6 +34,7 @@ void features.add(__filebasename, { exclude: [ isNotRefinedGitHubRepo, ], + deduplicate: 'has-rgh-inner', init, }, { include: [ @@ -46,5 +47,6 @@ void features.add(__filebasename, { additionalListeners: [ onConversationHeaderUpdate, ], + deduplicate: 'has-rgh-inner', init: initTitle, }); diff --git a/source/features/rgh-sponsor-button.tsx b/source/features/rgh-sponsor-button.tsx index 88e9baa5..22ce2d69 100644 --- a/source/features/rgh-sponsor-button.tsx +++ b/source/features/rgh-sponsor-button.tsx @@ -102,6 +102,7 @@ void features.add(__filebasename, { pageDetect.isIssue, pageDetect.isRepoIssueList, ], + deduplicate: 'has-rgh-inner', init: handleNewIssue, }, { include: [ diff --git a/source/features/show-names.tsx b/source/features/show-names.tsx index 5ca16907..bb1d7680 100644 --- a/source/features/show-names.tsx +++ b/source/features/show-names.tsx @@ -79,5 +79,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasComments, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/sort-milestones-by-closest-due-date.tsx b/source/features/sort-milestones-by-closest-due-date.tsx index add67203..d9c7dcf8 100644 --- a/source/features/sort-milestones-by-closest-due-date.tsx +++ b/source/features/sort-milestones-by-closest-due-date.tsx @@ -19,5 +19,6 @@ void features.add(__filebasename, { include: [ pageDetect.isRepo, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/sticky-sidebar.tsx b/source/features/sticky-sidebar.tsx index 071f5e57..52c368d8 100644 --- a/source/features/sticky-sidebar.tsx +++ b/source/features/sticky-sidebar.tsx @@ -41,6 +41,7 @@ void features.add(__filebasename, { exclude: [ pageDetect.isEmptyRepoRoot, ], + deduplicate: 'has-rgh-inner', init, deinit, }); diff --git a/source/features/tab-to-indent.tsx b/source/features/tab-to-indent.tsx index 14fbc8a2..f8ae1b61 100644 --- a/source/features/tab-to-indent.tsx +++ b/source/features/tab-to-indent.tsx @@ -14,5 +14,6 @@ void features.add(__filebasename, { pageDetect.hasRichTextEditor, ], awaitDomReady: false, + deduplicate: 'has-rgh-inner', init: onetime(init), }); diff --git a/source/features/table-input.tsx b/source/features/table-input.tsx index ab8249c4..5c367bbb 100644 --- a/source/features/table-input.tsx +++ b/source/features/table-input.tsx @@ -74,5 +74,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasRichTextEditor, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/unfinished-comments.tsx b/source/features/unfinished-comments.tsx index a125d728..de07df87 100644 --- a/source/features/unfinished-comments.tsx +++ b/source/features/unfinished-comments.tsx @@ -32,5 +32,6 @@ void features.add(__filebasename, { include: [ pageDetect.hasRichTextEditor, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/features/wait-for-attachments.tsx b/source/features/wait-for-attachments.tsx index 0b849d5f..f9e8af68 100644 --- a/source/features/wait-for-attachments.tsx +++ b/source/features/wait-for-attachments.tsx @@ -45,5 +45,6 @@ void features.add(__filebasename, { exclude: [ pageDetect.isNewIssue, ], + deduplicate: 'has-rgh-inner', init, }); diff --git a/source/globals.d.ts b/source/globals.d.ts index ac8fcde4..19619603 100644 --- a/source/globals.d.ts +++ b/source/globals.d.ts @@ -41,6 +41,7 @@ declare namespace JSX { 'details-dialog': IntrinsicElements.div & {tabindex: string}; 'details-menu': IntrinsicElements.div & {src?: string; preload?: boolean}; 'has-rgh': IntrinsicElements.div; + 'has-rgh-inner': IntrinsicElements.div; 'include-fragment': IntrinsicElements.div & {src?: string}; 'label': IntrinsicElements.label & {for?: string}; 'relative-time': IntrinsicElements.div & {datetime: string}; |