decord/beta/source/modules/icymi/useSharedICYMILogic.tsx
2026-10-07 22:43:51 +00:00

637 lines
22 KiB
TypeScript

// Module ID: 16429
// Function ID: 16430
// Name: useSharedICYMILogic
// Dependencies: [32, 19, 8011, 16393, 558, 576, 16430, 504, 14165, 16398, 9288, 8029, 16397, 8024, 8028, 16431, 2]
// Module 16429 (useSharedICYMILogic)
import ICYMITypes from "ICYMITypes" /* 8024 */;
import ICYMIUtils from "ICYMIUtils" /* 8028 */;
import ICYMIActionCreatorsDefault from "ICYMIActionCreators" /* 8029 */;
import ICYMIAnalytics2 from "ICYMIAnalytics" /* 14165 */;
import ICYMIConstants from "ICYMIConstants" /* 16393 */;
import ICYMIStoreUtils from "ICYMIStoreUtils" /* 16397 */;
import _slicedToArray from "_slicedToArray" /* 32 */;
import react from "react" /* 19 */;
import ICYMIStore from "ICYMIStore" /* 8011 */;
import ReactCompilerGating from "ReactCompilerGating" /* 558 */;
import size from "module_2" /* 2 */;
const require = globalThis.__r;
let closure_12, importDefault, notificationItem;
const SCROLL_EVENT_THROTTLE_MS = ICYMIConstants.SCROLL_EVENT_THROTTLE_MS;
let tmp2 = ReactCompilerGating.isReactCompilerEnabled() ? ((arg0) => {
let allUnreadItemsHydrated;
let arr8;
let lastScrollEventTimestamp;
let loadId;
let readItems;
let require;
let stateFromStores;
let stateFromStores1;
let stateFromStores2;
let tmp10;
let tmp13;
let tmp15;
let tmp17;
let tmp19;
let tmp22;
let tmp23;
let tmp24;
let tmp26;
let tmp27;
let tmp28;
let tmp33;
let tmp34;
let tmp8;
let tmp9;
let unreadItems;
let tmp = require;
let tmp2 = stateFromStores1;
let obj = require("react");
const cResult = obj.c(71);
let obj2 = react;
let tmp4 = stateFromStores2;
let tmp5 = stateFromStores2(react.useState(false), 2);
[r10018, require] = tmp5;
const tmp6 = stateFromStores;
let tmp7 = stateFromStores(stateFromStores1[6])();
({ unreadItems, readItems, allUnreadItemsHydrated } = tmp7);
if (cResult[0] === Symbol.for("react.memo_cache_sentinel")) {
let items = [lastScrollEventTimestamp];
const fn = function c() {
return lastScrollEventTimestamp.getVersion();
};
const items1 = [];
cResult[0] = items;
cResult[1] = fn;
cResult[2] = items1;
tmp9 = fn;
tmp8 = items;
tmp10 = items1;
} else {
[tmp8, tmp9, tmp10] = cResult;
}
const tmpResult = tmp(tmp2[7]);
stateFromStores = tmpResult.useStateFromStores(tmp8, tmp9, tmp10);
if (cResult[3] === Symbol.for("react.memo_cache_sentinel")) {
const items2 = [lastScrollEventTimestamp];
cResult[3] = items2;
tmp13 = items2;
} else {
tmp13 = cResult[3];
}
if (cResult[4] !== stateFromStores) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
cResult[4] = stateFromStores;
cResult[5] = E;
tmp15 = E;
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
}
const tmpResult5 = tmp(tmp2[7]);
stateFromStores1 = tmpResult5.useStateFromStores(tmp13, tmp15);
if (cResult[6] === Symbol.for("react.memo_cache_sentinel")) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
cResult[6] = tmp18;
tmp17 = tmp18;
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
}
if (cResult[7] !== stateFromStores) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
tmp20[0] = stateFromStores;
cResult[7] = stateFromStores;
cResult[8] = tmp20;
tmp19 = tmp20;
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
}
const effect = obj2.useEffect(tmp17, tmp19);
if (cResult[9] === Symbol.for("react.memo_cache_sentinel")) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
const items3 = [lastScrollEventTimestamp];
class O {
constructor() {
return lastScrollEventTimestamp.isRefreshing();
}
}
const items4 = [];
cResult[9] = items4;
cResult[10] = items3;
cResult[11] = O;
tmp24 = O;
tmp23 = items3;
tmp22 = items4;
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
tmp23 = cResult[10];
tmp24 = cResult[11];
}
const tmpResult6 = tmp(tmp2[7]);
stateFromStores2 = tmpResult6.useStateFromStores(tmp23, tmp24, tmp22);
if (cResult[12] === Symbol.for("react.memo_cache_sentinel")) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
const items5 = [lastScrollEventTimestamp];
class R {
constructor() {
return lastScrollEventTimestamp.isHydrating();
}
}
const items6 = [];
cResult[12] = items5;
cResult[13] = R;
cResult[14] = items6;
tmp28 = items6;
tmp27 = R;
tmp26 = items5;
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
tmp27 = cResult[13];
tmp28 = cResult[14];
}
const tmpResult7 = tmp(tmp2[7]);
const stateFromStores3 = tmpResult7.useStateFromStores(tmp26, tmp27, tmp28);
if (cResult[15] === Symbol.for("react.memo_cache_sentinel")) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
cResult[15] = tmp31;
class R {
constructor() {
return lastScrollEventTimestamp.isHydrating();
}
}
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
}
[arr8, react] = tmp4(obj2.useState(tmp30), 2);
tmp4(obj2.useState(tmp30), 2);
if (cResult[16] === Symbol.for("react.memo_cache_sentinel")) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
const items7 = [lastScrollEventTimestamp];
class G {
constructor() {
const obj = { loadId: lastScrollEventTimestamp.getLoadId(), lastScrollEventTimestamp: lastScrollEventTimestamp.lastScrollEvent() };
return obj;
}
}
cResult[16] = items7;
cResult[17] = G;
tmp34 = G;
tmp33 = items7;
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
tmp34 = cResult[17];
}
const tmpResult8 = tmp(tmp2[7]);
const stateFromStoresObject = tmpResult8.useStateFromStoresObject(tmp33, tmp34);
({ loadId, lastScrollEventTimestamp } = stateFromStoresObject);
if (cResult[18] !== arr8) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
if (cResult[20] === Symbol.for("react.memo_cache_sentinel")) {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
cResult[20] = tmp38;
class G {
constructor() {
const obj = { loadId: lastScrollEventTimestamp.getLoadId(), lastScrollEventTimestamp: lastScrollEventTimestamp.lastScrollEvent() };
return obj;
}
}
} else {
class E {
constructor() {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
}
}
}
class G {
constructor() {
const obj = { loadId: lastScrollEventTimestamp.getLoadId(), lastScrollEventTimestamp: lastScrollEventTimestamp.lastScrollEvent() };
return obj;
}
}
if (cResult[21] === Symbol.for("react.memo_cache_sentinel")) {
class J {
constructor(item) {
return item.item.id;
}
}
cResult[21] = J;
class G {
constructor() {
const obj = { loadId: lastScrollEventTimestamp.getLoadId(), lastScrollEventTimestamp: lastScrollEventTimestamp.lastScrollEvent() };
return obj;
}
}
} else {
class J {
constructor(item) {
return item.item.id;
}
}
}
let found = arr8.filter(tmp37);
const mapped = found.map(tmp39);
let arr = mapped.pop();
cResult[18] = arr8;
cResult[19] = arr;
} else {
class J {
constructor(item) {
return item.item.id;
}
}
}
arr = tmp36;
const tmp41 = tmp6(tmp2[10])(tmp36);
let closure_7 = tmp41;
if (cResult[22] === stateFromStores2) {
class J {
constructor(item) {
return item.item.id;
}
}
}
class Z {
constructor() {
const tmp = stateFromStores2;
if (!tmp) {
const tmp2 = stateFromStores1;
if (!tmp2) {
if (null != closure_7) {
if (null != arr) {
if (arr !== tmp3) {
const _Date = Date;
const timestamp = Date.now();
if (timestamp - lastScrollEventTimestamp > SCROLL_EVENT_THROTTLE_MS) {
const obj = ICYMIActionCreatorsDefault;
obj.gravityScrollEvent(timestamp);
const ICYMIAnalytics = ICYMIAnalytics2.ICYMIAnalytics;
const result = ICYMIAnalytics.trackFeedFirstScrollStarted();
}
}
}
}
}
}
}
}
cResult[22] = stateFromStores2;
cResult[23] = tmp41;
cResult[24] = lastScrollEventTimestamp;
cResult[25] = tmp36;
cResult[26] = stateFromStores1;
cResult[27] = Z;
}) : ((notificationItem) => {
let _undefined;
let arr6;
let c9;
let closure_1;
notificationItem = notificationItem.notificationItem;
let unreadItems;
let readItems;
let allUnreadItemsHydrated;
let stateFromStores;
c9 = undefined;
const showDot = notificationItem.showDot;
let tmp = readItems(allUnreadItemsHydrated.useState(false), 2);
let tmp3 = tmp[1];
importDefault = tmp3;
const first = tmp[0];
let tmp4 = require("useICYMIItems")();
unreadItems = tmp4.unreadItems;
readItems = tmp4.readItems;
allUnreadItemsHydrated = tmp4.allUnreadItemsHydrated;
let obj = notificationItem(unreadItems[7]);
let items = [stateFromStores];
stateFromStores = obj.useStateFromStores(items, () => stateFromStores.getVersion(), []);
let obj2 = notificationItem(unreadItems[7]);
const items1 = [stateFromStores];
const stateFromStores1 = obj2.useStateFromStores(items1, () => {
const isFirstPageHydratedResult = ICYMIStore.isFirstPageHydrated() && stateFromStores > 0;
return !isFirstPageHydratedResult;
});
const items2 = [stateFromStores];
const effect = allUnreadItemsHydrated.useEffect(() => {
if (null != stateFromStores.getLoadId()) {
const ICYMIAnalytics = notificationItem(unreadItems[8]).ICYMIAnalytics;
ICYMIAnalytics.trackFeedShown({ homeSessionId: "gravity" });
}
}, items2);
let obj3 = notificationItem(unreadItems[7]);
const items3 = [stateFromStores];
const stateFromStores2 = obj3.useStateFromStores(items3, () => stateFromStores.isRefreshing(), []);
let obj4 = notificationItem(unreadItems[7]);
const items4 = [stateFromStores];
const stateFromStores3 = obj4.useStateFromStores(items4, () => stateFromStores.isHydrating(), []);
[arr6, c9] = readItems(allUnreadItemsHydrated.useState([]), 2);
const tmp10 = readItems(allUnreadItemsHydrated.useState([]), 2);
let obj5 = notificationItem(unreadItems[7]);
const items5 = [stateFromStores];
const stateFromStoresObject = obj5.useStateFromStoresObject(items5, () => {
const obj = { loadId: stateFromStores.getLoadId(), lastScrollEventTimestamp: stateFromStores.lastScrollEvent() };
return obj;
});
const lastScrollEventTimestamp = stateFromStoresObject.lastScrollEventTimestamp;
const loadId = stateFromStoresObject.loadId;
let found = arr6.filter((item) => {
item = item.item;
const NON_ELIGIBLE_SCROLL_ITEMS = notificationItem(unreadItems[9]).NON_ELIGIBLE_SCROLL_ITEMS;
return !NON_ELIGIBLE_SCROLL_ITEMS.has(item.data.kind);
});
const mapped = found.map((item) => item.item.id);
let arr = mapped.pop();
const tmp13 = require("react")(arr);
closure_12 = tmp13;
const items6 = [stateFromStores2, lastScrollEventTimestamp, tmp13, arr, loadId, stateFromStores1];
const effect1 = allUnreadItemsHydrated.useEffect(() => {
const tmp = stateFromStores2;
if (!tmp) {
const tmp2 = stateFromStores1;
if (!tmp2) {
if (null != closure_12) {
if (null != arr) {
if (arr !== tmp3) {
const _Date = Date;
const timestamp = Date.now();
if (timestamp - lastScrollEventTimestamp > SCROLL_EVENT_THROTTLE_MS) {
const obj = ICYMIActionCreatorsDefault;
obj.gravityScrollEvent(timestamp);
const ICYMIAnalytics = ICYMIAnalytics2.ICYMIAnalytics;
const result = ICYMIAnalytics.trackFeedFirstScrollStarted();
}
}
}
}
}
}
}, items6);
const items7 = [stateFromStores, tmp3];
const onViewableItemsChanged = allUnreadItemsHydrated.useCallback((viewableItems) => {
let obj2;
let tmp9;
viewableItems = viewableItems.viewableItems;
if (viewableItems.some((item) => "end" === item.item.data.kind)) {
closure_1(true);
}
if (0 !== viewableItems.length) {
_undefined(viewableItems);
const items = [];
const obj4 = ICYMIStoreUtils;
const viewableFeedItemsArray = obj4.getViewableFeedItemsArray(viewableItems);
const _Date = Date;
let timestamp = Date.now();
let diff = viewableFeedItemsArray.length - 1;
if (0 <= diff) {
do {
let tmp3 = viewableFeedItemsArray[diff];
let sum = timestamp;
if (null != tmp3) {
let obj = { id: tmp3.id, type: obj2.typeToString(tmp3), timestamp: tmp9 };
let push = items.push;
obj2 = ICYMITypes;
tmp9 = +timestamp;
sum = tmp9 + 1;
arr = push(obj);
}
diff = diff - 1;
timestamp = sum;
} while (0 <= diff);
}
if (items.length > 0) {
const obj3 = ICYMIActionCreatorsDefault;
obj3.ackGravityItems(items, true);
}
const ICYMIAnalytics = ICYMIAnalytics2.ICYMIAnalytics;
const result = ICYMIAnalytics.trackItemShortImpression(viewableItems, viewableFeedItemsArray.map((id) => {
let obj2;
const obj = { id: id.id, type: obj2.typeToString(id) };
obj2 = notificationItem(unreadItems[13]);
return obj;
}), stateFromStores);
}
}, items7);
const items8 = [stateFromStores];
const callback1 = allUnreadItemsHydrated.useCallback((viewableItems) => {
viewableItems = viewableItems.viewableItems;
if (0 !== viewableItems.length) {
let obj = ICYMIStoreUtils;
const viewableFeedItemsArray = obj.getViewableFeedItemsArray(viewableItems);
const ICYMIAnalytics = ICYMIAnalytics2.ICYMIAnalytics;
const result = ICYMIAnalytics.trackItemLongImpression(viewableItems, viewableFeedItemsArray.map((id) => {
let obj2;
const obj = { id: id.id, type: obj2.typeToString(id) };
obj2 = notificationItem(unreadItems[13]);
return obj;
}), stateFromStores);
const triggerItemsLongImpression = ICYMIActionCreatorsDefault.triggerItemsLongImpression;
ICYMIActionCreatorsDefault;
const found = viewableItems.filter((item) => {
item = item.item;
const NON_ELIGIBLE_SCROLL_ITEMS = notificationItem(unreadItems[9]).NON_ELIGIBLE_SCROLL_ITEMS;
return !NON_ELIGIBLE_SCROLL_ITEMS.has(item.data.kind);
});
const result1 = triggerItemsLongImpression(found.map((item) => {
let channelType;
let index;
let obj2;
let score;
item = item.item;
const obj = { itemId: item.id, itemType: obj2.itemToType(item), triggerType: "list", itemFeedIndex: index, itemScore: score, itemChannelType: channelType, isInitiallyVisible: false };
index = item.index;
score = item.score;
obj2 = notificationItem(unreadItems[14]);
if (score == null) {
score = null;
}
channelType = item.channelType;
if (channelType == null) {
channelType = null;
}
return obj;
}));
}
}, items8);
const callback2 = allUnreadItemsHydrated.useCallback((viewableItems) => {
viewableItems = viewableItems.viewableItems;
const startItemsDwell = closure_1(unreadItems[11]).startItemsDwell;
closure_1(unreadItems[11]);
const found = viewableItems.filter((item) => {
item = item.item;
const NON_ELIGIBLE_SCROLL_ITEMS = notificationItem(unreadItems[9]).NON_ELIGIBLE_SCROLL_ITEMS;
return !NON_ELIGIBLE_SCROLL_ITEMS.has(item.data.kind);
});
startItemsDwell(found.map((item) => {
let channelType;
let index;
let obj2;
let score;
item = item.item;
const obj = { itemId: item.id, itemType: obj2.itemToType(item), triggerType: "list", itemFeedIndex: index, itemScore: score, itemChannelType: channelType, isInitiallyVisible: false };
index = item.index;
score = item.score;
obj2 = notificationItem(unreadItems[14]);
if (score == null) {
score = null;
}
channelType = item.channelType;
if (channelType == null) {
channelType = null;
}
return obj;
}));
}, []);
const items9 = [onViewableItemsChanged, callback1, callback2];
const memo = allUnreadItemsHydrated.useMemo(() => {
const items = [, , ];
const obj = { viewabilityConfig: { waitForInteraction: false, viewAreaCoveragePercentThreshold: 100, minimumViewTime: 50 }, onViewableItemsChanged };
items[0] = obj;
const obj2 = { viewabilityConfig: { waitForInteraction: false, viewAreaCoveragePercentThreshold: 50, minimumViewTime: 1000 }, onViewableItemsChanged: callback1 };
items[1] = obj2;
const obj3 = { viewabilityConfig: { waitForInteraction: false, viewAreaCoveragePercentThreshold: 50, minimumViewTime: 50 }, onViewableItemsChanged: callback2 };
items[2] = obj3;
return items;
}, items9);
const effect2 = allUnreadItemsHydrated.useEffect(() => {
const obj = closure_1(unreadItems[11]);
obj.openICYMITab();
}, []);
let obj6 = notificationItem(unreadItems[15]);
const items10 = [stateFromStores1, notificationItem, unreadItems, allUnreadItemsHydrated, readItems, stateFromStores3];
const iCYMIReloadHandler = obj6.useICYMIReloadHandler(showDot);
const memo1 = allUnreadItemsHydrated.useMemo(() => {
let obj2;
let obj3;
const data = [];
let tmp2 = stateFromStores1;
if (stateFromStores1) {
tmp2 = null != notificationItem;
}
if (tmp2) {
tmp2 = notificationItem.type === ICYMITypes.ICYMIItemTypes.CUSTOM_STATUS;
}
if (tmp2) {
let obj = { id: notificationItem.id, timestamp: Date.now(), data: obj2, score: notificationItem.score, unread: true };
const _Date = Date;
const push = data.push;
obj2 = { kind: "contentInventory", content: obj3.customStatusToContentInventoryEntry(notificationItem).activity };
obj3 = ICYMIUtils;
push(obj);
}
if (stateFromStores1) {
const obj4 = { id: "loading", timestamp: 0, unread: false, data: { kind: "loading" } };
data.push(obj4);
} else {
const item = unreadItems.forEach((item) => {
const obj = notificationItem(unreadItems[14]);
if (!obj.isItemNSFW(item)) {
data.push(item);
}
});
const tmp15 = allUnreadItemsHydrated;
if (tmp15) {
const obj5 = { id: "end", timestamp: 0, unread: false, data: { kind: "end" } };
data.push(obj5);
}
const arr2 = readItems;
if (readItems.length > 0) {
const item1 = arr2.forEach((item) => {
const obj = notificationItem(unreadItems[14]);
if (!obj.isItemNSFW(item)) {
data.push(item);
}
});
}
const tmp18 = stateFromStores3;
if (tmp18) {
const obj6 = { id: "bottomLoading", timestamp: 0, unread: false, data: { kind: "bottomLoading" } };
data.push(obj6);
}
}
return { data, stickyHeaderIndices: [] };
}, items10);
return { data: memo1.data, loading: stateFromStores1, version: stateFromStores, visibleItemIds: arr6, endVisible: first, isRefreshing: stateFromStores2, handleOnRefresh: iCYMIReloadHandler, stickyHeaderIndices: memo1.stickyHeaderIndices, viewabilityConfigCallbackPairs: memo };
});
let result = size.fileFinishedImporting("modules/icymi/useSharedICYMILogic.tsx");
export const useSharedICYMILogic = tmp2;