Files
discord-decomp/modules/parent_tools/hooks/useUserLinks.tsx
T
2026-11-01 12:12:55 +02:00

162 lines
6.9 KiB
TypeScript

// Metro module 6255 (f6256).
import { useMemo } from "react";
import UserStore from "../../../stores/UserStore";
import FamilyCenterStore from "../FamilyCenterStore";
import { UserLinkStatus, UserLinkType, FAMILY_CENTER_REQUEST_QR_CODE_URL, MAX_PARENT_TO_TEEN_ACTIVE_CONNECTIONS, MAX_TEEN_TO_PARENT_ACTIVE_CONNECTIONS, PENDING_LINK_REQUEST_TIMESTAMP_FORMATTER, ACCEPTED_LINK_REQUEST_TIMESTAMP_FORMATTER } from "../FamilyCenterConstants";
import { useStateFromStores, useStateFromStoresArray } from "../../../_bundle/defaultAreStatesEqual";
import useIsInAdultAgeGroup from "./useIsInAdultAgeGroup";
import { useSelectedTeenId } from "./useSelectedTeen";
import { formatUserActivityTimestamp, formatLinkTimestamp } from "../FamilyCenterUtils";
function $mk78094($env) {
return () => {
const r1 = $env;
return Object.values(r1[1]).filter($mk105016(r1)).sort((a, b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime()).map((item) => item.user_id).filter((item) => item != null);
};
}
function $mk78095($env) {
return () => $env[0].map($mk105020($env.$parent));
}
function $mk78096() {
return (a0) => a0 != null;
}
function $mk105016($env) {
return (a0) => a0 != null && a0.link_status === $env[0];
}
function $mk105020($env) {
return (a0) => $env[4].getUser(a0);
}
let $mk78093 = function() {
return () => FamilyCenterStore.getLinkedUsers();
};
let env3973 = {};
export function useUserIdsForLinkStatus(a0) {
let env15621;
const r1 = env15621 = {
$parent: env3973
};
env15621[0] = a0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15621[1] = stateFromStores3;
return useMemo($mk78094(r1), [stateFromStores3, a0]);
}
export function useUsersForLinkStatus(a0) {
let env15622;
let env15623;
const r1 = env15622 = {
$parent: env3973
};
const r5 = env15623 = {
$parent: env3973
};
env15623[0] = a0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15623[1] = stateFromStores3;
env15622[0] = useMemo($mk78094(r5), [stateFromStores3, a0]);
return useStateFromStoresArray([UserStore], $mk78095(r1)).filter($mk78096());
}
export function useActiveLinkUserIds() {
let env15624;
const ACTIVE = UserLinkStatus.ACTIVE;
const r8 = env15624 = {
$parent: env3973
};
env15624[0] = ACTIVE;
env15624[1] = void 0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15624[1] = stateFromStores3;
return useMemo($mk78094(r8), [stateFromStores3, ACTIVE]);
}
export function getActiveLinkUserIds() {
return Object.values(FamilyCenterStore.getLinkedUsers()).filter((item) => item != null && item.link_status === UserLinkStatus.ACTIVE).sort((a, b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime()).map((item) => item.user_id).filter((item) => item != null);
}
export function useActiveLinkUsers() {
let env15625;
let env15626;
const ACTIVE = UserLinkStatus.ACTIVE;
const r11 = env15625 = {
$parent: env3973
};
env15625[0] = void 0;
const r5 = env15626 = {
$parent: env3973
};
env15626[0] = ACTIVE;
env15626[1] = void 0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15626[1] = stateFromStores3;
env15625[0] = useMemo($mk78094(r5), [stateFromStores3, ACTIVE]);
return useStateFromStoresArray([UserStore], $mk78095(r11)).filter($mk78096());
}
export function useHasActiveLinks() {
let env15627;
const ACTIVE = UserLinkStatus.ACTIVE;
const r9 = env15627 = {
$parent: env3973
};
env15627[0] = ACTIVE;
env15627[1] = void 0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15627[1] = stateFromStores3;
return useMemo($mk78094(r9), [stateFromStores3, ACTIVE]).length > 0;
}
export function useHasActiveParentLinks() {
const stateFromStores = useStateFromStores([FamilyCenterStore], () => FamilyCenterStore.getLinkedUsers());
return useMemo(() => Object.values(stateFromStores).some((item) => item != null && item.link_status === UserLinkStatus.ACTIVE && item.link_type === UserLinkType.PARENT), [stateFromStores]);
}
export function useUserQRLinkUrl() {
const stateFromStores3 = useStateFromStores([FamilyCenterStore], () => FamilyCenterStore.getLinkCode());
const stateFromStores4 = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
return stateFromStores3 == null ? null : stateFromStores4 == null ? null : (0, FAMILY_CENTER_REQUEST_QR_CODE_URL)(stateFromStores4.id, stateFromStores3);
}
export function useHasMaxConnections() {
let env15629;
const isInAdultAgeGroup = useIsInAdultAgeGroup();
const ACTIVE = UserLinkStatus.ACTIVE;
const r12 = env15629 = {
$parent: env3973
};
env15629[0] = ACTIVE;
env15629[1] = void 0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15629[1] = stateFromStores3;
return useMemo($mk78094(r12), [stateFromStores3, ACTIVE]).length >= (isInAdultAgeGroup ? MAX_PARENT_TO_TEEN_ACTIVE_CONNECTIONS : MAX_TEEN_TO_PARENT_ACTIVE_CONNECTIONS);
}
export function usePendingRequestCount() {
const stateFromStores2 = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const stateFromStores3 = useStateFromStores([FamilyCenterStore], () => FamilyCenterStore.getLinkedUsers());
return stateFromStores2 == null ? 0 : Object.values(stateFromStores3).filter((item) => item != null && item.link_status === UserLinkStatus.PENDING && stateFromStores2.id !== item.requestor_id).length;
}
export function useRequiresParentalConsent(a0) {
const stateFromStores3 = useStateFromStores([FamilyCenterStore], () => FamilyCenterStore.getLinkedUsers());
let r14 = a0 != null;
if (r14) {
let r16 = stateFromStores3[a0]?.teen_requires_parental_consent;
if (r16 == null) {
r16 = false;
}
r14 = r16;
}
return r14;
}
export function useAcceptedRequestsCount() {
let env15631;
const ACTIVE = UserLinkStatus.ACTIVE;
const r8 = env15631 = {
$parent: env3973
};
env15631[0] = ACTIVE;
env15631[1] = void 0;
const stateFromStores3 = useStateFromStores([FamilyCenterStore], $mk78093());
env15631[1] = stateFromStores3;
return useMemo($mk78094(r8), [stateFromStores3, ACTIVE]).length;
}
export function useActivityWindowTimeStamp(c15632_0) {
const selectedTeenId = useSelectedTeenId();
const stateFromStores3 = useStateFromStores([FamilyCenterStore], () => selectedTeenId != null ? FamilyCenterStore.getRangeStartTimestamp() : null);
return stateFromStores3 != null ? formatUserActivityTimestamp(new Date(stateFromStores3).getTime(), () => c15632_0, 7) : null;
}
export function useLinkTimestampText(c15633_0, a1) {
const stateFromStores3 = useStateFromStores([FamilyCenterStore], () => FamilyCenterStore.getLinkTimestamp(c15633_0));
return stateFromStores3 != null ? formatLinkTimestamp(Date.parse(stateFromStores3), a1 === UserLinkStatus.PENDING ? PENDING_LINK_REQUEST_TIMESTAMP_FORMATTER : ACCEPTED_LINK_REQUEST_TIMESTAMP_FORMATTER) : null;
}