decord/source/modules/stickers/StickersHooks.tsx
2026-07-25 08:10:48 +00:00

561 lines
20 KiB
TypeScript

// Module ID: 9557
// Function ID: 74545
// Name: _createForOfIteratorHelperLoose
// Dependencies: [5, 57, 31, 1838, 3948, 4971, 1850, 5035, 5036, 653, 566, 9558, 3804, 4467, 8204, 4800, 4023, 1212, 3764, 9541, 9559, 2]
// Exports: useFetchStickerPack, useFilteredStickerPackCategories, useHasSendableSticker, useLatestFrecentStickers, useShouldAnimateSticker, useStickerForRenderableSticker, useStickersGrid
// Module 9557 (_createForOfIteratorHelperLoose)
import _isNativeReflectConstruct from "_isNativeReflectConstruct";
import _slicedToArray from "_slicedToArray";
import result from "result";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
import closure_7 from "_isNativeReflectConstruct";
import closure_8 from "_isNativeReflectConstruct";
import closure_9 from "_isNativeReflectConstruct";
import closure_10 from "_isNativeReflectConstruct";
import closure_11 from "_isNativeReflectConstruct";
import { Permissions } from "ME";
let require = arg1;
function _createForOfIteratorHelperLoose(iterable) {
let closure_0 = iterable;
iterable = "undefined" !== typeof Symbol;
if (iterable) {
const _Symbol = Symbol;
iterable = iterable[Symbol.iterator];
}
if (!iterable) {
iterable = iterable[Symbol.iterator];
}
if (iterable) {
const iter = iterable.call(iterable);
const next = iter.next;
return next.bind(iter);
} else {
const _Array = Array;
let tmp = iterable;
if (!Array.isArray(iterable)) {
let tmp2;
if (iterable) {
if ("string" === typeof iterable) {
tmp2 = _arrayLikeToArray(iterable, undefined);
} else {
const toString = {}.toString;
const substr = toString.call(iterable).slice(8, -1);
let name = substr;
if (tmp3) {
name = iterable.constructor.name;
}
if ("Map" !== name) {
if ("Set" !== name) {
if ("Arguments" === name) {
let arr = _arrayLikeToArray(iterable, undefined);
} else {
let obj = /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/;
}
}
tmp2 = arr;
}
const _Array2 = Array;
arr = Array.from(iterable);
const callResult = toString.call(iterable);
tmp3 = "Object" === substr && iterable.constructor;
}
}
tmp = tmp2;
if (!tmp2) {
const _TypeError = TypeError;
const typeError = new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
throw typeError;
}
}
if (tmp) {
closure_0 = tmp;
}
let c1 = 0;
return () => {
if (closure_1 >= length.length) {
let obj = { done: true };
} else {
obj = { done: false };
closure_1 = tmp3 + 1;
obj.value = length[+closure_1];
}
return obj;
};
}
}
function _arrayLikeToArray(arg0, arg1) {
let length;
if (tmp) {
length = arg0.length;
}
const ArrayResult = Array(length);
for (let num = 0; num < length; num = num + 1) {
ArrayResult[num] = arg0[num];
}
return ArrayResult;
}
function useFetchStickerPacks() {
const effect = React.useEffect(() => {
const stickerPacks = outer1_0(outer1_2[11]).fetchStickerPacks();
}, []);
}
function useFavoriteStickerIds() {
let stickerIds;
const favoriteStickers = require(9541) /* useFrecencySettings */.useFrecencySettings().favoriteStickers;
if (null != favoriteStickers) {
stickerIds = favoriteStickers.stickerIds;
}
if (null == stickerIds) {
stickerIds = closure_13;
}
return stickerIds;
}
function useFavoriteStickers() {
let tmp = useFavoriteStickerIds();
const require = tmp;
const items = [closure_11];
const items1 = [tmp];
return require(566) /* initialize */.useStateFromStoresArray(items, () => {
const mapped = tmp.map((arg0) => outer2_11.getStickerById(arg0));
return mapped.filter((body) => {
let tmp = null != body;
if (tmp) {
let result = !callback(outer2_2[13]).isGuildSticker(body);
if (!result) {
result = callback(outer2_2[13]).isAvailableGuildSticker(body);
const obj2 = callback(outer2_2[13]);
}
tmp = result;
const obj = callback(outer2_2[13]);
}
return tmp;
});
}, items1);
}
function useLatestFrecentStickerIds() {
const frecencySettings = require(9541) /* useFrecencySettings */.useFrecencySettings();
let keys = closure_13;
let stickers;
if (null != frecencySettings) {
const stickerFrecency = frecencySettings.stickerFrecency;
if (null != stickerFrecency) {
stickers = stickerFrecency.stickers;
}
}
if (null != stickers) {
let stickers1;
if (null != frecencySettings) {
const stickerFrecency2 = frecencySettings.stickerFrecency;
if (null != stickerFrecency2) {
stickers1 = stickerFrecency2.stickers;
}
}
keys = Object.keys(stickers1);
}
return keys;
}
function useStickerPackCategories(channel) {
const _require = channel;
let tmp = useFavoriteStickers();
const importAll = tmp;
let items = [closure_11, closure_10];
const stateFromStoresObject = _require(packs[10]).useStateFromStoresObject(items, () => ({ packs: outer1_11.getPremiumPacks(), frequentlyUsedStickers: outer1_10.stickerFrecencyWithoutFetchingLatest.frequently }), []);
packs = stateFromStoresObject.packs;
const frequentlyUsedStickers = stateFromStoresObject.frequentlyUsedStickers;
let obj = _require(packs[10]);
let items1 = [closure_9];
let stateFromStores = _require(packs[10]).useStateFromStores(items1, () => outer1_9.getCurrentUser());
let tmp4 = (function useGuildStickerCategories(channel) {
let items = [outer1_11];
const stateFromStores = channel(packs[10]).useStateFromStores(items, () => outer2_11.getAllGuildStickers());
let obj = channel(packs[10]);
const items1 = [outer1_8, outer1_6];
const stateFromStoresArray = channel(packs[10]).useStateFromStoresArray(items1, () => {
const flattenedGuildIds = outer2_8.getFlattenedGuildIds();
const items = [];
const item = flattenedGuildIds.forEach((guildId) => {
const guild = outer3_6.getGuild(guildId);
if (null != guild) {
items.push(guild);
}
});
return items;
}, []);
const obj2 = channel(packs[10]);
const items2 = [outer1_9];
const stateFromStores1 = channel(packs[10]).useStateFromStores(items2, () => outer2_9.getCurrentUser());
const items3 = [stateFromStores, stateFromStoresArray, stateFromStores1, channel];
return tmp4.useMemo(() => {
let iter2;
const items = [];
const tmp = outer2_14(stateFromStoresArray);
let iter = tmp();
if (!iter.done) {
do {
let value = iter.value;
let id = value.id;
let tmp2 = stateFromStores;
value = stateFromStores.get(id);
let tmp3 = null != value && 0 !== value.length;
if (tmp3) {
let obj = {};
let tmp4 = store;
let tmp5 = packs;
obj.type = store(packs[15]).StickerCategoryTypes.GUILD;
obj.id = id;
obj.name = value.name;
obj.stickers = value;
let arr = items.push(obj);
}
iter2 = tmp();
iter = iter2;
} while (!iter2.done);
}
let guildId;
if (null != store) {
guildId = store.getGuildId();
}
if (null != guildId) {
const guild = outer2_6.getGuild(store.getGuildId());
const findIndexResult = items.findIndex((id) => id.id === outer1_0.getGuildId());
if (findIndexResult >= 1) {
items.unshift(items.splice(findIndexResult, 1)[0]);
} else {
if (tmp9) {
obj = { type: store(packs[15]).StickerCategoryTypes.EMPTY_GUILD_UPSELL };
({ id: obj2.id, name: obj2.name } = guild);
obj.stickers = [];
items.unshift(obj);
}
tmp9 = -1 === findIndexResult && null != guild && obj5.getManageResourcePermissions(guild).canManageAllExpressions;
}
if (null != stateFromStores1) {
obj = { permission: outer2_12.USE_EXTERNAL_EMOJIS, user: stateFromStores1, context: store };
stateFromStores(packs[18]).can(obj);
const obj3 = stateFromStores(packs[18]);
}
obj5 = store(packs[14]);
}
return items;
}, items3);
})(channel);
const React = tmp4;
let items2 = [packs, tmp, frequentlyUsedStickers, tmp4, stateFromStores, channel];
return React.useMemo(() => {
let found;
const mapped = packs.map(channel(packs[13]).createStickerPackCategory);
let obj = { type: channel(packs[15]).StickerCategoryTypes.FAVORITE, id: channel(packs[15]).StickerCategoryTypes.FAVORITE };
const intl = channel(packs[17]).intl;
obj.name = intl.string(channel(packs[17]).t.y3LQCG);
obj.stickers = closure_1;
const items = [obj, ];
obj = { type: channel(packs[15]).StickerCategoryTypes.RECENT, id: channel(packs[15]).StickerCategoryTypes.RECENT };
const intl2 = channel(packs[17]).intl;
obj.name = intl2.string(channel(packs[17]).t["6hjpXW"]);
if (null != frequentlyUsedStickers) {
found = frequentlyUsedStickers.filter((guild_id) => {
const callback = guild_id;
if (obj.isGuildSticker(guild_id)) {
const stickersByGuildId = outer2_11.getStickersByGuildId(guild_id.guild_id);
let someResult;
if (null != stickersByGuildId) {
someResult = stickersByGuildId.some((id) => id.id === guild_id.id);
}
let tmp8 = null != someResult && someResult;
if (tmp8) {
const stickerSendability = callback(packs[20]).getStickerSendability(guild_id, outer1_4, outer1_0);
tmp8 = stickerSendability !== callback(packs[20]).StickerSendability.NONSENDABLE;
const obj4 = callback(packs[20]);
}
let someResult1 = tmp8;
} else {
if (obj2.isStandardSticker(guild_id)) {
someResult1 = outer1_2.some((id) => id.id === guild_id.pack_id);
}
obj2 = callback(packs[13]);
}
return someResult1;
});
}
if (null == found) {
found = [];
}
obj.stickers = found;
items[1] = obj;
HermesBuiltin.arraySpread(mapped, HermesBuiltin.arraySpread(result, 2));
return items;
}, items2);
}
let closure_13 = [];
let result = require("result").fileFinishedImporting("modules/stickers/StickersHooks.tsx");
export const useFetchStickerPack = function useFetchStickerPack(pack_id) {
const _require = pack_id;
useFetchStickerPacks();
const items = [closure_11];
const stateFromStores = _require(566).useStateFromStores(items, () => outer1_11.hasLoadedStickerPacks);
const items1 = [pack_id, stateFromStores];
const effect = React.useEffect(() => {
let tmp = stateFromStores;
if (stateFromStores) {
tmp = null == outer1_11.getStickerPack(pack_id);
}
if (tmp) {
const stickerPack = pack_id(outer1_2[11]).fetchStickerPack(pack_id);
const obj = pack_id(outer1_2[11]);
}
}, items1);
};
export const useShouldAnimateSticker = function useShouldAnimateSticker(isFocused) {
const AnimateStickers = require(3804) /* explicitContentFromProto */.AnimateStickers;
const setting = AnimateStickers.useSetting();
return require(4467) /* getStickerPackPreviewSticker */.shouldAnimateSticker(setting, isFocused);
};
export const useStickersGrid = function useStickersGrid(collapsedStickersCategories) {
collapsedStickersCategories = collapsedStickersCategories.collapsedStickersCategories;
const filteredStickers = collapsedStickersCategories.filteredStickers;
let num = collapsedStickersCategories.listPaddingRight;
if (num === undefined) {
num = 0;
}
let num2 = collapsedStickersCategories.listWidth;
if (num2 === undefined) {
num2 = 0;
}
let num3 = collapsedStickersCategories.stickerNodeMargin;
if (num3 === undefined) {
num3 = 0;
}
const stickerNodeWidth = collapsedStickersCategories.stickerNodeWidth;
const stickersCategories = collapsedStickersCategories.stickersCategories;
let items = [collapsedStickersCategories, filteredStickers, num, num2, num3, stickerNodeWidth, stickersCategories];
return stickerNodeWidth.useMemo(() => {
let iter2;
let stickers;
let type;
function addGridSection(sendable, SEARCH_RESULTS, arg2) {
let flag = arg2;
let closure_0 = SEARCH_RESULTS;
if (arg2 === undefined) {
flag = false;
}
let obj = collapsedStickersCategories(num[13]);
let guild;
if (obj.isGuildSticker(sendable[0])) {
guild = stickersCategories.getGuild(sendable[0].guild_id);
}
const guildId = outer2_7.getGuildId();
const obj2 = collapsedStickersCategories(num[14]);
let canCreateExpressions = null != guild;
const findIndexResult = c6.findIndex((type) => type.type === collapsedStickersCategories(num[15]).StickerCategoryTypes.FAVORITE);
if (canCreateExpressions) {
canCreateExpressions = guildId === guild.id;
}
if (canCreateExpressions) {
canCreateExpressions = obj2.getManageResourcePermissions(guild).canCreateExpressions;
}
if (canCreateExpressions) {
canCreateExpressions = sendable.length < collapsedStickersCategories(16[16]).getTotalStickerCountForTier(guild.premiumTier);
const obj3 = collapsedStickersCategories(16[16]);
}
let sum = length;
if (canCreateExpressions) {
sum = length + 1;
}
const rounded = Math.ceil(sum / closure_0);
let num2 = 0;
if (!flag) {
num2 = rounded;
}
items1[result] = num2;
for (let num3 = 0; num3 < rounded; num3 = num3 + 1) {
let tmp12 = closure_0;
let result = num3 * closure_0;
let tmp14 = closure_0;
let substr = sendable.slice(result, result + closure_0);
let mapped = substr.map((pack_id, columnIndex) => {
const obj = { type: collapsedStickersCategories(num[15]).StickerGridItemTypes.STICKER, sticker: pack_id };
let str = "TODO - fix";
if (obj2.isStandardSticker(pack_id)) {
str = pack_id.pack_id;
}
obj.packId = str;
obj.gridSectionIndex = result;
obj.rowIndex = _slicedToArray;
obj.columnIndex = columnIndex;
obj.visibleRowIndex = _createForOfIteratorHelperLoose;
obj.category = closure_0;
return obj;
});
let tmp15 = result;
let tmp16 = result > findIndexResult1;
if (tmp16) {
let tmp17 = result;
tmp16 = result > findIndexResult;
}
if (tmp16) {
tmp16 = null != guild;
}
if (tmp16) {
tmp16 = sum > sendable.length;
}
if (tmp16) {
obj = {};
let tmp18 = collapsedStickersCategories;
let tmp19 = num;
obj.type = collapsedStickersCategories(num[15]).StickerGridItemTypes.CREATE_STICKER;
obj.guild_id = guild.id;
let intl = collapsedStickersCategories(num[17]).intl;
obj.name = intl.string(collapsedStickersCategories(num[17]).t["UwF+Cw"]);
let tmp20 = result;
obj.gridSectionIndex = result;
let tmp21 = _slicedToArray;
obj.rowIndex = _slicedToArray;
obj.columnIndex = mapped.length;
let tmp22 = _createForOfIteratorHelperLoose;
obj.visibleRowIndex = _createForOfIteratorHelperLoose;
let arr = mapped.push(obj);
}
if (!flag) {
let tmp24 = _createForOfIteratorHelperLoose;
_createForOfIteratorHelperLoose = _createForOfIteratorHelperLoose + 1;
let tmp25 = items2;
arr = items2.push(mapped);
let tmp27 = items;
let arr1 = items.push(mapped.length);
}
let tmp29 = _slicedToArray;
_slicedToArray = _slicedToArray + 1;
}
result = result + 1;
}
let rounded = Math.floor((items2 - items1 + c4) / (c5 + c4));
const items = [];
items1 = [];
items2 = [];
c4 = 0;
c5 = 0;
let c6 = 0;
const rounded1 = Math.floor(Math.max(c4, (items2 - items1 - c5 * rounded) / (rounded - 1)));
if (0 !== items2) {
if (null == items) {
const tmp10 = outer1_14(c6);
let iter = tmp10();
if (!iter.done) {
do {
let value = iter.value;
if (value.stickers.length > 0) {
let tmp15 = c4;
c4 = c4 + 1;
let tmp16 = rounded;
let hasItem;
({ stickers, type } = value);
if (null != rounded) {
let tmp18 = rounded;
hasItem = rounded.has(value.id);
}
let addGridSectionResult = addGridSection(stickers, type, true === hasItem);
} else {
let tmp11 = collapsedStickersCategories;
let tmp12 = num;
if (value.type === collapsedStickersCategories(num[15]).StickerCategoryTypes.EMPTY_GUILD_UPSELL) {
let tmp13 = c5;
items1[c5] = 0;
let tmp14 = c5;
c5 = c5 + 1;
}
}
iter2 = tmp10();
iter = iter2;
} while (!iter2.done);
}
} else {
if (items.sendable.length > 0) {
addGridSection(items.sendable, collapsedStickersCategories(15[15]).StickerCategoryTypes.SEARCH_RESULTS);
}
if (items.sendableWithPremium.length > 0) {
addGridSection(items.sendableWithPremium, collapsedStickersCategories(num[15]).StickerCategoryTypes.SEARCH_RESULTS);
}
}
}
return { rowCount: c4, rowCountBySection: items1, stickersGrid: items2, gutterWidth: rounded1, columnCounts: items };
}, items);
};
export function useHasSendableSticker() {
return true;
}
export { useFetchStickerPacks };
export { useFavoriteStickerIds };
export { useFavoriteStickers };
export { useLatestFrecentStickerIds };
export const useLatestFrecentStickers = function useLatestFrecentStickers() {
const tmp = useLatestFrecentStickerIds();
const require = tmp;
const items = [closure_11];
const items1 = [tmp];
return require(566) /* initialize */.useStateFromStoresArray(items, () => {
const mapped = tmp.map((arg0) => outer2_11.getStickerById(arg0));
return mapped.filter((arg0) => undefined !== arg0);
}, items1);
};
export { useStickerPackCategories };
export const useStickerForRenderableSticker = function useStickerForRenderableSticker(renderableSticker, arg1) {
let c3;
let tmp4;
let flag = arg1;
const _require = renderableSticker;
if (arg1 === undefined) {
flag = false;
}
let dependencyMap;
c3 = undefined;
let obj;
let React;
obj = _require(566);
const items = [closure_11];
const stateFromStores = obj.useStateFromStores(items, () => outer1_11.getStickerById(id.id));
const tmp2 = obj(React.useState(true), 2);
dependencyMap = tmp2[1];
[tmp4, c3] = obj(React.useState(false), 2);
const tmp3 = obj(React.useState(false), 2);
let isGuildStickerResult = _require(4467).isGuildSticker(renderableSticker);
if (!isGuildStickerResult) {
isGuildStickerResult = _require(4467).isStandardSticker(renderableSticker);
const obj3 = _require(4467);
}
obj = { hasFetched: tmp4, isReturnable: isGuildStickerResult, renderableSticker, shouldFetch: tmp2[0], stickersStoreDefinition: stateFromStores };
React = React.useRef(obj);
const effect = React.useEffect(() => {
result.current = obj;
});
const items1 = [flag];
const effect1 = React.useEffect(() => {
// CreateGeneratorClosureLongIndex (0x67)
_undefined(tmp)();
}, items1);
if (isGuildStickerResult) {
const items2 = [renderableSticker, tmp4];
let items3 = items2;
} else {
let tmp10 = null;
if (null != stateFromStores) {
tmp10 = stateFromStores;
}
items3 = [tmp10, tmp4];
}
return items3;
};
export const useFilteredStickerPackCategories = function useFilteredStickerPackCategories(channel) {
let tmp = useStickerPackCategories(channel);
const require = tmp;
const items = [tmp];
return React.useMemo(() => tmp.filter((type) => {
let tmp = type.type === callback(outer2_2[15]).StickerCategoryTypes.EMPTY_GUILD_UPSELL;
if (!tmp) {
tmp = type.stickers.length > 0;
}
return tmp;
}, []), items);
};