// Module ID: 10669 // Function ID: 10670 // Name: MessagesHooks // Dependencies: [32, 19, 17, 9609, 9384, 5965, 2087, 5108, 558, 576, 12, 504, 568, 6853, 1388, 7423, 10670, 9383, 10671, 2] // Exports: useChatUpdatesQueue, useMessagesLifecycle // Module 10669 (MessagesHooks) import _modDef12 from "module_12" /* 12 */; import react_native from "react-native" /* 17 */; import shallowEqual from "shallowEqual" /* 568 */; import react2 from "react" /* 576 */; import ApplicationActionCreatorsDefault from "ApplicationActionCreators" /* 6853 */; import InviteTypeUtils from "InviteTypeUtils" /* 7423 */; import messages_MessagesUtils from "messages/MessagesUtils" /* 9383 */; import useChatBottomManagerUIStore from "useChatBottomManagerUIStore" /* 9384 */; import ChatUpdatesQueueDefault from "ChatUpdatesQueue" /* 10671 */; import _slicedToArray from "_slicedToArray" /* 32 */; import react from "react" /* 19 */; import VoiceChannelStartTimeStore from "VoiceChannelStartTimeStore" /* 9609 */; import GuildAvailabilityStore from "GuildAvailabilityStore" /* 5965 */; import GuildStore from "GuildStore" /* 2087 */; import PresenceStore from "PresenceStore" /* 5108 */; import ReactCompilerGating_mod from "ReactCompilerGating" /* 558 */; import size from "module_2" /* 2 */; const require = globalThis.__r; let _require, dependencyMap, set; let tmp; const GlobalUtils = tmp(1388); const findNodeHandle = react_native.findNodeHandle; let closure_7 = useChatBottomManagerUIStore.updateShouldShowJumpToPresentButton; let ReactCompilerGating = ReactCompilerGating_mod; let tmp2 = ReactCompilerGating.isReactCompilerEnabled() ? (function useMessageAuthorActivities(arr) { let closure_0; let tmp6; let tmp8; let tmp9; let tmp = _require; let obj = require("react"); const cResult = obj.c(6); if (cResult[0] !== arr) { let obj2 = {}; _require = obj2; const item = arr.forEach((author) => { const tmp = null != author.author && null != author.activity; if (tmp) { closure_0[author.author.id] = null; } }); cResult[0] = arr; cResult[1] = obj2; } else { _require = cResult[1]; } obj2 = tmp4; if (cResult[2] === Symbol.for("react.memo_cache_sentinel")) { const items = [PresenceStore]; cResult[2] = items; tmp6 = items; } else { tmp6 = cResult[2]; } if (cResult[3] !== tmp4) { const fn = function o() { let primaryActivity; const obj = _modDef12; return obj.mapValues(obj2, (arg0, arg1) => primaryActivity.getPrimaryActivity(arg1)); }; const items1 = [tmp4]; cResult[3] = tmp4; cResult[4] = fn; cResult[5] = items1; tmp9 = items1; tmp8 = fn; } else { tmp8 = cResult[4]; tmp9 = cResult[5]; } const tmpResult = tmp(504); return tmpResult.useStateFromStoresObject(tmp6, tmp8, tmp9); }) : (function useMessageAuthorActivities(arg0) { let closure_0; _require = arg0; const items = [arg0]; const memo = react.useMemo(() => { const obj = {}; const item = closure_0.forEach((author) => { const tmp = null != author.author && null != author.activity; if (tmp) { obj[author.author.id] = null; } }); return obj; }, items); let obj = require("get initialized"); const items1 = [PresenceStore]; const items2 = [memo]; return obj.useStateFromStoresObject(items1, () => { let primaryActivity; const obj = _modDef12; return obj.mapValues(memo, (arg0, arg1) => primaryActivity.getPrimaryActivity(arg1)); }, items2); }); ReactCompilerGating = ReactCompilerGating_mod; let tmp3 = ReactCompilerGating.isReactCompilerEnabled() ? (function useFetchMessageApplications(arr) { let ref; let tmp10; let tmp11; let tmp12; let tmp7; let obj = require("react"); const cResult = obj.c(8); if (cResult[0] !== arr) { const _Set = Set; const self = this; const self2 = this; set = new Set(); _require = set; const item = arr.forEach((applicationId) => { const tmp = null != applicationId.applicationId && null == applicationId.application; if (tmp) { set.add(applicationId.applicationId); } }); cResult[0] = arr; cResult[1] = set; } else { _require = cResult[1]; } if (cResult[2] !== tmp2) { const _Array = Array; arr = Array.from(tmp2); cResult[2] = tmp2; cResult[3] = arr; tmp7 = arr; } else { tmp7 = cResult[3]; } const current = tmp7; if (cResult[4] === Symbol.for("react.memo_cache_sentinel")) { const items = []; cResult[4] = items; tmp10 = items; } else { tmp10 = cResult[4]; } dependencyMap = react.useRef(tmp10); const obj2 = react; if (cResult[5] !== tmp7) { const fn = function f() { const obj = shallowEqual; const tmp4 = ref; if (!obj.areArraysShallowEqual(current, ref.current)) { const fetchApplications = ApplicationActionCreatorsDefault.fetchApplications; ApplicationActionCreatorsDefault; const arr = _modDef12(current); const found = arr.filter(GlobalUtils.isNotNullish); const iter = found.uniq(); const applications = fetchApplications(iter.value(), false); tmp4.current = current; } }; const items1 = [tmp7]; cResult[5] = tmp7; cResult[6] = fn; cResult[7] = items1; tmp12 = items1; tmp11 = fn; } else { tmp11 = cResult[6]; tmp12 = cResult[7]; } const effect = obj2.useEffect(tmp11, tmp12); }) : (function useFetchMessageApplications(arg0) { let closure_0 = arg0; const items = [arg0]; const memo = react.useMemo(() => { set = new Set(); const item = closure_0.forEach((applicationId) => { const tmp = null != applicationId.applicationId && null == applicationId.application; if (tmp) { set.add(applicationId.applicationId); } }); return Array.from(set); }, items); const ref = react.useRef([]); const items1 = [memo]; const effect = react.useEffect(() => { const obj = shallowEqual; const tmp4 = ref; if (!obj.areArraysShallowEqual(memo, ref.current)) { const fetchApplications = ApplicationActionCreatorsDefault.fetchApplications; ApplicationActionCreatorsDefault; const arr = _modDef12(memo); const found = arr.filter(GlobalUtils.isNotNullish); const iter = found.uniq(); const applications = fetchApplications(iter.value(), false); tmp4.current = memo; } }, items1); }); ReactCompilerGating = ReactCompilerGating_mod; let tmp4 = ReactCompilerGating.isReactCompilerEnabled() ? (function useFetchVoiceChannelInviteStartTimes(arg0) { let closure_0; let first; let tmp7; let tmp8; _require = arg0; let obj = require("react"); const cResult = obj.c(8); const tmp = _require; if (cResult[0] === Symbol.for("react.memo_cache_sentinel")) { let tmp5 = GuildStore; const items = [GuildStore, ]; let tmp6 = GuildAvailabilityStore; items[1] = GuildAvailabilityStore; cResult[0] = items; first = items; } else { first = cResult[0]; } if (cResult[1] !== arg0) { const fn = function o() { const obj = {}; const values = closure_0.values(); const iter = values[Symbol.iterator](); const nextResult = iter.next(); while (iter !== undefined) { let tmp3 = nextResult; if (null != nextResult.guild) { let obj2 = InviteTypeUtils; if (obj2.isVoiceChannelInvite(tmp3)) { let id = tmp3.guild.id; let tmp8 = id; let tmp10 = null != GuildStore.getGuild(id); if (tmp10) { tmp10 = !GuildAvailabilityStore.isUnavailable(tmp8); } obj[id] = tmp10; } } continue; } return obj; }; const items1 = [arg0]; cResult[1] = arg0; cResult[2] = fn; cResult[3] = items1; tmp8 = items1; tmp7 = fn; } else { tmp7 = cResult[2]; tmp8 = cResult[3]; } const tmpResult = tmp(504); const stateFromStoresObject = tmpResult.useStateFromStoresObject(first, tmp7, tmp8); if (cResult[4] === arg0) { let tmp10; let tmp11; if (cResult[5] === stateFromStoresObject) { tmp10 = cResult[6]; tmp11 = cResult[7]; } let tmp12 = react; const effect = react.useEffect(tmp10, tmp11); } const fn2 = function v() { const values = closure_0.values(); const iter = values[Symbol.iterator](); const nextResult = iter.next(); while (iter !== undefined) { let tmp3 = nextResult; if (null != nextResult.guild) { let tmp4 = require; let obj = InviteTypeUtils; if (obj.isVoiceChannelInvite(tmp3)) { let id = tmp3.guild.id; let tmp8 = id; let result = true !== stateFromStoresObject[id]; if (!result) { result = VoiceChannelStartTimeStore.hasRequestedStartTimes(tmp8); } if (!result) { let tmp4Result = tmp4(10670); let channelInfo = tmp4Result.fetchChannelInfo(tmp8); } } } continue; } }; const items2 = [arg0, stateFromStoresObject]; cResult[4] = arg0; cResult[5] = stateFromStoresObject; cResult[6] = fn2; cResult[7] = items2; tmp11 = items2; tmp10 = fn2; }) : (function useFetchVoiceChannelInviteStartTimes(arg0) { let closure_0; _require = arg0; let obj = require("get initialized"); const items = [GuildStore, GuildAvailabilityStore]; const items1 = [arg0]; const stateFromStoresObject = obj.useStateFromStoresObject(items, () => { const obj = {}; const values = closure_0.values(); const iter = values[Symbol.iterator](); const nextResult = iter.next(); while (iter !== undefined) { let tmp3 = nextResult; if (null != nextResult.guild) { let obj2 = InviteTypeUtils; if (obj2.isVoiceChannelInvite(tmp3)) { let id = tmp3.guild.id; let tmp8 = id; let tmp10 = null != GuildStore.getGuild(id); if (tmp10) { tmp10 = !GuildAvailabilityStore.isUnavailable(tmp8); } obj[id] = tmp10; } } continue; } return obj; }, items1); const items2 = [arg0, stateFromStoresObject]; const effect = react.useEffect(() => { const values = closure_0.values(); const iter = values[Symbol.iterator](); const nextResult = iter.next(); while (iter !== undefined) { let tmp3 = nextResult; if (null != nextResult.guild) { let tmp4 = require; let obj = InviteTypeUtils; if (obj.isVoiceChannelInvite(tmp3)) { let id = tmp3.guild.id; let tmp8 = id; let result = true !== stateFromStoresObject[id]; if (!result) { result = VoiceChannelStartTimeStore.hasRequestedStartTimes(tmp8); } if (!result) { let tmp4Result = tmp4(10670); let channelInfo = tmp4Result.fetchChannelInfo(tmp8); } } } continue; } }, items2); }); ReactCompilerGating = ReactCompilerGating_mod; let tmp5 = ReactCompilerGating.isReactCompilerEnabled() ? (function useScrollState() { let closure_129_0; let first; let tmp4; let tmp5; let tmp6; let obj = react2; const cResult = obj.c(4); if (cResult[0] === Symbol.for("react.memo_cache_sentinel")) { const obj2 = { animated: false, hasHandledScroll: false, isAtBottom: false, isNearBottom: false, isNearTop: false, decelerating: false, dragging: false, hasMoreMessagesAfterForLastUpdate: false, _loaded: false }; cResult[0] = obj2; first = obj2; } else { first = cResult[0]; } [tmp4, closure_129_0] = react.useState(first); _slicedToArray(react.useState(first), 2); if (cResult[1] === Symbol.for("react.memo_cache_sentinel")) { const fn = function o(arg0) { let closure_0 = arg0; closure_1_0((arg0) => { const obj = {}; const merged = Object.assign(arg0); const merged1 = Object.assign(closure_0); return obj; }); }; cResult[1] = fn; tmp5 = fn; } else { tmp5 = cResult[1]; } if (cResult[2] !== tmp4) { const items = [tmp4, tmp5]; cResult[2] = tmp4; cResult[3] = items; tmp6 = items; } else { tmp6 = cResult[3]; } return tmp6; }) : (function useScrollState() { const tmp = _slicedToArray(react.useState({ animated: false, hasHandledScroll: false, isAtBottom: false, isNearBottom: false, isNearTop: false, decelerating: false, dragging: false, hasMoreMessagesAfterForLastUpdate: false, _loaded: false }), 2); let closure_0 = tmp[1]; const items = [ tmp[0], react.useCallback((arg0) => { closure_0 = arg0; closure_0((arg0) => { const obj = {}; const merged = Object.assign(arg0); const merged1 = Object.assign(closure_0); return obj; }); }, []) ]; return items; }); ReactCompilerGating = ReactCompilerGating_mod; let tmp6 = ReactCompilerGating.isReactCompilerEnabled() ? (function useMessagesState() { let tmp3; let tmp4; let tmp6; let tmp7; const obj = react2; const cResult = obj.c(3); [tmp3, tmp4] = react.useState(false); _slicedToArray(react.useState(false), 2); [tmp6, tmp7] = react.useState(false); _slicedToArray(react.useState(false), 2); if (cResult[0] === tmp6) { let tmp8; if (cResult[1] === tmp3) { tmp8 = cResult[2]; } return tmp8; } const obj2 = { shouldForceRender: tmp3, hasJumpedToOriginalPost: tmp6, setHasJumpedToOriginalPost: tmp7, setShouldForceRender: tmp4 }; cResult[0] = tmp6; cResult[1] = tmp3; cResult[2] = obj2; tmp8 = obj2; }) : (function useMessagesState() { let tmp2; let tmp3; [tmp2, tmp3] = react.useState(false); _slicedToArray(react.useState(false), 2); const tmp4 = _slicedToArray(react.useState(false), 2); return { shouldForceRender: tmp2, hasJumpedToOriginalPost: tmp4[0], setHasJumpedToOriginalPost: tmp4[1], setShouldForceRender: tmp3 }; }); let result = size.fileFinishedImporting("modules/messages/native/MessagesHooks.tsx"); export const useMessageAuthorActivities = tmp2; export const useFetchMessageApplications = tmp3; export const useFetchVoiceChannelInviteStartTimes = tmp4; export const useMessagesLifecycle = function useMessagesLifecycle(screenIndex) { let channelId; let isMessagesReady; let messages; let oldestUnreadMessageId; let require; let scrollToMessageId; let updateRows; ({ messages: require, isMessagesReady: importDefault, oldestUnreadMessageId: dependencyMap, channelId } = screenIndex); screenIndex = screenIndex.screenIndex; ({ updateRows: findNodeHandle, scrollToMessageId: VoiceChannelStartTimeStore } = screenIndex); const effect = screenIndex.useEffect(() => { const obj = messages_MessagesUtils; const obj2 = { messages: require, isMessagesReady: importDefault, oldestUnreadMessageId: dependencyMap, channelId, screenIndex, updateRows: findNodeHandle, scrollToMessageId: VoiceChannelStartTimeStore }; obj.syncMessageDisplay(obj2); const obj3 = messages_MessagesUtils; obj3.recordTimings(channelId, require); }, []); const items = [channelId, screenIndex]; const effect1 = screenIndex.useEffect(() => () => { closure_2_7(channelId, screenIndex, false); }, items); }; export const useScrollState = tmp5; export const useChatUpdatesQueue = function useChatUpdatesQueue(ref6, callback) { let closure_0 = ref6; let closure_1 = callback; const items = [ref6, callback]; const memo = react.useMemo(() => { let ref; const tmp = new ChatUpdatesQueueDefault(() => { let tmp2 = null; if (null !== ref.current) { tmp2 = findNodeHandle(tmp.current); } return tmp2; }, (arg0) => { callback(arg0); }); return tmp; }, items); const items1 = [memo]; const effect = react.useEffect(() => () => { memo.cleanup(); }, items1); return memo; }; export const useMessagesState = tmp6;