Improve side panel city matching for market aliases
This commit is contained in:
+39
-5
@@ -4,7 +4,7 @@ const DEFAULT_CONFIG = {
|
|||||||
selectedCity: "",
|
selectedCity: "",
|
||||||
siteBase: "https://polyweather-pro.vercel.app"
|
siteBase: "https://polyweather-pro.vercel.app"
|
||||||
};
|
};
|
||||||
const CACHE_VERSION = "v1";
|
const CACHE_VERSION = "v2";
|
||||||
const locale = String(navigator.language || "en").toLowerCase().startsWith("zh")
|
const locale = String(navigator.language || "en").toLowerCase().startsWith("zh")
|
||||||
? "zh"
|
? "zh"
|
||||||
: "en";
|
: "en";
|
||||||
@@ -254,6 +254,37 @@ function getCityAliasTokens(rawCityName) {
|
|||||||
aliases.add("buenos-aires");
|
aliases.add("buenos-aires");
|
||||||
aliases.add("buenosaires");
|
aliases.add("buenosaires");
|
||||||
}
|
}
|
||||||
|
if (normalized === "aurora") {
|
||||||
|
aliases.add("denver");
|
||||||
|
aliases.add("denver-co");
|
||||||
|
aliases.add("buckley");
|
||||||
|
aliases.add("kbkf");
|
||||||
|
}
|
||||||
|
if (normalized === "los angeles") {
|
||||||
|
aliases.add("los-angeles");
|
||||||
|
aliases.add("lax");
|
||||||
|
aliases.add("klax");
|
||||||
|
}
|
||||||
|
if (normalized === "san francisco") {
|
||||||
|
aliases.add("san-francisco");
|
||||||
|
aliases.add("sfo");
|
||||||
|
aliases.add("ksfo");
|
||||||
|
}
|
||||||
|
if (normalized === "austin") {
|
||||||
|
aliases.add("aus");
|
||||||
|
aliases.add("kaus");
|
||||||
|
}
|
||||||
|
if (normalized === "houston") {
|
||||||
|
aliases.add("hou");
|
||||||
|
aliases.add("hobby");
|
||||||
|
aliases.add("khou");
|
||||||
|
}
|
||||||
|
if (normalized === "mexico city") {
|
||||||
|
aliases.add("mexicocity");
|
||||||
|
aliases.add("ciudad-de-mexico");
|
||||||
|
aliases.add("cdmx");
|
||||||
|
aliases.add("mmmx");
|
||||||
|
}
|
||||||
|
|
||||||
return [...aliases].filter((item) => item && item.length >= 2);
|
return [...aliases].filter((item) => item && item.length >= 2);
|
||||||
}
|
}
|
||||||
@@ -1148,11 +1179,14 @@ async function loadCities(options = {}) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getActiveTabUrl() {
|
function getActiveTabInfo() {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
|
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
|
||||||
const first = Array.isArray(tabs) && tabs.length ? tabs[0] : null;
|
const first = Array.isArray(tabs) && tabs.length ? tabs[0] : null;
|
||||||
resolve(String(first?.url || ""));
|
resolve({
|
||||||
|
url: String(first?.url || ""),
|
||||||
|
title: String(first?.title || "")
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1161,12 +1195,12 @@ async function syncCityFromActiveUrl() {
|
|||||||
if (state.syncBusy || !state.cities.length) return;
|
if (state.syncBusy || !state.cities.length) return;
|
||||||
state.syncBusy = true;
|
state.syncBusy = true;
|
||||||
try {
|
try {
|
||||||
const url = await getActiveTabUrl();
|
const { url, title } = await getActiveTabInfo();
|
||||||
if (!url) return;
|
if (!url) return;
|
||||||
if (url === state.lastActiveUrl) return;
|
if (url === state.lastActiveUrl) return;
|
||||||
state.lastActiveUrl = url;
|
state.lastActiveUrl = url;
|
||||||
|
|
||||||
const inferred = inferCityFromUrl(url);
|
const inferred = inferCityFromUrl(url) || matchCityInText(title);
|
||||||
if (!inferred) return;
|
if (!inferred) return;
|
||||||
if (inferred === state.config.selectedCity) return;
|
if (inferred === state.config.selectedCity) return;
|
||||||
await setSelectedCity(inferred, { persist: true, reloadDetail: true });
|
await setSelectedCity(inferred, { persist: true, reloadDetail: true });
|
||||||
|
|||||||
Reference in New Issue
Block a user