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

43 lines
2.3 KiB
TypeScript

// Metro module 12033 (f12034).
import { useMemo } from "react";
import ContentInventoryOutboxStore from "../../content_inventory/ContentInventoryOutboxStore";
import PresenceStore from "../../../stores/PresenceStore";
import useDiscoverableApplicationStream from "../../blocking/useDiscoverableApplicationStream";
import { useStateFromStores } from "../../../_bundle/Module589";
import { getUserProfileLiveActivities } from "../utils/UserProfileStackedActivityCardUtils";
import * as _utils from "../../content_inventory/utils";
import { isListenedSessionEntry, isWatchedMediaEntry, isRecentActivityEntry } from "../../content_inventory/ContentInventoryTypes";
import { isMatchingListeningActivity, isMatchingWatchActivity } from "../../content_inventory/matchUtils";
const live = [];
const recent = [];
export default function useUserProfileActivity(a0) {
let stateFromStores2;
const discoverableApplicationStream = useDiscoverableApplicationStream(a0);
const stateFromStores = useStateFromStores([PresenceStore], () => PresenceStore.getActivities(a0));
stateFromStores2 = useStateFromStores([ContentInventoryOutboxStore], () => ContentInventoryOutboxStore.getUserOutbox(a0));
const memo = useMemo(() => {
let live2 = getUserProfileLiveActivities(stateFromStores);
const userProfileLiveActivities = live2;
let recent2 = stateFromStores2 == null ? void 0 : stateFromStores2.entries.filter((entry) => {
const isEntryLive = _utils.isEntryLive(entry);
return isEntryLive ? !isEntryLive : isListenedSessionEntry(entry) ? entry.extra.entries.length > 0 && !userProfileLiveActivities.some((userProfileLiveActivity) => userProfileLiveActivity != null && isMatchingListeningActivity(entry, userProfileLiveActivity)) : isWatchedMediaEntry(entry) ? !userProfileLiveActivities.some((userProfileLiveActivity) => userProfileLiveActivity != null && isMatchingWatchActivity(entry, userProfileLiveActivity)) : isRecentActivityEntry(entry);
});
if (userProfileLiveActivities.length === 0) {
live2 = live;
}
if (!(recent2 != null && recent2.length !== 0)) {
recent2 = recent;
}
return {
live: live2,
recent: recent2
};
}, [stateFromStores, stateFromStores2?.entries]);
return {
live: memo.live,
recent: memo.recent,
stream: discoverableApplicationStream,
outbox: stateFromStores2
};
};