decord/source/modules/stickers/StickersHooks.tsx
2026-08-24 06:08:38 +00:00

631 lines
23 KiB
TypeScript

// Module ID: 10256
// Function ID: 10257
// Name: useStickerPackCategories
// Dependencies: [5, 32, 19, 1910, 4201, 5083, 1922, 6805, 6806, 676, 589, 10257, 4069, 4828, 8876, 4969, 4270, 1236, 4029, 10239, 7336, 2]
// Exports: useFavoriteStickerIds, useFavoriteStickers, useFetchStickerPack, useFetchStickerPacks, useFilteredStickerPackCategories, useHasSendableSticker, useLatestFrecentStickerIds, useLatestFrecentStickers, useShouldAnimateSticker, useStickerForRenderableSticker, useStickersGrid
// Module 10256 (useStickerPackCategories)
import explicitContentFromProto from "explicitContentFromProto" /* 4069 */;
import getStickerExtensionFromFormatType from "getStickerExtensionFromFormatType" /* 4828 */;
import useFrecencySettings from "useFrecencySettings" /* 10239 */;
import closure_3 from "asyncGeneratorStep" /* 5 */;
import closure_4 from "_slicedToArray" /* 32 */;
import closure_5 from "noop" /* 19 */;
import closure_6 from "createGuildRecordFromRust" /* 1910 */;
import closure_7 from "handleConnectionOpen" /* 4201 */;
import closure_8 from "insertUnsortedGuilds" /* 5083 */;
import closure_9 from "mergeGuildAvatar" /* 1922 */;
import closure_10 from "handleStickersStoreUpdate" /* 6805 */;
import closure_11 from "loadSavedGuildStickers" /* 6806 */;
import { Permissions } from "ME" /* 676 */;
require = arg1;
function useStickerPackCategories(channel) {
let _require = channel;
const favoriteStickers = _require(stateFromStoresArray1[19]).useFrecencySettings().favoriteStickers;
let stickerIds;
if (favoriteStickers != null) {
stickerIds = favoriteStickers.stickerIds;
}
if (stickerIds == null) {
stickerIds = closure_13;
}
_require = stickerIds;
let tmpResult = tmp(tmp2[10]);
let items = [closure_11];
const items1 = [stickerIds];
const stateFromStoresArray = tmpResult.useStateFromStoresArray(items, () => {
const mapped = channel.map((arg0) => stickerById.getStickerById(arg0));
return mapped.filter((body) => {
let tmp = null != body;
if (tmp) {
const isGuildStickerResult = callback(table[13]).isGuildSticker(body);
let result = !isGuildStickerResult;
if (isGuildStickerResult) {
result = tmp2(tmp3[13]).isAvailableGuildSticker(body);
const tmp2Result = tmp2(tmp3[13]);
}
tmp = result;
const obj = callback(table[13]);
tmp2 = callback;
tmp3 = table;
}
return tmp;
});
}, items1);
let stateFromStores1 = stateFromStoresArray;
tmpResult = tmp(tmp2[10]);
const items2 = [closure_11, closure_10];
const stateFromStoresObject = tmpResult.useStateFromStoresObject(items2, () => {
obj = { packs: store.getPremiumPacks(), frequentlyUsedStickers: obj.stickerFrecencyWithoutFetchingLatest.frequently };
return obj;
}, []);
const packs = stateFromStoresObject.packs;
stateFromStoresArray1 = packs;
const frequentlyUsedStickers = stateFromStoresObject.frequentlyUsedStickers;
let stateFromStores2 = frequentlyUsedStickers;
let obj = _require(stateFromStoresArray1[19]);
const items3 = [closure_9];
const stateFromStores = _require(stateFromStoresArray1[10]).useStateFromStores(items3, () => authStore.getCurrentUser());
_require = channel;
stateFromStores1 = undefined;
stateFromStoresArray1 = undefined;
stateFromStores2 = undefined;
const tmpResult1 = _require(stateFromStoresArray1[10]);
const items4 = [closure_11];
stateFromStores1 = _require(stateFromStoresArray1[10]).useStateFromStores(items4, () => store.getAllGuildStickers());
const tmpResult2 = _require(stateFromStoresArray1[10]);
const items5 = [closure_8, closure_6];
stateFromStoresArray1 = _require(stateFromStoresArray1[10]).useStateFromStoresArray(items5, () => {
flattenedGuildIds = flattenedGuildIds.getFlattenedGuildIds();
const items = [];
const item = flattenedGuildIds.forEach((arg0) => {
const guild = closure_1_6.getGuild(arg0);
if (null != guild) {
items.push(guild);
}
});
return items;
}, []);
const tmpResult3 = _require(stateFromStoresArray1[10]);
const items6 = [closure_9];
stateFromStores2 = _require(stateFromStoresArray1[10]).useStateFromStores(items6, () => authStore.getCurrentUser());
const items7 = [stateFromStores1, stateFromStoresArray1, stateFromStores2, channel];
memo = memo.useMemo(() => {
const items = [];
const iter = stateFromStoresArray1[Symbol.iterator]();
while (iter !== undefined) {
({ name, id } = nextResult);
let tmp4 = stateFromStores1;
let tmp3 = id;
let value = stateFromStores1.get(id);
let arr1 = value;
let tmp6 = null != value;
if (tmp6) {
let tmp7 = value;
tmp6 = 0 !== arr1.length;
}
if (tmp6) {
let obj = { type: null, id: null, name: null, stickers: null };
let tmp8 = channel;
let tmp9 = stateFromStoresArray1;
obj[0] = channel(stateFromStoresArray1[15]).StickerCategoryTypes.GUILD;
let tmp10 = id;
obj[1] = tmp3;
let tmp11 = name;
obj[2] = name;
let tmp12 = value;
obj[3] = arr1;
let arr = items.push(obj);
}
continue;
}
let guildId;
if (channel != null) {
guildId = obj2.getGuildId();
}
if (null != guildId) {
const guild = closure_1_6.getGuild(obj2.getGuildId());
const findIndexResult = items.findIndex((id) => id.id === guildId.getGuildId());
if (findIndexResult >= 1) {
items.unshift(items.splice(findIndexResult, 1)[0]);
} else {
if (tmp15) {
obj = { type: null, id: null, name: null, stickers: null };
obj[0] = channel(stateFromStoresArray1[15]).StickerCategoryTypes.EMPTY_GUILD_UPSELL;
({ id: obj3[1], name: obj3[2] } = guild);
obj[3] = [];
arr1 = items.unshift(obj);
}
tmp15 = -1 === findIndexResult && null != guild && obj6.getManageResourcePermissions(guild).canManageAllExpressions;
}
if (null != stateFromStores2) {
obj = { permission: null, user: null, context: null };
obj[0] = closure_1_12.USE_EXTERNAL_EMOJIS;
obj[1] = tmp20;
obj[2] = obj2;
stateFromStores1(stateFromStoresArray1[18]).can(obj);
const obj4 = stateFromStores1(stateFromStoresArray1[18]);
}
obj6 = channel(stateFromStoresArray1[14]);
}
return items;
}, items7);
const items8 = [packs, stateFromStoresArray, frequentlyUsedStickers, memo, stateFromStores, channel];
return memo.useMemo(() => {
const mapped = stateFromStoresArray1.map(channel(stateFromStoresArray1[13]).createStickerPackCategory);
let obj = { type: channel(stateFromStoresArray1[15]).StickerCategoryTypes.FAVORITE, id: channel(stateFromStoresArray1[15]).StickerCategoryTypes.FAVORITE, name: null, stickers: null };
const intl = channel(stateFromStoresArray1[17]).intl;
obj[2] = intl.string(channel(stateFromStoresArray1[17]).t.y3LQCG);
obj[3] = stateFromStores1;
const items = [obj, ];
obj = { type: channel(stateFromStoresArray1[15]).StickerCategoryTypes.RECENT, id: channel(stateFromStoresArray1[15]).StickerCategoryTypes.RECENT, name: null, stickers: null };
const intl2 = channel(stateFromStoresArray1[17]).intl;
obj[2] = intl2.string(channel(stateFromStoresArray1[17]).t["6hjpXW"]);
let found;
if (stateFromStores2 != null) {
found = stateFromStores2.filter((guild_id) => {
closure_0 = guild_id;
if (obj.isGuildSticker(guild_id)) {
const stickersByGuildId = closure_1_11.getStickersByGuildId(guild_id.guild_id);
let flag;
if (stickersByGuildId != null) {
flag = stickersByGuildId.some((id) => id.id === guild_id.id);
}
if (flag == null) {
flag = false;
}
if (flag) {
let tmpResult = tmp(tmp2[20]);
const stickerSendability = tmpResult.getStickerSendability(guild_id, closure_4, closure_0);
flag = stickerSendability !== tmp(tmp2[20]).StickerSendability.NONSENDABLE;
}
let someResult = flag;
} else {
tmpResult = tmp(tmp2[13]);
if (tmpResult.isStandardSticker(guild_id)) {
someResult = closure_2.some((id) => id.id === guild_id.pack_id);
}
}
return someResult;
});
}
if (found == null) {
found = [];
}
obj[3] = found;
items[1] = obj;
HermesBuiltin.arraySpread(mapped, HermesBuiltin.arraySpread(memo, 2));
return items;
}, items8);
}
let closure_13 = [];
let result = require("set").fileFinishedImporting("modules/stickers/StickersHooks.tsx");
export const useFetchStickerPack = function useFetchStickerPack(pack_id) {
const _require = pack_id;
const effect = React.useEffect(() => {
const stickerPacks = pack_id(table[11]).fetchStickerPacks();
}, []);
const items = [closure_11];
const stateFromStores = _require(589).useStateFromStores(items, () => obj.hasLoadedStickerPacks);
const items1 = [pack_id, stateFromStores];
const effect1 = React.useEffect(() => {
let tmp = stateFromStores;
if (stateFromStores) {
tmp = null == closure_1_11.getStickerPack(pack_id);
}
if (tmp) {
const stickerPack = pack_id(closure_1_2[11]).fetchStickerPack(pack_id);
const obj = pack_id(closure_1_2[11]);
}
}, items1);
};
export const useShouldAnimateSticker = function useShouldAnimateSticker(isFocused) {
const AnimateStickers = explicitContentFromProto.AnimateStickers;
const setting = AnimateStickers.useSetting();
return getStickerExtensionFromFormatType.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;
let stickersCategories = collapsedStickersCategories.stickersCategories;
let items = [collapsedStickersCategories, filteredStickers, num, num2, num3, stickerNodeWidth, stickersCategories];
return stickerNodeWidth.useMemo(() => {
let rounded = Math.floor((items2 - items1 + closure_4) / (closure_5 + closure_4));
const items = [];
items1 = [];
items2 = [];
closure_4 = 0;
closure_5 = 0;
stickersCategories = 0;
const rounded1 = Math.floor(Math.max(closure_4, (items2 - items1 - closure_5 * rounded) / (rounded - 1)));
if (0 !== items2) {
function addGridSection(sendable, SEARCH_RESULTS, arg2) {
closure_0 = SEARCH_RESULTS;
let flag = arg2;
if (arg2 === undefined) {
flag = false;
}
let obj = collapsedStickersCategories(num[13]);
let guild;
if (obj.isGuildSticker(sendable[0])) {
guild = stickersCategories.getGuild(sendable[0].guild_id);
}
let tmpResult = tmp(tmp2[14]);
const guildId = closure_2_7.getGuildId();
let canCreateExpressions = null != guild;
const findIndexResult = c6.findIndex((type) => type.type === SEARCH_RESULTS(4969).StickerCategoryTypes.FAVORITE);
if (canCreateExpressions) {
canCreateExpressions = guildId === guild.id;
}
if (canCreateExpressions) {
canCreateExpressions = tmpResult.getManageResourcePermissions(guild).canCreateExpressions;
}
if (canCreateExpressions) {
tmpResult = tmp(tmp2[16]);
canCreateExpressions = sendable.length < tmpResult.getTotalStickerCountForTier(guild.premiumTier);
}
let sum = length;
if (canCreateExpressions) {
sum = length + 1;
}
rounded = Math.ceil(sum / closure_0);
num = 0;
if (!flag) {
num = rounded;
}
items1[closure_5] = num;
for (let num2 = 0; num2 < rounded; num2 = num2 + 1) {
let tmp12 = closure_0;
let result = num2 * closure_0;
let substr = sendable.slice(result, result + closure_0);
let mapped = substr.map((pack_id) => {
const obj = { type: collapsedStickersCategories(num[15]).StickerGridItemTypes.STICKER, sticker: pack_id, packId: null, gridSectionIndex: null, rowIndex: null, columnIndex: null, visibleRowIndex: null, category: null };
let str = "TODO - fix";
if (obj2.isStandardSticker(pack_id)) {
str = pack_id.pack_id;
}
obj[2] = str;
obj[3] = closure_5;
obj[4] = closure_4;
obj[5] = arg1;
obj[6] = closure_6;
obj[7] = closure_0;
return obj;
});
let tmp14 = closure_5;
let tmp15 = closure_5 > findIndexResult1;
let tmp16 = num2;
if (tmp15) {
let tmp17 = closure_5;
tmp15 = closure_5 > findIndexResult;
}
if (tmp15) {
tmp15 = null != guild;
}
if (tmp15) {
tmp15 = sum > sendable.length;
}
if (tmp15) {
obj = { type: null, guild_id: null, name: null, gridSectionIndex: null, rowIndex: null, columnIndex: null, visibleRowIndex: null };
let tmp18 = collapsedStickersCategories;
let tmp19 = num;
obj[0] = collapsedStickersCategories(num[15]).StickerGridItemTypes.CREATE_STICKER;
obj[1] = guild.id;
let intl = collapsedStickersCategories(num[17]).intl;
obj[2] = intl.string(collapsedStickersCategories(num[17]).t["UwF+Cw"]);
let tmp20 = closure_5;
obj[3] = closure_5;
let tmp21 = closure_4;
obj[4] = closure_4;
obj[5] = mapped.length;
let tmp22 = closure_6;
obj[6] = closure_6;
let arr = mapped.push(obj);
}
if (!flag) {
let tmp24 = closure_6;
closure_6 = closure_6 + 1;
let tmp25 = items2;
arr = items2.push(mapped);
let tmp27 = items;
let arr1 = items.push(mapped.length);
}
let tmp29 = closure_4;
closure_4 = closure_4 + 1;
}
closure_5 = closure_5 + 1;
}
if (null == items) {
const iter = stickersCategories[Symbol.iterator]();
const nextResult = iter.next();
while (iter !== undefined) {
let tmp11 = nextResult;
if (nextResult.stickers.length > 0) {
let tmp17 = closure_4;
closure_4 = closure_4 + 1;
let tmp18 = nextResult;
let obj = rounded;
let hasItem;
({ stickers, type } = tmp11);
if (rounded != null) {
let tmp20 = nextResult;
hasItem = obj.has(tmp11.id);
}
let addGridSectionResult = addGridSection(stickers, type, true === hasItem);
} else {
let tmp12 = nextResult;
let tmp13 = collapsedStickersCategories;
let tmp14 = num;
if (tmp11.type === collapsedStickersCategories(num[15]).StickerCategoryTypes.EMPTY_GUILD_UPSELL) {
let tmp15 = closure_5;
items1[closure_5] = 0;
let tmp16 = closure_5;
closure_5 = closure_5 + 1;
}
}
continue;
}
const tmp6 = stickersCategories;
} else {
if (tmp22.sendable.length > 0) {
addGridSection(tmp22.sendable, collapsedStickersCategories(num[15]).StickerCategoryTypes.SEARCH_RESULTS);
}
if (tmp22.sendableWithPremium.length > 0) {
addGridSection(tmp22.sendableWithPremium, collapsedStickersCategories(num[15]).StickerCategoryTypes.SEARCH_RESULTS);
}
}
}
obj = { rowCount: closure_4, rowCountBySection: items1, stickersGrid: items2, gutterWidth: rounded1, columnCounts: items };
return obj;
}, items);
};
export function useHasSendableSticker() {
return true;
}
export const useFetchStickerPacks = function useFetchStickerPacks() {
const effect = React.useEffect(() => {
const stickerPacks = pack_id(table[11]).fetchStickerPacks();
}, []);
};
export const useFavoriteStickerIds = function useFavoriteStickerIds() {
const favoriteStickers = useFrecencySettings.useFrecencySettings().favoriteStickers;
let stickerIds;
if (favoriteStickers != null) {
stickerIds = favoriteStickers.stickerIds;
}
if (stickerIds == null) {
stickerIds = closure_13;
}
return stickerIds;
};
export const useFavoriteStickers = function useFavoriteStickers() {
const favoriteStickers = stickerIds(10239).useFrecencySettings().favoriteStickers;
stickerIds = undefined;
if (favoriteStickers != null) {
stickerIds = favoriteStickers.stickerIds;
}
if (stickerIds == null) {
stickerIds = closure_13;
}
const obj = stickerIds(10239);
const tmp = stickerIds;
const items = [closure_11];
const items1 = [stickerIds];
return stickerIds(589).useStateFromStoresArray(items, () => {
const mapped = channel.map((arg0) => stickerById.getStickerById(arg0));
return mapped.filter((body) => {
let tmp = null != body;
if (tmp) {
const isGuildStickerResult = callback(table[13]).isGuildSticker(body);
let result = !isGuildStickerResult;
if (isGuildStickerResult) {
result = tmp2(tmp3[13]).isAvailableGuildSticker(body);
const tmp2Result = tmp2(tmp3[13]);
}
tmp = result;
const obj = callback(table[13]);
tmp2 = callback;
tmp3 = table;
}
return tmp;
});
}, items1);
};
export const useLatestFrecentStickerIds = function useLatestFrecentStickerIds() {
const frecencySettings = useFrecencySettings.useFrecencySettings();
let keys = closure_13;
let stickers;
if (frecencySettings != null) {
const stickerFrecency = frecencySettings.stickerFrecency;
if (stickerFrecency != null) {
stickers = stickerFrecency.stickers;
}
}
if (null != stickers) {
let stickers1;
if (frecencySettings != null) {
const stickerFrecency2 = frecencySettings.stickerFrecency;
if (stickerFrecency2 != null) {
stickers1 = stickerFrecency2.stickers;
}
}
keys = Object.keys(stickers1);
}
return keys;
};
export const useLatestFrecentStickers = function useLatestFrecentStickers() {
const frecencySettings = keys(10239).useFrecencySettings();
keys = closure_13;
let stickers;
if (frecencySettings != null) {
const stickerFrecency = frecencySettings.stickerFrecency;
if (stickerFrecency != null) {
stickers = stickerFrecency.stickers;
}
}
if (null != stickers) {
let stickers1;
if (frecencySettings != null) {
const stickerFrecency2 = frecencySettings.stickerFrecency;
if (stickerFrecency2 != null) {
stickers1 = stickerFrecency2.stickers;
}
}
keys = Object.keys(stickers1);
}
const obj = keys(10239);
const tmp = keys;
const items = [closure_11];
const items1 = [keys];
return keys(589).useStateFromStoresArray(items, () => {
const mapped = keys.map((arg0) => stickerById.getStickerById(arg0));
return mapped.filter((arg0) => undefined !== arg0);
}, items1);
};
export { useStickerPackCategories };
export const useStickerForRenderableSticker = function useStickerForRenderableSticker(renderableSticker, arg1) {
const _require = renderableSticker;
let flag = arg1;
if (arg1 === undefined) {
flag = false;
}
dependencyMap = undefined;
c3 = undefined;
let obj;
let React;
obj = _require(589);
const items = [closure_11];
const stateFromStores = obj.useStateFromStores(items, () => closure_1_11.getStickerById(id.id));
const tmp4 = obj(React.useState(true), 2);
dependencyMap = tmp4[1];
[tmp6, c3] = obj(React.useState(false), 2);
const tmp = _require;
const tmp5 = obj(React.useState(false), 2);
let isGuildStickerResult = _require(4828).isGuildSticker(renderableSticker);
if (!isGuildStickerResult) {
isGuildStickerResult = tmp(4828).isStandardSticker(renderableSticker);
const tmpResult = tmp(4828);
}
obj = { hasFetched: tmp6, isReturnable: isGuildStickerResult, renderableSticker, shouldFetch: tmp4[0], stickersStoreDefinition: stateFromStores };
React = obj2.useRef(obj);
const effect = obj2.useEffect(() => {
closure_5.current = obj;
});
const items1 = [flag];
const effect1 = obj2.useEffect(() => {
_undefined(function*() {
if (v0 === 2) {
v0 = 3;
HermesBuiltin.throwTypeError();
} else if (tmp6 === 3) {
if (arg0 === 1) {
throw arg1;
} else if (arg0 === 2) {
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
return { value: "HermesInternal", done: null };
}
} else {
try {
v0 = 2;
if (0 === c1) {
if (arg0 === 1) {
v0 = 3;
throw arg1;
} else if (arg0 === 2) {
v0 = 3;
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
closure_0 = tmp3;
const current = closure_1_5.current;
if (c1) {
if (!current.isReturnable) {
if (null == current.stickersStoreDefinition) {
if (current.shouldFetch) {
if (!current.hasFetched) {
dependencyMap(false);
dependencyMap = 1;
obj1 = closure_1_0(10257);
c1 = 2;
v0 = 1;
obj1 = { value: null, done: false };
obj1[0] = obj1.fetchSticker(tmp24.id);
return obj1;
}
}
}
}
}
}
} else {
if (1 === tmp7) {
dependencyMap = 0;
} else if (arg0 === 1) {
v0 = 3;
throw arg1;
} else if (arg0 === 2) {
dependencyMap = 0;
v0 = 3;
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
dependencyMap = 0;
}
v0(true);
}
v0 = 3;
} catch (tmp15) {
if (tmp4 === dependencyMap) {
v0 = tmp2;
throw tmp15;
} else {
c1 = tmp;
}
}
}
})();
}, items1);
if (isGuildStickerResult) {
const items2 = [renderableSticker, tmp6];
let items3 = items2;
} else {
let tmp11 = stateFromStores;
if (stateFromStores == null) {
tmp11 = null;
}
items3 = [tmp11, tmp6];
}
return items3;
};
export const useFilteredStickerPackCategories = function useFilteredStickerPackCategories(channel) {
let tmp = useStickerPackCategories(channel);
closure_0 = tmp;
const items = [tmp];
return React.useMemo(() => closure_0.filter((type) => {
let tmp = type.type === callback(table[15]).StickerCategoryTypes.EMPTY_GUILD_UPSELL;
if (!tmp) {
tmp = type.stickers.length > 0;
}
return tmp;
}, []), items);
};