simplify formatSearchUrl calls, use URL api

closes: https://github.com/xvvvyz/tilde/issues/33
This commit is contained in:
cade
2024-06-20 11:36:23 -07:00
parent ead7ac906d
commit 609760aa60
+11 -9
View File
@@ -331,7 +331,7 @@
}); });
} }
static #formatSearchUrl(commandUrl, searchTemplate, query) { static #formatSearchUrl(searchTemplate, query, commandUrl) {
if (!searchTemplate) return commandUrl; if (!searchTemplate) return commandUrl;
const [commandBase] = Search.#splitUrl(commandUrl); const [commandBase] = Search.#splitUrl(commandUrl);
const [searchBase, path] = Search.#splitUrl(searchTemplate); const [searchBase, path] = Search.#splitUrl(searchTemplate);
@@ -366,7 +366,7 @@
if (COMMANDS.has(searchKey)) { if (COMMANDS.has(searchKey)) {
const { searchTemplate, url: base } = COMMANDS.get(searchKey); const { searchTemplate, url: base } = COMMANDS.get(searchKey);
const search = rawSearch.trim(); const search = rawSearch.trim();
const url = Search.#formatSearchUrl(base, searchTemplate, search); const url = Search.#formatSearchUrl(searchTemplate, search, base);
return { key: searchKey, query, search, splitBy, url }; return { key: searchKey, query, search, splitBy, url };
} }
@@ -380,17 +380,19 @@
return { key: pathKey, path, query, splitBy, url }; return { key: pathKey, path, query, splitBy, url };
} }
const [baseUrl, rest] = Search.#splitUrl(CONFIG.defaultSearchTemplate); const url = Search.#formatSearchUrl(CONFIG.defaultSearchTemplate, query);
const url = Search.#formatSearchUrl(baseUrl, rest, query);
return { query, search: query, url }; return { query, search: query, url };
}; };
static #splitUrl(url) { static #splitUrl(url) {
const a = document.createElement('a'); try {
a.href = url; const u = new URL(url);
const baseUrl = a.hostname ? `${a.protocol}//${a.hostname}` : null; const base = `${u.protocol}//${u.hostname}`;
const rest = `${a.pathname}${a.search}`; const rest = decodeURIComponent(`${u.pathname}${u.search}${u.hash}`);
return [baseUrl, decodeURIComponent(rest)]; return [base, rest];
} catch (e) {
return [null, url];
}
} }
#close() { #close() {