mirror of
https://github.com/p-stream/p-stream.git
synced 2026-04-21 08:12:18 +00:00
update region logic. fix?
This commit is contained in:
parent
fabb744162
commit
8d37f589a5
2 changed files with 85 additions and 10 deletions
|
|
@ -36,6 +36,9 @@ export function RegionSelectorPart() {
|
||||||
direction="up"
|
direction="up"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<p className="max-w-[30rem] text-type-danger">
|
||||||
|
Use with caution. Changing the region could reset your token!
|
||||||
|
</p>
|
||||||
</Box>
|
</Box>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,6 @@ interface RegionStore {
|
||||||
setRegion: (region: Region, userPicked?: boolean) => void;
|
setRegion: (region: Region, userPicked?: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
// const TEN_DAYS_MS = 10 * 24 * 60 * 60 * 1000;
|
|
||||||
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
||||||
// const THIRTY_MINUTES_MS = 30 * 60 * 1000;
|
|
||||||
|
|
||||||
export const useRegionStore = create<RegionStore>()(
|
export const useRegionStore = create<RegionStore>()(
|
||||||
persist(
|
persist(
|
||||||
(set) => ({
|
(set) => ({
|
||||||
|
|
@ -27,10 +23,11 @@ export const useRegionStore = create<RegionStore>()(
|
||||||
lastChecked: null,
|
lastChecked: null,
|
||||||
userPicked: false,
|
userPicked: false,
|
||||||
setRegion: (region, userPicked = false) =>
|
setRegion: (region, userPicked = false) =>
|
||||||
set({ region, lastChecked: Date.now(), userPicked }),
|
set({ region, lastChecked: Math.floor(Date.now() / 1000), userPicked }),
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
name: "__MW::region",
|
name: "__MW::region",
|
||||||
|
version: 2,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -42,10 +39,85 @@ function determineRegion(data: {
|
||||||
}): Region {
|
}): Region {
|
||||||
const { latitude, longitude, country_code: country } = data;
|
const { latitude, longitude, country_code: country } = data;
|
||||||
|
|
||||||
if (country === "US") return longitude < -100 ? "us-west" : "us-east";
|
// US regions
|
||||||
if (latitude < 0) return "south-america";
|
if (country === "US") {
|
||||||
if (longitude > 60) return "asia";
|
// For Alaska and Hawaii, default to US West
|
||||||
if (longitude > -10) return "europe";
|
if (latitude > 50 || latitude < 20) {
|
||||||
|
return "us-west";
|
||||||
|
}
|
||||||
|
|
||||||
|
// For continental US, use longitude boundary
|
||||||
|
return longitude < -110 ? "us-west" : "us-east";
|
||||||
|
}
|
||||||
|
|
||||||
|
// South America
|
||||||
|
if (
|
||||||
|
country === "AR" ||
|
||||||
|
country === "BO" ||
|
||||||
|
country === "BR" ||
|
||||||
|
country === "CL" ||
|
||||||
|
country === "CO" ||
|
||||||
|
country === "EC" ||
|
||||||
|
country === "GY" ||
|
||||||
|
country === "PE" ||
|
||||||
|
country === "PY" ||
|
||||||
|
country === "SR" ||
|
||||||
|
country === "UY" ||
|
||||||
|
country === "VE"
|
||||||
|
) {
|
||||||
|
return "south-america";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Asia
|
||||||
|
if (
|
||||||
|
longitude > 60 &&
|
||||||
|
(country === "CN" ||
|
||||||
|
country === "JP" ||
|
||||||
|
country === "KR" ||
|
||||||
|
country === "IN" ||
|
||||||
|
country === "ID" ||
|
||||||
|
country === "TH" ||
|
||||||
|
country === "VN" ||
|
||||||
|
country === "PH" ||
|
||||||
|
country === "MY" ||
|
||||||
|
country === "SG" ||
|
||||||
|
country === "TW" ||
|
||||||
|
country === "HK")
|
||||||
|
) {
|
||||||
|
return "asia";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Europe
|
||||||
|
if (
|
||||||
|
longitude > -10 &&
|
||||||
|
(country === "GB" ||
|
||||||
|
country === "FR" ||
|
||||||
|
country === "DE" ||
|
||||||
|
country === "IT" ||
|
||||||
|
country === "ES" ||
|
||||||
|
country === "NL" ||
|
||||||
|
country === "BE" ||
|
||||||
|
country === "CH" ||
|
||||||
|
country === "AT" ||
|
||||||
|
country === "SE" ||
|
||||||
|
country === "NO" ||
|
||||||
|
country === "DK" ||
|
||||||
|
country === "FI" ||
|
||||||
|
country === "PL" ||
|
||||||
|
country === "CZ" ||
|
||||||
|
country === "SK" ||
|
||||||
|
country === "HU" ||
|
||||||
|
country === "RO" ||
|
||||||
|
country === "BG" ||
|
||||||
|
country === "GR" ||
|
||||||
|
country === "PT" ||
|
||||||
|
country === "IE" ||
|
||||||
|
country === "IS")
|
||||||
|
) {
|
||||||
|
return "europe";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default to US East for other regions
|
||||||
return "us-east";
|
return "us-east";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -61,7 +133,7 @@ export async function detectRegion(): Promise<Region> {
|
||||||
if (
|
if (
|
||||||
store.region &&
|
store.region &&
|
||||||
store.lastChecked &&
|
store.lastChecked &&
|
||||||
Date.now() - store.lastChecked < ONE_DAY_MS
|
Math.floor(Date.now() / 1000) - store.lastChecked < 86400 // 1 day in seconds
|
||||||
) {
|
) {
|
||||||
return store.region;
|
return store.region;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue