From 3bdca4615cadf816fa300b0484f59d53b9d34729 Mon Sep 17 00:00:00 2001 From: silverwind Date: Thu, 31 Oct 2024 15:57:40 +0100 Subject: [PATCH] [PORT] Fix a number of typescript issues (gitea#32308) - Prefer [window.location.assign](https://developer.mozilla.org/en-US/docs/Web/API/Location/assign) over assigning to [window.location](https://developer.mozilla.org/en-US/docs/Web/API/Window/location) which typescript does not like. This works in all browsers including PaleMoon. - Fix all typescript issues in `web_src/js/webcomponents`, no behaviour changes. - ~~Workaround bug in `@typescript-eslint/no-unnecessary-type-assertion` rule.~~ - Omit vendored file from type checks. - `tsc` error count is reduce by 53 with these changes. --- Conflict resolution: Choose our version. Done differently: Everything related to typescript types isn't ported. Use `window.location.href` instead of `String(window.location)`, thanks @viceice! (cherry picked from commit 810782302652d73c4f7249c4c3df8a7e85bae5f0) --- web_src/js/components/DiffCommitSelector.vue | 12 ++++++------ web_src/js/features/repo-issue.js | 2 +- web_src/js/webcomponents/origin-url.test.js | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/web_src/js/components/DiffCommitSelector.vue b/web_src/js/components/DiffCommitSelector.vue index 3f6e4e4638..668c4cfe17 100644 --- a/web_src/js/components/DiffCommitSelector.vue +++ b/web_src/js/components/DiffCommitSelector.vue @@ -140,11 +140,11 @@ export default { Object.assign(this.locale, results.locale); }, showAllChanges() { - window.location = `${this.issueLink}/files${this.queryParams}`; + window.location.assign(`${this.issueLink}/files${this.queryParams}`); }, /** Called when user clicks on since last review */ changesSinceLastReviewClick() { - window.location = `${this.issueLink}/files/${this.lastReviewCommitSha}..${this.commits.at(-1).id}${this.queryParams}`; + window.location.assign(`${this.issueLink}/files/${this.lastReviewCommitSha}..${this.commits.at(-1).id}${this.queryParams}`); }, /** Clicking on a single commit opens this specific commit */ commitClicked(commitId, newWindow = false) { @@ -152,7 +152,7 @@ export default { if (newWindow) { window.open(url); } else { - window.location = url; + window.location.assign(url); } }, /** @@ -174,14 +174,14 @@ export default { const lastCommitIdx = this.commits.findLastIndex((x) => x.selected); if (lastCommitIdx === this.commits.length - 1) { // user selected all commits - just show the normal diff page - window.location = `${this.issueLink}/files${this.queryParams}`; + window.location.assign(`${this.issueLink}/files${this.queryParams}`); } else { - window.location = `${this.issueLink}/files/${this.commits[lastCommitIdx].id}${this.queryParams}`; + window.location.assign(`${this.issueLink}/files/${this.commits[lastCommitIdx].id}${this.queryParams}`); } } else { const start = this.commits[this.commits.findIndex((x) => x.selected) - 1].id; const end = this.commits.findLast((x) => x.selected).id; - window.location = `${this.issueLink}/files/${start}..${end}${this.queryParams}`; + window.location.assign(`${this.issueLink}/files/${start}..${end}${this.queryParams}`); } } }, diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index cea817ba01..3a0def1786 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -119,7 +119,7 @@ function excludeLabel(item) { const regStr = `labels=((?:-?[0-9]+%2c)*)(${id})((?:%2c-?[0-9]+)*)&`; const newStr = 'labels=$1-$2$3&'; - window.location = href.replace(new RegExp(regStr), newStr); + window.location.assign(href.replace(new RegExp(regStr), newStr)); } export function initRepoIssueSidebarList() { diff --git a/web_src/js/webcomponents/origin-url.test.js b/web_src/js/webcomponents/origin-url.test.js index 3b2ab89f2a..ba6a68646d 100644 --- a/web_src/js/webcomponents/origin-url.test.js +++ b/web_src/js/webcomponents/origin-url.test.js @@ -1,9 +1,9 @@ import {toOriginUrl} from './origin-url.js'; test('toOriginUrl', () => { - const oldLocation = window.location; + const oldLocation = window.location.href; for (const origin of ['https://example.com', 'https://example.com:3000']) { - window.location = new URL(`${origin}/`); + window.location.assign(`${origin}/`); expect(toOriginUrl('/')).toEqual(`${origin}/`); expect(toOriginUrl('/org/repo.git')).toEqual(`${origin}/org/repo.git`); expect(toOriginUrl('https://another.com')).toEqual(`${origin}/`); @@ -13,5 +13,5 @@ test('toOriginUrl', () => { expect(toOriginUrl('https://another.com:4000/')).toEqual(`${origin}/`); expect(toOriginUrl('https://another.com:4000/org/repo.git')).toEqual(`${origin}/org/repo.git`); } - window.location = oldLocation; + window.location.assign(oldLocation); });