Files
discord-decomp/stores/RTCRegionStore.tsx
T
2026-11-01 12:12:55 +02:00

80 lines
2.2 KiB
TypeScript

// Metro module 4282 (f4283).
import Durations from "../utils/Durations";
import Module589 from "../_bundle/Module589";
import Module12 from "../_bundle/Module12";
import Dispatcher from "../Dispatcher";
let c2521_2 = {
preferredRegions: null,
lastTestTimestamp: null,
lastGeoRankedOrder: null
};
let c2521_3 = c2521_2;
let c2521_4 = 1 * Durations.Millis.HOUR;
class RTCRegionStore extends Module589.DeviceSettingsStore {
static displayName = "RTCRegionStore";
static persistKey = "RTCRegionStore";
static migrations = [(a0) => {
if (a0.preferredRegion) {
a0.preferredRegions = [a0.preferredRegion];
} else {
a0.preferredRegions = null;
}
delete a0["preferredRegion"];
return a0;
}];
initialize(a0) {
c2521_3 = a0 == null ? c2521_2 : a0;
}
shouldIncludePreferredRegion() {
return c2521_3.preferredRegions != null;
}
getPreferredRegion() {
const preferredRegions = c2521_3.preferredRegions;
let r5 = preferredRegions == null ? void 0 : preferredRegions[0];
if (r5 == null) {
r5 = null;
}
return r5;
}
getPreferredRegions() {
return c2521_3.preferredRegions;
}
getRegion(a0) {
if (a0 != null) {
return a0.substr(0, a0.search(/\d/));
}
}
getUserAgnosticState() {
return c2521_3;
}
shouldPerformLatencyTest(a0) {
let r1 = c2521_3.preferredRegions === null;
if (!r1) {
let lastGeoRankedOrder = c2521_3.lastGeoRankedOrder;
if (lastGeoRankedOrder == null) {
lastGeoRankedOrder = [];
}
r1 = !Module12.isEqual(a0, lastGeoRankedOrder);
}
if (!r1) {
const r19 = Date.now();
let lastTestTimestamp = c2521_3.lastTestTimestamp;
if (lastTestTimestamp == null) {
lastTestTimestamp = 0;
}
r1 = r19 - lastTestTimestamp >= c2521_4;
}
return r1;
}
}
const rTCRegionStore = new RTCRegionStore(Dispatcher, {
RTC_LATENCY_TEST_COMPLETE: function handleCompletedRTCLatencyTest(a0) {
if (a0.latencyRankedRegions.length > 0) {
c2521_3.lastGeoRankedOrder = a0.geoRankedRegions;
c2521_3.preferredRegions = a0.latencyRankedRegions;
}
c2521_3.lastTestTimestamp = Date.now();
}
});
export default rTCRegionStore;