Files
discord-decomp/modules/harvester/HarvesterUtils.tsx
T
2026-11-01 12:12:55 +02:00

44 lines
1.6 KiB
TypeScript

// Metro module 13890 (f13891).
import { useState, useRef, useEffect } from "react";
import UserStore from "../../stores/UserStore";
import DataHarvestStore from "./DataHarvestStore";
import { REQUEST_DATA_LIMIT_MS } from "./HarvesterConstants";
import { useStateFromStores } from "../../_bundle/Module589";
export function harvestDisabled(a0, a1) {
const verified = a1.verified;
return verified ? !!a1.isStaff() || a0 != null && REQUEST_DATA_LIMIT_MS > Date.now() - new Date(a0.created_at).getTime() : !verified;
}
export function useRequestHarvestStatus() {
let c20773_1, ref;
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const stateFromStores2 = useStateFromStores([DataHarvestStore], () => DataHarvestStore.harvestType);
const [state, setState] = useState(() => Date.now());
const r35 = stateFromStores2 != null ? new Date(stateFromStores2.created_at).getTime() + REQUEST_DATA_LIMIT_MS : state;
c20773_1 = r35;
ref = useRef(null);
useEffect(() => {
const r8 = c20773_1 - Date.now();
if (r8 > 0) {
const current = setTimeout(() => setState(Date.now()), r8);
clearTimeout(ref.current);
ref.current = current;
}
return () => clearTimeout(ref.current);
}, [r35]);
return stateFromStores?.verified ? stateFromStores.isStaff() ? {
allowed: false,
reason: "staff"
} : stateFromStores2 == null ? {
allowed: true
} : r35 > state ? {
allowed: false,
reason: "rate_limited",
nextAllowed: new Date(r35)
} : {
allowed: true
} : {
allowed: false,
reason: "not_verified"
};
}