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

171 lines
5.0 KiB
TypeScript

// Metro module 15356 (f15357).
import { useEffect } from "react";
import ICYMIStore from "./ICYMIStore";
import { ICYMIItemTypes } from "./ICYMITypes";
import { useStateFromStores, useStateFromStoresObject } from "../../_bundle/Module589";
import ICYMIActionCreators from "./ICYMIActionCreators";
const createItem = function createItem(a0, a1, a2) {
const type = a1.type;
if (ICYMIItemTypes.MESSAGE === type) {
return a1.message.id === a1.message.channel_id && a1.threadChannel != null ? {
id: a0.id,
timestamp: Date.now(),
channelType: a0.data.channel_type,
data: {
kind: "forumThread",
message: a1.message,
threadChannel: a1.threadChannel
},
score: a0.score,
debugScore: JSON.stringify(a0.score_components),
unread: a2
} : {
id: a0.id,
timestamp: Date.now(),
channelType: a0.data.channel_type,
data: {
kind: "message",
message: a1.message,
mentioned: a0.data.has_mention,
messageContext: a0.data.message_context
},
score: a0.score,
debugScore: JSON.stringify(a0.score_components),
unread: a2
};
}
if (ICYMIItemTypes.ACTIVITY !== type && ICYMIItemTypes.CUSTOM_STATUS !== type) {
if (ICYMIItemTypes.GUILD_EVENT === type) {
return {
id: a0.id,
timestamp: Date.now(),
data: {
kind: "guildEvent",
eventId: a1.event_id
},
score: a0.score,
debugScore: JSON.stringify(a0.score_components),
unread: a2
};
}
if (ICYMIItemTypes.RECOMMENDED_GUILDS === type) {
return {
id: a0.id,
timestamp: Date.now(),
data: {
kind: "recommendedGuilds"
},
score: a0.score,
debugScore: JSON.stringify(a0.score_components),
unread: a2
};
}
return null;
}
return {
id: a0.id,
timestamp: Date.now(),
data: {
kind: "contentInventory",
content: a1.activity
},
score: a0.score,
debugScore: JSON.stringify(a0.score_components),
unread: a2
};
};
export default function useICYMIItems() {
let stateFromStores;
const stateFromStores2 = useStateFromStores([ICYMIStore], () => ICYMIStore.getUnreadDisplayItems());
stateFromStores = useStateFromStores([ICYMIStore], () => ICYMIStore.getReadDisplayItems());
const stateFromStores3 = useStateFromStores([ICYMIStore], () => ICYMIStore.getNextIndexToHydrate());
const stateFromStoresObject = useStateFromStoresObject([ICYMIStore], () => ICYMIStore.getHydratedItems());
const stateFromStores4 = useStateFromStores([ICYMIStore], () => ICYMIStore.getMissingItems());
useEffect(() => {
let c28007_0 = Date.now() + stateFromStores.length;
ICYMIActionCreators.ackGravityItems(stateFromStores.map((stateFromStore) => {
const timestamp = +c28007_0;
c28007_0 = timestamp - 1;
return {
id: stateFromStore.id,
timestamp
};
}, true));
}, [stateFromStores]);
const unreadItems = [];
const r8 = 0 < stateFromStores2.length;
let r3 = 0;
if (r8) {
const r7 = 0 >= stateFromStores3;
let r2 = 0;
let r0 = 0;
r3 = 0;
if (!r7) {
do {
const r56 = stateFromStores2[r2];
const r58 = stateFromStores4[r56.id];
const r5 = r2;
const r1 = r0;
if (!r58) {
let r60 = stateFromStoresObject[r56.id];
if (r60 == null && r56.type === ICYMIItemTypes.MESSAGE && r56.data.message_context?.reference_message_id != null) {
r60 = stateFromStoresObject[r56.data.message_id];
}
if (r60 != null) {
const item = createItem(r56, r60, true);
if (item != null) {
unreadItems.push(item);
}
}
}
const r78 = r1 + 1;
const r79 = r5 + 1;
const length = stateFromStores2.length;
r3 = r78;
if (!(r79 < length)) {
break;
}
r2 = r79;
r0 = r78;
r3 = r0;
} while (!(r3 >= stateFromStores3));
}
}
const readItems = [];
if (0 < stateFromStores.length) {
const r83 = r3 >= stateFromStores3;
let r87 = 0;
if (!r83) {
do {
const r88 = stateFromStores[r87];
const r90 = stateFromStores4[r88.id];
const r91 = r87;
const r92 = r3;
if (!r90) {
let r94 = stateFromStoresObject[r88.id];
if (r94 == null && r88.type === ICYMIItemTypes.MESSAGE && r88.data.message_context?.reference_message_id != null) {
r94 = stateFromStoresObject[r88.data.message_id];
}
if (r94 != null) {
const item2 = createItem(r88, r94, false);
if (item2 != null) {
readItems.push(item2);
}
}
}
const r112 = r91 + 1;
if (!(r112 < stateFromStores.length)) {
break;
}
r3 = r92 + 1;
r87 = r112;
} while (!(r3 >= stateFromStores3));
}
}
return {
unreadItems,
readItems,
allUnreadItemsHydrated: stateFromStores3 >= stateFromStores2.length
};
};