From 71b1f48809f598f19944c2f7c6c3759b1962056c Mon Sep 17 00:00:00 2001 From: Lam Tang Date: Thu, 17 Aug 2023 13:39:58 +0800 Subject: [PATCH] fix: features initialize unexpectedly in the new UI now they run expectedly in the both old and new UI --- package.json | 2 +- src/helpers/get-repo-info.ts | 28 +++++++++++-------- src/helpers/is-perceptor.ts | 5 ++-- .../repo-activity-openrank-trends/index.tsx | 3 +- .../repo-activity-racing-bar/index.tsx | 7 +++-- .../features/repo-fork-tooltip/index.tsx | 3 +- .../features/repo-header-labels/index.tsx | 3 +- .../features/repo-issue-tooltip/index.tsx | 2 +- .../features/repo-pr-tooltip/index.tsx | 2 +- .../features/repo-star-tooltip/index.tsx | 3 +- yarn.lock | 8 +++--- 11 files changed, 40 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 7d8e223e..eb046b57 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dom-loaded": "^3.0.0", "echarts": "^5.3.0", "element-ready": "^6.2.1", - "github-url-detection": "^6.1.0", + "github-url-detection": "^8.1.0", "jquery": "^3.6.0", "lodash-es": "^4.17.21", "office-ui-fabric-react": "^7.183.0", diff --git a/src/helpers/get-repo-info.ts b/src/helpers/get-repo-info.ts index 8ade6850..08b0bfe2 100644 --- a/src/helpers/get-repo-info.ts +++ b/src/helpers/get-repo-info.ts @@ -8,18 +8,24 @@ export function getRepoName() { return pageDetect.utils.getRepositoryInfo(window.location)!.nameWithOwner; } -// check if the repository is public +export function hasRepoContainerHeader() { + const headerElement = $('#repository-container-header'); + return headerElement && !headerElement.attr('hidden'); +} + +export async function isRepoRoot() { + return pageDetect.isRepoRoot(); +} + +/** + * check if the repository is public + */ export async function isPublicRepo() { - // another selector that also works - // const repoLabel = $('strong[itemprop="name"]').siblings('span.Label.Label--secondary').text(); - await elementReady('#repository-container-header'); - const repoLabel = $('#repository-container-header') - .find('span.Label.Label--secondary:first') - .text(); - return ( - pageDetect.isRepo() && - (repoLabel === 'Public' || repoLabel === 'Public template') - ); + const selector = 'meta[name="octolytics-dimension-repository_public"]'; + await elementReady(selector); + // + const isPublic = $(selector).attr('content') === 'true'; + return pageDetect.isRepo() && isPublic; } export async function isPublicRepoWithMeta() { diff --git a/src/helpers/is-perceptor.ts b/src/helpers/is-perceptor.ts index c9b6e4bd..3cad003f 100644 --- a/src/helpers/is-perceptor.ts +++ b/src/helpers/is-perceptor.ts @@ -1,4 +1,5 @@ -const isPerceptor = (): boolean => - window.location.search.includes('?redirect=perceptor'); +const isPerceptor = (): boolean => { + return window.location.search.includes('?redirect=perceptor'); +}; export default isPerceptor; diff --git a/src/pages/ContentScripts/features/repo-activity-openrank-trends/index.tsx b/src/pages/ContentScripts/features/repo-activity-openrank-trends/index.tsx index 576bf0e6..e53592a4 100644 --- a/src/pages/ContentScripts/features/repo-activity-openrank-trends/index.tsx +++ b/src/pages/ContentScripts/features/repo-activity-openrank-trends/index.tsx @@ -6,6 +6,7 @@ import features from '../../../../feature-manager'; import { getRepoName, isPublicRepoWithMeta, + isRepoRoot, } from '../../../../helpers/get-repo-info'; import { getActivity, getOpenrank } from '../../../../api/repo'; import { RepoMeta, metaStore } from '../../../../api/common'; @@ -65,7 +66,7 @@ const restore = async () => { }; features.add(featureId, { - asLongAs: [isPublicRepoWithMeta], + asLongAs: [isPublicRepoWithMeta, isRepoRoot], awaitDomReady: true, init, restore, diff --git a/src/pages/ContentScripts/features/repo-activity-racing-bar/index.tsx b/src/pages/ContentScripts/features/repo-activity-racing-bar/index.tsx index 76bf23f5..e9b2fd7e 100644 --- a/src/pages/ContentScripts/features/repo-activity-racing-bar/index.tsx +++ b/src/pages/ContentScripts/features/repo-activity-racing-bar/index.tsx @@ -4,7 +4,10 @@ import $ from 'jquery'; import features from '../../../../feature-manager'; import isPerceptor from '../../../../helpers/is-perceptor'; -import { getRepoName } from '../../../../helpers/get-repo-info'; +import { + getRepoName, + isPublicRepoWithMeta, +} from '../../../../helpers/get-repo-info'; import { getActivityDetails } from '../../../../api/repo'; import View from './view'; import DataNotFound from '../repo-networks/DataNotFound'; @@ -52,7 +55,7 @@ const restore = async () => { }; features.add(featureId, { - asLongAs: [isPerceptor], + asLongAs: [isPerceptor, isPublicRepoWithMeta], awaitDomReady: false, init, restore, diff --git a/src/pages/ContentScripts/features/repo-fork-tooltip/index.tsx b/src/pages/ContentScripts/features/repo-fork-tooltip/index.tsx index 2950df49..46d61f50 100644 --- a/src/pages/ContentScripts/features/repo-fork-tooltip/index.tsx +++ b/src/pages/ContentScripts/features/repo-fork-tooltip/index.tsx @@ -7,6 +7,7 @@ import features from '../../../../feature-manager'; import getGithubTheme from '../../../../helpers/get-github-theme'; import { getRepoName, + hasRepoContainerHeader, isPublicRepoWithMeta, } from '../../../../helpers/get-repo-info'; import { getForks } from '../../../../api/repo'; @@ -65,7 +66,7 @@ const restore = async () => { }; features.add(featureId, { - asLongAs: [isPublicRepoWithMeta], + asLongAs: [isPublicRepoWithMeta, hasRepoContainerHeader], awaitDomReady: false, init, restore, diff --git a/src/pages/ContentScripts/features/repo-header-labels/index.tsx b/src/pages/ContentScripts/features/repo-header-labels/index.tsx index 60fc62f3..f4ba45be 100644 --- a/src/pages/ContentScripts/features/repo-header-labels/index.tsx +++ b/src/pages/ContentScripts/features/repo-header-labels/index.tsx @@ -6,6 +6,7 @@ import $ from 'jquery'; import features from '../../../../feature-manager'; import { getRepoName, + hasRepoContainerHeader, isPublicRepoWithMeta, } from '../../../../helpers/get-repo-info'; import { getActivity, getOpenrank, getParticipant } from '../../../../api/repo'; @@ -65,7 +66,7 @@ const restore = async () => { }; features.add(featureId, { - asLongAs: [isPublicRepoWithMeta], + asLongAs: [isPublicRepoWithMeta, hasRepoContainerHeader], awaitDomReady: false, init, restore, diff --git a/src/pages/ContentScripts/features/repo-issue-tooltip/index.tsx b/src/pages/ContentScripts/features/repo-issue-tooltip/index.tsx index 95f287a8..ee2e6996 100644 --- a/src/pages/ContentScripts/features/repo-issue-tooltip/index.tsx +++ b/src/pages/ContentScripts/features/repo-issue-tooltip/index.tsx @@ -61,7 +61,7 @@ const init = async (): Promise => { const container = document.createElement('div'); container.id = featureId; renderTo(container); - (await elementReady('#repository-container-header'))?.append(container); + (await elementReady('nav.js-repo-nav'))?.append(container); }; const restore = async () => { diff --git a/src/pages/ContentScripts/features/repo-pr-tooltip/index.tsx b/src/pages/ContentScripts/features/repo-pr-tooltip/index.tsx index ec9c3972..376d9b86 100644 --- a/src/pages/ContentScripts/features/repo-pr-tooltip/index.tsx +++ b/src/pages/ContentScripts/features/repo-pr-tooltip/index.tsx @@ -67,7 +67,7 @@ const init = async (): Promise => { const container = document.createElement('div'); container.id = featureId; renderTo(container); - (await elementReady('#repository-container-header'))?.append(container); + (await elementReady('nav.js-repo-nav'))?.append(container); }; const restore = async () => { diff --git a/src/pages/ContentScripts/features/repo-star-tooltip/index.tsx b/src/pages/ContentScripts/features/repo-star-tooltip/index.tsx index fa2b01a7..e94f424d 100644 --- a/src/pages/ContentScripts/features/repo-star-tooltip/index.tsx +++ b/src/pages/ContentScripts/features/repo-star-tooltip/index.tsx @@ -7,6 +7,7 @@ import features from '../../../../feature-manager'; import getGithubTheme from '../../../../helpers/get-github-theme'; import { getRepoName, + hasRepoContainerHeader, isPublicRepoWithMeta, } from '../../../../helpers/get-repo-info'; import { getStars } from '../../../../api/repo'; @@ -67,7 +68,7 @@ const restore = async () => { }; features.add(featureId, { - asLongAs: [isPublicRepoWithMeta], + asLongAs: [isPublicRepoWithMeta, hasRepoContainerHeader], awaitDomReady: false, init, restore, diff --git a/yarn.lock b/yarn.lock index 2cba1086..32710910 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3204,10 +3204,10 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -github-url-detection@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/github-url-detection/-/github-url-detection-6.1.0.tgz#b5a478fa7cb36f673d3da52cd5b3075fb3a43b3a" - integrity sha512-Z2z3WmR38cbHegKHN3jiyo2wDBEPRlEn/8HHK05iidiHtNF8KltmjKiaNzB3QdGU+OxF2QhgwT1q4rLT15Z08w== +github-url-detection@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/github-url-detection/-/github-url-detection-8.1.0.tgz#f415564f39c8b92ca2e823c22d1386bd0ac3fdf8" + integrity sha512-GvKgbLdIP6++wzBMCeJFJhoysFoUunE52m2B1K3ltfVfL3LO4TGQ/lv4utWoVCmVP85dVk+ZWkYA7IB3+fPt7A== glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2"