aboutsummaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/js/backend.js12
-rw-r--r--ext/bg/js/search.js13
2 files changed, 10 insertions, 15 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 9eb1d9ca..9565a8d9 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -608,14 +608,16 @@ class Backend {
const queryString = new URLSearchParams(queryParams).toString();
const url = `${baseUrl}?${queryString}`;
+ const isTabMatch = (url2) => {
+ if (url2 === null || !url2.startsWith(baseUrl)) { return false; }
+ const {baseUrl: baseUrl2, queryParams: queryParams2} = parseUrl(url2);
+ return baseUrl2 === baseUrl && (queryParams2.mode === mode || (!queryParams2.mode && mode === 'existingOrNewTab'));
+ };
+
switch (mode) {
case 'existingOrNewTab':
try {
- const tab = await Backend._findTab(1000, (url2) => (
- url2 !== null &&
- url2.startsWith(baseUrl) &&
- (url2.length === baseUrl.length || url2[baseUrl.length] === '?' || url2[baseUrl.length] === '#')
- ));
+ const tab = await Backend._findTab(1000, isTabMatch);
if (tab !== null) {
await Backend._focusTab(tab);
if (queryParams.query) {
diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js
index 1baee904..b6a1e66a 100644
--- a/ext/bg/js/search.js
+++ b/ext/bg/js/search.js
@@ -49,7 +49,7 @@ class DisplaySearch extends Display {
try {
await this.initialize();
- const {query='', mode=''} = DisplaySearch.parseQueryStringFromLocation(window.location.href);
+ const {queryParams: {query='', mode=''}} = parseUrl(window.location.href);
if (this.search !== null) {
this.search.addEventListener('click', (e) => this.onSearch(e), false);
@@ -66,7 +66,7 @@ class DisplaySearch extends Display {
this.wanakanaEnable.checked = false;
}
this.wanakanaEnable.addEventListener('change', (e) => {
- const {query=''} = DisplaySearch.parseQueryStringFromLocation(window.location.href);
+ const {queryParams: {query=''}} = parseUrl(window.location.href);
if (e.target.checked) {
window.wanakana.bind(this.query);
apiOptionsSet({general: {enableWanakana: true}}, this.getOptionsContext());
@@ -157,7 +157,7 @@ class DisplaySearch extends Display {
}
onPopState() {
- const {query='', mode=''} = DisplaySearch.parseQueryStringFromLocation(window.location.href);
+ const {queryParams: {query='', mode=''}} = parseUrl(window.location.href);
document.documentElement.dataset.searchMode = mode;
this.setQuery(query);
this.onSearchQueryUpdated(this.query.value, false);
@@ -323,13 +323,6 @@ class DisplaySearch extends Display {
document.title = `${text} - Yomichan Search`;
}
}
-
- static parseQueryStringFromLocation(url) {
- const parsedUrl = new URL(url);
- const parsedSearch = new URLSearchParams(parsedUrl.search);
- return Array.from(parsedSearch.entries())
- .reduce((a, [k, v]) => Object.assign({}, a, {[k]: v}), {});
- }
}
DisplaySearch.onKeyDownIgnoreKeys = {