44 lines
1.6 KiB
TypeScript
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"
|
|
};
|
|
}
|