decord/beta/source/modules/threads/ThreadBrowserHooks.tsx
2026-10-01 14:13:23 +00:00

235 lines
9.6 KiB
TypeScript

// Module ID: 12277
// Function ID: 12278
// Name: ThreadBrowserHooks
// Dependencies: [32, 19, 12278, 2045, 4469, 4851, 5819, 7185, 4471, 1085, 7200, 504, 12, 1370, 11, 7184, 7324, 2]
// Exports: useActiveGuildThreads, useActiveThreadIds, useActiveThreads, useArchivedThreads, useTrackThreadBrowserTab
// Module 12277 (ThreadBrowserHooks)
import _modDef12 from "module_12" /* 12 */;
import Constants from "Constants" /* 1085 */;
import GlobalUtils from "GlobalUtils" /* 1370 */;
import ThreadActionCreatorsDefault from "ThreadActionCreators" /* 7184 */;
import ForumActionCreatorsDefault from "ForumActionCreators" /* 7324 */;
import ReportToModChannelStore from "ReportToModChannelStore" /* 12278 */;
import _slicedToArray from "_slicedToArray" /* 32 */;
import react_mod from "react" /* 19 */;
import ChannelStore from "ChannelStore" /* 2045 */;
import PermissionStore from "PermissionStore" /* 4469 */;
import ReadStateStore from "ReadStateStore" /* 4851 */;
import ActiveThreadsStore from "ActiveThreadsStore" /* 5819 */;
import ArchivedThreadsStore from "ArchivedThreadsStore" /* 7185 */;
import JoinedThreadsStore from "JoinedThreadsStore" /* 4471 */;
import size from "module_2" /* 2 */;
const require = globalThis.__r;
let _require, dependencyMap;
let react = react_mod;
let closure_5 = ReportToModChannelStore.useShouldShowResolvedFlagsForChannel;
const Permissions = Constants.Permissions;
let result = size.fileFinishedImporting("modules/threads/ThreadBrowserHooks.tsx");
export const useTrackThreadBrowserTab = function useTrackThreadBrowserTab() {
const effect = react.useEffect(() => {
const obj = require("ThreadUtils");
const result = obj.trackThreadBrowserTab();
}, []);
};
export const useActiveThreadIds = function useActiveThreadIds(arg0) {
let closure_0;
_require = arg0;
const items = [PermissionStore, ActiveThreadsStore, ChannelStore];
const items1 = [, ];
({ guild_id: arr2[0], id: arr2[1] } = arg0);
const obj = require("get initialized");
const stateFromStoresArray = obj.useStateFromStoresArray(items, () => {
let channel;
const tmp = _modDef12;
const tmpResult = tmp(threadsForParent.getThreadsForParent(closure_0.guild_id, closure_0.id));
const values = tmpResult.values();
const mapped = values.map((id) => channel.getChannel(id.id));
const found = mapped.filter(memo(dependencyMap[13]).isNotNullish);
const found1 = found.filter((item) => closure_1_7.can(constants.VIEW_CHANNEL, item));
const iter = found1.map((id) => id.id);
return iter.value();
}, items1);
const items2 = [stateFromStoresArray];
return react.useMemo(() => {
const obj = _modDef12(stateFromStoresArray);
const sorted = obj.sort((arg0, arg1) => {
const compare = stateFromStoresArray(closure_1_2[14]).compare;
stateFromStoresArray(closure_1_2[14]);
const lastMessageIdResult = closure_1_8.lastMessageId(arg0);
return compare(lastMessageIdResult, closure_1_8.lastMessageId(arg1));
});
const iter = sorted.reverse();
return iter.value();
}, items2);
};
export const useActiveThreads = function useActiveThreads(channel) {
let memo;
let threadsForParent;
let closure_0 = channel;
let obj = memo(504);
const items = [PermissionStore, ActiveThreadsStore, ChannelStore];
const items1 = [, ];
({ guild_id: arr2[0], id: arr2[1] } = channel);
const stateFromStoresArray = obj.useStateFromStoresArray(items, () => {
let channel;
const tmp = _modDef12;
const tmpResult = tmp(threadsForParent.getThreadsForParent(closure_0.guild_id, closure_0.id));
const values = tmpResult.values();
const mapped = values.map((id) => channel.getChannel(id.id));
const found = mapped.filter(memo(dependencyMap[13]).isNotNullish);
const found1 = found.filter((item) => closure_1_7.can(constants.VIEW_CHANNEL, item));
const iter = found1.map((id) => id.id);
return iter.value();
}, items1);
const items2 = [stateFromStoresArray];
memo = react.useMemo(() => {
const obj = _modDef12(stateFromStoresArray);
const sorted = obj.sort((arg0, arg1) => {
const compare = stateFromStoresArray(closure_1_2[14]).compare;
stateFromStoresArray(closure_1_2[14]);
const lastMessageIdResult = closure_1_8.lastMessageId(arg0);
return compare(lastMessageIdResult, closure_1_8.lastMessageId(arg1));
});
const iter = sorted.reverse();
return iter.value();
}, items2);
const items3 = [JoinedThreadsStore];
const items4 = [memo];
const obj2 = memo(504);
const tmp3 = _slicedToArray(obj2.useStateFromStores(items3, () => {
const obj = _modDef12;
return obj.partition(memo, (id) => closure_1_11.hasJoined(id));
}, items4, memo(504).statesWillNeverBeEqual), 2);
return { joinedThreadIds: tmp3[0], unjoinedThreadIds: tmp3[1] };
};
export const useActiveGuildThreads = function useActiveGuildThreads(arg0) {
let closure_0;
_require = arg0;
let obj = require("get initialized");
const items = [PermissionStore, ActiveThreadsStore, ChannelStore];
const items1 = [arg0];
const stateFromStoresArray = obj.useStateFromStoresArray(items, () => {
let channel;
const tmp = _modDef12;
const tmpResult = tmp(ActiveThreadsStore.getThreadsForGuild(closure_0));
const values = tmpResult.values();
const mapped = values.map((item) => {
const obj = stateFromStoresArray(closure_1_2[12]);
return obj.values(item);
});
const flattenResult = mapped.flatten();
const mapped1 = flattenResult.map((id) => channel.getChannel(id.id));
const found = mapped1.filter(GlobalUtils.isNotNullish);
const found1 = found.filter((item) => closure_1_7.can(constants.VIEW_CHANNEL, item));
const iter = found1.map((id) => id.id);
return iter.value();
}, items1);
const items2 = [stateFromStoresArray];
return react.useMemo(() => {
const obj = _modDef12(stateFromStoresArray);
const sorted = obj.sort((arg0, arg1) => {
const compare = stateFromStoresArray(closure_1_2[14]).compare;
stateFromStoresArray(closure_1_2[14]);
const lastMessageIdResult = closure_1_8.lastMessageId(arg0);
return compare(lastMessageIdResult, closure_1_8.lastMessageId(arg1));
});
const iter = sorted.reverse();
return iter.value();
}, items2);
};
export const useArchivedThreads = function useArchivedThreads(channel, LATEST_ACTIVITY, loadMore, MATCH_SOME) {
let callback;
let items4;
let loading;
let nextOffset;
let obj3;
let showResolvedFlags;
let tagFilter;
_require = channel;
const sortOrder = LATEST_ACTIVITY;
dependencyMap = loadMore;
const tagSetting = MATCH_SOME;
const result = channel.isModeratorReportChannel();
react = result;
showResolvedFlags = showResolvedFlags(channel.id).showResolvedFlags;
let obj = require("get initialized");
const items = [ArchivedThreadsStore];
const stateFromStoresObject = obj.useStateFromStoresObject(items, () => {
const obj = { loading: ArchivedThreadsStore.isLoading(channel.id, sortOrder, tagFilter, tagSetting), isInitialLoad: ArchivedThreadsStore.getIsInitialLoad(channel.id, sortOrder, tagFilter, tagSetting), canLoadMore: ArchivedThreadsStore.getCanLoadMore(channel.id, sortOrder, tagFilter, tagSetting), nextOffset: ArchivedThreadsStore.getNextOffset(channel.id, sortOrder, tagFilter, tagSetting) };
return obj;
});
({ loading, nextOffset } = stateFromStoresObject);
const isInitialLoad = stateFromStoresObject.isInitialLoad;
const items1 = [channel, LATEST_ACTIVITY, loadMore, MATCH_SOME, nextOffset, showResolvedFlags, result];
const canLoadMore = stateFromStoresObject.canLoadMore;
loadMore = react.useCallback(() => {
const canResult = PermissionStore.can(Permissions.READ_MESSAGE_HISTORY, channel);
let tmp3 = !canResult;
const tmp = channel;
if (canResult) {
tmp3 = react && !showResolvedFlags;
const tmp4 = react && !showResolvedFlags;
}
if (!tmp3) {
const obj3 = { guildId: null, channelId: null, sortOrder, tagFilter, tagSetting, offset: nextOffset };
({ guild_id: obj2.guildId, id: obj2.channelId } = tmp);
const obj = ThreadActionCreatorsDefault;
const archivedThreads = obj.loadArchivedThreads(obj3);
}
}, items1);
const ref = react.useRef(loadMore);
const effect = react.useEffect(() => {
ref.current = current;
});
const items2 = [channel.id, LATEST_ACTIVITY, loadMore, isInitialLoad, showResolvedFlags];
const effect1 = react.useEffect(() => {
const tmp = isInitialLoad;
if (tmp) {
ref.current();
}
}, items2);
const items3 = [channel.id, showResolvedFlags];
const effect2 = react.useEffect(() => {
const obj = ForumActionCreatorsDefault;
obj.resort(channel.id);
}, items3);
const obj2 = {
threadIds: obj3.useStateFromStoresArray(items4, () => {
let tmp = _modDef12;
const tmpResult = tmp(ArchivedThreadsStore.getThreads(channel.id, sortOrder, tagFilter, tagSetting));
const iter = tmpResult.filter((item) => {
const tmp = closure_1_4;
if (tmp) {
const tmp2 = showResolvedFlags;
if (!tmp2) {
return false;
}
}
channel = nextOffset.getChannel(item);
const canResult = null != channel && isInitialLoad.can(constants.VIEW_CHANNEL, channel) && !channel.isMediaThread();
return canResult;
});
return iter.value();
}),
canLoadMore,
loading,
loadMore
};
obj3 = require("get initialized");
items4 = [ArchivedThreadsStore, nextOffset, isInitialLoad];
const obj4 = isInitialLoad;
if (!loading) {
loading = isInitialLoad;
}
if (loading) {
loading = showResolvedFlags;
}
if (loading) {
loading = obj4.can(Permissions.READ_MESSAGE_HISTORY, channel);
}
return obj2;
};