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

65 lines
2.8 KiB
TypeScript

// Metro module 9939 (f9940).
import { useState, useRef, useEffect } from "react";
import SavedMessagesStore from "./SavedMessagesStore";
import { SavedMessageSortTypes } from "./SavedMessagesTypes";
import useRefreshSavedMessages from "./useRefreshSavedMessages";
import { useStateFromStoresArray } from "../../_bundle/Module589";
import { isNotNullish } from "../../utils/GlobalUtils";
function $mk83579() {
return (a0) => a0.saveData;
}
const getSavedMessagesForType = function getSavedMessagesForType(a0) {
if (SavedMessageSortTypes.BOOKMARK === a0) {
return SavedMessagesStore.getMessageBookmarks();
}
if (SavedMessageSortTypes.REMINDER === a0) {
return SavedMessagesStore.getMessageReminders();
}
return SavedMessagesStore.getSavedMessages();
};
export default function useSavedMessagesForPage(r3 = SavedMessageSortTypes.ALL) {
let state, setState, ref;
const ALL = r3;
state = void 0;
setState = void 0;
ref = void 0;
[state, setState] = useState(() => (SavedMessageSortTypes.BOOKMARK === ALL ? SavedMessagesStore.getMessageBookmarks() : SavedMessageSortTypes.REMINDER === ALL ? SavedMessagesStore.getMessageReminders() : SavedMessagesStore.getSavedMessages()).map($mk83579()));
ref = useRef(SavedMessagesStore.getIsStale());
useEffect(() => {
let lastChanged;
const handleChange2 = function handleChange() {
const lastChanged2 = SavedMessagesStore.getLastChanged();
if (lastChanged !== lastChanged2) {
lastChanged = lastChanged2;
if (ref.current && !SavedMessagesStore.getIsStale()) {
ref.current = false;
setState((SavedMessageSortTypes.BOOKMARK === ALL ? SavedMessagesStore.getMessageBookmarks() : SavedMessageSortTypes.REMINDER === ALL ? SavedMessagesStore.getMessageReminders() : SavedMessagesStore.getSavedMessages()).map($mk83579()));
return void 0;
}
setState((prevState) => {
const r0 = [...prevState];
const map = new Map(getSavedMessagesForType(ALL).map((item) => [item.saveData.messageId, item]));
for (const item of prevState) {
if (map.has(item.messageId)) {
map.delete(item.messageId);
} else {
r0.splice(r0.indexOf(item), 1);
}
}
for (const item2 of map.values()) {
r0.push(item2.saveData);
}
return r0;
});
}
};
lastChanged = SavedMessagesStore.getLastChanged();
SavedMessagesStore.addChangeListener(handleChange2);
return () => {
SavedMessagesStore.removeChangeListener(handleChange2);
};
}, [ALL]);
useRefreshSavedMessages();
return useStateFromStoresArray([SavedMessagesStore], () => state.map((item) => SavedMessagesStore.getSavedMessage(item.channelId, item.messageId)).filter(isNotNullish));
};