decord/source/modules/icymi/useSharedICYMILogic.tsx

271 lines
11 KiB
TypeScript
Raw Normal View History

2026-08-24 06:08:38 +00:00
// Module ID: 15810
// Function ID: 15811
2026-07-20 16:05:17 +00:00
// Name: useSharedICYMILogic
2026-08-24 06:08:38 +00:00
// Dependencies: [32, 19, 9081, 15776, 15811, 589, 9102, 9100, 8939, 9094, 9093, 7627, 15812, 2]
2026-07-20 16:05:17 +00:00
// Exports: useSharedICYMILogic
2026-08-24 06:08:38 +00:00
// Module 15810 (useSharedICYMILogic)
import closure_3 from "_slicedToArray" /* 32 */;
import closure_4 from "noop" /* 19 */;
import closure_5 from "filterStaffGuild" /* 9081 */;
import { SCROLL_EVENT_THROTTLE_MS } from "NUM_GUILDS_EXTENDED_ONBOARDING" /* 15776 */;
2026-07-23 10:11:24 +00:00
const require = arg1;
2026-08-24 06:08:38 +00:00
let result = require("set").fileFinishedImporting("modules/icymi/useSharedICYMILogic.tsx");
2026-07-20 16:05:17 +00:00
export const useSharedICYMILogic = function useSharedICYMILogic(notificationItem) {
notificationItem = notificationItem.notificationItem;
2026-08-24 06:08:38 +00:00
importDefault = undefined;
2026-07-29 08:29:29 +00:00
let unreadItems;
let readItems;
let allUnreadItemsHydrated;
let stateFromStores;
let stateFromStores1;
let stateFromStores2;
let stateFromStores3;
c9 = undefined;
let lastScrollEventTimestamp;
let arr;
2026-08-24 06:08:38 +00:00
closure_12 = undefined;
2026-07-29 08:29:29 +00:00
let callback;
let callback1;
let callback2;
const tmp = readItems(allUnreadItemsHydrated.useState(false), 2);
importDefault = tmp2;
2026-07-23 10:11:24 +00:00
let tmp3 = importDefault(unreadItems[4])();
unreadItems = tmp3.unreadItems;
readItems = tmp3.readItems;
allUnreadItemsHydrated = tmp3.allUnreadItemsHydrated;
let obj = notificationItem(unreadItems[5]);
let items = [stateFromStores];
stateFromStores = obj.useStateFromStores(items, () => stateFromStores.getVersion(), []);
const items1 = [stateFromStores];
2026-07-29 08:29:29 +00:00
stateFromStores1 = notificationItem(unreadItems[5]).useStateFromStores(items1, () => {
2026-07-20 16:05:17 +00:00
let isFirstPageHydratedResult = stateFromStores.isFirstPageHydrated();
if (isFirstPageHydratedResult) {
isFirstPageHydratedResult = stateFromStores > 0;
}
return !isFirstPageHydratedResult;
});
const items2 = [stateFromStores];
2026-07-23 10:11:24 +00:00
const effect = allUnreadItemsHydrated.useEffect(() => {
2026-07-20 16:05:17 +00:00
if (null != stateFromStores.getLoadId()) {
const ICYMIAnalytics = notificationItem(unreadItems[6]).ICYMIAnalytics;
2026-07-29 08:29:29 +00:00
ICYMIAnalytics.trackFeedShown({ homeSessionId: "gravity" });
2026-07-20 16:05:17 +00:00
}
}, items2);
2026-07-23 10:11:24 +00:00
let obj2 = notificationItem(unreadItems[5]);
const items3 = [stateFromStores];
2026-07-29 08:29:29 +00:00
stateFromStores2 = notificationItem(unreadItems[5]).useStateFromStores(items3, () => stateFromStores.isRefreshing(), []);
2026-07-23 10:11:24 +00:00
let obj3 = notificationItem(unreadItems[5]);
const items4 = [stateFromStores];
2026-07-29 08:29:29 +00:00
stateFromStores3 = notificationItem(unreadItems[5]).useStateFromStores(items4, () => stateFromStores.isHydrating(), []);
2026-07-23 10:11:24 +00:00
let obj4 = notificationItem(unreadItems[5]);
2026-07-29 08:29:29 +00:00
[arr6, c9] = readItems(allUnreadItemsHydrated.useState([]), 2);
let tmp9 = readItems(allUnreadItemsHydrated.useState([]), 2);
2026-07-23 10:11:24 +00:00
const items5 = [stateFromStores];
const stateFromStoresObject = notificationItem(unreadItems[5]).useStateFromStoresObject(items5, () => ({ loadId: stateFromStores.getLoadId(), lastScrollEventTimestamp: stateFromStores.lastScrollEvent() }));
2026-07-29 08:29:29 +00:00
lastScrollEventTimestamp = stateFromStoresObject.lastScrollEventTimestamp;
2026-07-23 10:11:24 +00:00
let found = arr6.filter((item) => {
2026-07-20 16:05:17 +00:00
const NON_ELIGIBLE_SCROLL_ITEMS = notificationItem(unreadItems[7]).NON_ELIGIBLE_SCROLL_ITEMS;
return !NON_ELIGIBLE_SCROLL_ITEMS.has(item.item.data.kind);
});
const mapped = found.map((item) => item.item.id);
2026-07-29 08:29:29 +00:00
arr = mapped.pop();
2026-07-23 10:11:24 +00:00
const tmp12 = importDefault(unreadItems[8])(arr);
2026-08-24 06:08:38 +00:00
closure_12 = tmp12;
2026-07-20 16:05:17 +00:00
const items6 = [stateFromStores2, lastScrollEventTimestamp, tmp12, arr, stateFromStoresObject.loadId, stateFromStores1];
2026-07-23 10:11:24 +00:00
const effect1 = allUnreadItemsHydrated.useEffect(() => {
2026-07-20 16:05:17 +00:00
if (!stateFromStores2) {
if (!stateFromStores1) {
2026-08-24 06:08:38 +00:00
if (null != closure_12) {
2026-07-20 16:05:17 +00:00
if (null != arr) {
2026-07-29 08:29:29 +00:00
if (arr !== tmp2) {
2026-07-20 16:05:17 +00:00
const _Date = Date;
const timestamp = Date.now();
if (timestamp - lastScrollEventTimestamp > stateFromStores1) {
2026-08-24 06:08:38 +00:00
callback(unreadItems[9]).gravityScrollEvent(timestamp);
2026-07-20 16:05:17 +00:00
const ICYMIAnalytics = notificationItem(unreadItems[6]).ICYMIAnalytics;
const result = ICYMIAnalytics.trackFeedFirstScrollStarted();
2026-08-24 06:08:38 +00:00
const obj = callback(unreadItems[9]);
2026-07-20 16:05:17 +00:00
}
}
}
}
}
}
}, items6);
const items7 = [stateFromStores, tmp[1]];
2026-07-29 08:29:29 +00:00
callback = allUnreadItemsHydrated.useCallback((viewableItems) => {
2026-07-20 16:05:17 +00:00
viewableItems = viewableItems.viewableItems;
if (viewableItems.some((item) => "end" === item.item.data.kind)) {
2026-08-24 06:08:38 +00:00
callback(true);
2026-07-20 16:05:17 +00:00
}
if (0 !== viewableItems.length) {
2026-08-24 06:08:38 +00:00
_undefined(viewableItems);
2026-07-20 16:05:17 +00:00
const items = [];
const viewableFeedItemsArray = notificationItem(unreadItems[10]).getViewableFeedItemsArray(viewableItems);
const _Date = Date;
let timestamp = Date.now();
let diff = viewableFeedItemsArray.length - 1;
2026-07-29 08:29:29 +00:00
if (0 <= diff) {
2026-07-20 16:05:17 +00:00
do {
let tmp3 = viewableFeedItemsArray[diff];
2026-07-29 08:29:29 +00:00
let tmp4 = diff;
let tmp5 = timestamp;
2026-07-20 16:05:17 +00:00
let sum = timestamp;
if (null != tmp3) {
2026-07-29 08:29:29 +00:00
let obj = { id: null, type: null, timestamp: null };
obj[0] = tmp3.id;
let tmp7 = notificationItem;
let tmp8 = unreadItems;
2026-07-23 10:11:24 +00:00
let obj2 = notificationItem(unreadItems[11]);
2026-07-29 08:29:29 +00:00
obj[1] = obj2.typeToString(tmp3);
let tmp9 = +timestamp;
sum = tmp9 + 1;
obj[2] = tmp9;
2026-08-24 06:08:38 +00:00
arr = items.push(obj);
2026-07-20 16:05:17 +00:00
}
diff = diff - 1;
timestamp = sum;
2026-07-29 08:29:29 +00:00
} while (0 <= diff);
2026-07-20 16:05:17 +00:00
}
if (items.length > 0) {
2026-08-24 06:08:38 +00:00
callback(unreadItems[9]).ackGravityItems(items, true);
const obj3 = callback(unreadItems[9]);
2026-07-20 16:05:17 +00:00
}
const ICYMIAnalytics = notificationItem(unreadItems[6]).ICYMIAnalytics;
const result = ICYMIAnalytics.trackItemShortImpression(viewableItems, viewableFeedItemsArray.map((id) => {
2026-08-24 06:08:38 +00:00
const obj = { id: id.id, type: callback(table[11]).typeToString(id) };
2026-07-20 16:05:17 +00:00
return obj;
}), stateFromStores);
const obj4 = notificationItem(unreadItems[10]);
}
}, items7);
const items8 = [stateFromStores];
2026-07-29 08:29:29 +00:00
callback1 = allUnreadItemsHydrated.useCallback((viewableItems) => {
2026-07-20 16:05:17 +00:00
viewableItems = viewableItems.viewableItems;
if (0 !== viewableItems.length) {
const viewableFeedItemsArray = notificationItem(unreadItems[10]).getViewableFeedItemsArray(viewableItems);
const ICYMIAnalytics = notificationItem(unreadItems[6]).ICYMIAnalytics;
const result = ICYMIAnalytics.trackItemLongImpression(viewableItems, viewableFeedItemsArray.map((id) => {
2026-08-24 06:08:38 +00:00
const obj = { id: id.id, type: callback(7627).typeToString(id) };
2026-07-20 16:05:17 +00:00
return obj;
}), stateFromStores);
2026-07-23 10:11:24 +00:00
let obj = notificationItem(unreadItems[10]);
2026-07-20 16:05:17 +00:00
const found = viewableItems.filter((item) => {
2026-08-24 06:08:38 +00:00
const NON_ELIGIBLE_SCROLL_ITEMS = callback(9100).NON_ELIGIBLE_SCROLL_ITEMS;
2026-07-20 16:05:17 +00:00
return !NON_ELIGIBLE_SCROLL_ITEMS.has(item.item.data.kind);
});
2026-08-24 06:08:38 +00:00
const result1 = callback(unreadItems[9]).triggerItemsLongImpression(found.map((item) => {
2026-07-20 16:05:17 +00:00
item = item.item;
2026-08-24 06:08:38 +00:00
const obj = { itemId: item.id, itemType: callback(9093).itemToType(item), triggerType: "list", itemFeedIndex: item.index, itemScore: null, itemChannelType: null, isInitiallyVisible: false };
2026-07-29 08:29:29 +00:00
let score = item.score;
if (score == null) {
score = null;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
obj[4] = score;
let channelType = item.channelType;
if (channelType == null) {
channelType = null;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
obj[5] = channelType;
2026-07-20 16:05:17 +00:00
return obj;
}));
2026-08-24 06:08:38 +00:00
const obj2 = callback(unreadItems[9]);
2026-07-20 16:05:17 +00:00
}
}, items8);
2026-07-29 08:29:29 +00:00
callback2 = allUnreadItemsHydrated.useCallback((viewableItems) => {
2026-07-20 16:05:17 +00:00
viewableItems = viewableItems.viewableItems;
const found = viewableItems.filter((item) => {
2026-08-24 06:08:38 +00:00
const NON_ELIGIBLE_SCROLL_ITEMS = callback(9100).NON_ELIGIBLE_SCROLL_ITEMS;
2026-07-20 16:05:17 +00:00
return !NON_ELIGIBLE_SCROLL_ITEMS.has(item.item.data.kind);
});
2026-08-24 06:08:38 +00:00
callback(unreadItems[9]).startItemsDwell(found.map((item) => {
2026-07-20 16:05:17 +00:00
item = item.item;
2026-08-24 06:08:38 +00:00
const obj = { itemId: item.id, itemType: callback(9093).itemToType(item), triggerType: "list", itemFeedIndex: item.index, itemScore: null, itemChannelType: null, isInitiallyVisible: false };
2026-07-29 08:29:29 +00:00
let score = item.score;
if (score == null) {
score = null;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
obj[4] = score;
let channelType = item.channelType;
if (channelType == null) {
channelType = null;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
obj[5] = channelType;
2026-07-20 16:05:17 +00:00
return obj;
}));
}, []);
const items9 = [callback, callback1, callback2];
2026-07-23 10:11:24 +00:00
const memo = allUnreadItemsHydrated.useMemo(() => {
let obj = { viewabilityConfig: { waitForInteraction: false, viewAreaCoveragePercentThreshold: 100, minimumViewTime: 50 }, onViewableItemsChanged: callback };
2026-07-20 16:05:17 +00:00
const items = [obj, , ];
2026-07-23 10:11:24 +00:00
obj = { viewabilityConfig: { waitForInteraction: false, viewAreaCoveragePercentThreshold: 50, minimumViewTime: 1000 }, onViewableItemsChanged: callback1 };
2026-07-20 16:05:17 +00:00
items[1] = obj;
2026-07-23 10:11:24 +00:00
obj = { viewabilityConfig: { waitForInteraction: false, viewAreaCoveragePercentThreshold: 50, minimumViewTime: 50 }, onViewableItemsChanged: callback2 };
2026-07-20 16:05:17 +00:00
items[2] = obj;
return items;
}, items9);
2026-07-23 10:11:24 +00:00
const effect2 = allUnreadItemsHydrated.useEffect(() => {
2026-08-24 06:08:38 +00:00
callback(unreadItems[9]).openICYMITab();
2026-07-20 16:05:17 +00:00
}, []);
2026-07-29 08:29:29 +00:00
const obj5 = notificationItem(unreadItems[5]);
2026-07-20 16:05:17 +00:00
const items10 = [stateFromStores1, notificationItem, unreadItems, allUnreadItemsHydrated, readItems, stateFromStores3];
2026-07-23 10:11:24 +00:00
const obj6 = notificationItem(unreadItems[12]);
const memo1 = allUnreadItemsHydrated.useMemo(() => {
2026-07-20 16:05:17 +00:00
const data = [];
2026-07-29 08:29:29 +00:00
let tmp2 = stateFromStores1;
2026-07-20 16:05:17 +00:00
if (stateFromStores1) {
2026-07-29 08:29:29 +00:00
tmp2 = null != data;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (tmp2) {
tmp2 = data.type === notificationItem(unreadItems[11]).ICYMIItemTypes.CUSTOM_STATUS;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (tmp2) {
let obj = { id: null, timestamp: null, data: null, score: null, unread: true };
obj[0] = data.id;
2026-07-20 16:05:17 +00:00
const _Date = Date;
2026-07-29 08:29:29 +00:00
obj[1] = Date.now();
obj = { kind: "contentInventory", content: null };
2026-07-20 16:05:17 +00:00
let obj2 = notificationItem(unreadItems[10]);
2026-07-29 08:29:29 +00:00
obj[1] = obj2.customStatusToContentInventoryEntry(data).activity;
obj[2] = obj;
obj[3] = data.score;
2026-07-20 16:05:17 +00:00
data.push(obj);
}
if (stateFromStores1) {
2026-07-29 08:29:29 +00:00
obj = { id: "loading", timestamp: 0, unread: false, data: null };
obj[3] = { kind: "loading" };
2026-07-20 16:05:17 +00:00
data.push(obj);
} else {
const item = unreadItems.forEach((data) => {
if (!obj.isItemNSFW(data)) {
data.push(data);
}
});
if (allUnreadItemsHydrated) {
2026-08-24 06:08:38 +00:00
obj1 = { id: "end", timestamp: 0, unread: false, data: null };
2026-07-29 08:29:29 +00:00
obj1[3] = { kind: "end" };
let arr1 = data.push(obj1);
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
arr1 = readItems;
2026-07-20 16:05:17 +00:00
if (readItems.length > 0) {
2026-07-29 08:29:29 +00:00
const item1 = arr1.forEach((data) => {
2026-07-20 16:05:17 +00:00
if (!obj.isItemNSFW(data)) {
data.push(data);
}
});
}
if (stateFromStores3) {
2026-07-29 08:29:29 +00:00
obj2 = { id: "bottomLoading", timestamp: 0, unread: false, data: null };
obj2[3] = { kind: "bottomLoading" };
data.push(obj2);
2026-07-20 16:05:17 +00:00
}
}
return { data, stickyHeaderIndices: [] };
}, items10);
2026-07-23 10:11:24 +00:00
obj = { data: memo1.data, loading: stateFromStores1, version: stateFromStores, visibleItemIds: arr6, endVisible: tmp[0], isRefreshing: stateFromStores2, handleOnRefresh: notificationItem(unreadItems[12]).useICYMIReloadHandler(notificationItem.showDot), stickyHeaderIndices: memo1.stickyHeaderIndices, viewabilityConfigCallbackPairs: memo };
2026-07-20 16:05:17 +00:00
return obj;
};