65 lines
2.8 KiB
TypeScript
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));
|
|
};
|