Files
discord-decomp/modules/favorites/FavoritesActionCreators.tsx
T
2026-11-01 12:12:55 +02:00

475 lines
16 KiB
TypeScript

// Metro module 10214 (f10215).
import { THREAD_CHANNEL_TYPES } from "../../records/ChannelRecord";
import ChannelStore from "../../stores/ChannelStore";
import PermissionStore from "../../stores/PermissionStore";
import FavoriteStore from "./FavoriteStore";
import { FAVORITES_UNCATEGORIZED_PARENT_ID, MAX_FAVORITE_CHANNELS } from "./FavoritesConstants";
import { Permissions } from "../../_bundle/Module505";
import * as _Module1306 from "../../_bundle/Module1306";
import { FavoriteChannelType } from "../../_bundle/Module1306";
import { UInt32Value, BoolValue } from "../../_bundle/Module1337";
import Module12 from "../../_bundle/Module12";
import { getFavoritesAccess } from "./FavoritesHooks";
import AlertActionCreators from "../../actions/AlertActionCreators";
import { intl, t } from "../../intl/index.native";
import { PreloadedUserSettingsActionCreators, UserSettingsDelay, removeDismissedContent } from "../user_settings/UserSettingsProtoActionCreators";
import { trackFavoritesGuildRemoveFromFavorites, trackFavoritesGuildAddToFavorites, trackFavoritesGuildOrderUpdated, trackFavoritesGuildVisibilitySettingToggled } from "./FavoritesAnalytics";
import { isFavoritesGuildCategoryNameValid } from "./FavoritesUtils";
import SnowflakeUtils from "../../utils/SnowflakeUtils";
import { FAVORITES_GUILD_DISMISSIBLE_CONTENT } from "./FavoritesDismissibleContent";
function $mk84185($env) {
return (a0) => {
let r38;
const r13 = $env;
let r3 = false;
let r2 = r13[2][Symbol.iterator]();
const next = r2.next;
const r40 = $env.$parent;
while (true) {
const r41 = r2 === void 0 ? void 0 : (r38 = next.call(r2)).done ? r2 = void 0 : r38.value;
if (r2 !== void 0) {
L10: {
try {
const r17 = r40[13];
const favoriteChannels = a0.favoriteChannels;
const r20 = r40[0];
const r43 = r40[2];
const r48 = r17(favoriteChannels, r20(r43[6]).FavoriteChannelType.REFERENCE_ORIGINAL);
if (r48 == null) {
const r50 = r40[4];
const channel = r50.getChannel(r41);
const favoriteChannels2 = a0.favoriteChannels;
const FavoriteChannel = r20(r43[6]).FavoriteChannel;
const r60 = {
nickname: "",
type: r20(r43[6]).FavoriteChannelType.REFERENCE_ORIGINAL,
channelType: channel != null ? r20(r43[7]).UInt32Value.create({
value: channel.type
}) : void 0,
position: (0, r40[10])(a0.favoriteChannels),
parentId: null
};
let parentId = r13[0];
if (parentId == null) {
parentId = r40[7];
}
r60.parentId = parentId;
favoriteChannels2[r41] = FavoriteChannel.create(r60);
(0, r40[11])(a0.favoriteChannels);
const r75 = r40[12];
const favoriteChannels3 = a0.favoriteChannels;
r75(favoriteChannels3, r41);
r3 = true;
r20(r43[13]).trackFavoritesGuildAddToFavorites(r13[1], (0, r40[17])(r41, r20(r43[6]).FavoriteChannelType.REFERENCE_ORIGINAL), (0, r40[16])(a0.favoriteChannels));
continue;
}
(0, r40[14])(r48);
if (r3) {
break L10;
}
} catch (r97) {
if (r2 !== void 0 && typeof r2.return === "function") {
try {
r2.return();
} catch {}
}
throw r97;
}
const r95 = r2;
if (r95 !== void 0 && typeof r95.return === "function") {
r95.return();
}
return false;
}
const r96 = r2;
if (r96 !== void 0 && typeof r96.return === "function") {
r96.return();
}
}
return void 0;
}
};
}
function $mk84187($env) {
return (a0) => {
if ((0, $env[0])(a0)) {
return void 0;
}
return false;
};
}
let cleanFavoriteChannels, cleanupChannelParentId, getReachedLimit, showLimitReachedAlert, onSaveFailed, getFavoritesCount, getAnalyticsChannelType, removeFavoriteChannel;
let $mk84182 = function() {
return (a0) => a0.type !== FavoriteChannelType.CATEGORY;
}, $mk84184 = function() {
return (a0) => !FavoriteStore.isFavorite(a0);
};
let env6810 = {};
const getNextPositionFromChannels = function getNextPositionFromChannels(a0) {
let r16;
let r7 = 0;
let r6 = 0;
for (const key in a0) {
r16 = r7;
r6 = r16;
const r17 = a0[key];
r7 = r17 != null && r17.position != null ? Math.max(r16, r17.position) : r16;
}
r16 = r7;
r6 = r16;
return r6 + 1;
};
cleanFavoriteChannels = function cleanFavoriteChannels(a0) {
for (const key in a0) {
const r12 = a0[key];
if (r12 != null) {
if (r12.type !== FavoriteChannelType.CATEGORY) {
const channel = ChannelStore.getChannel(key);
if (channel != null) {
if (r12.channelType == null) {
r12.channelType = UInt32Value.create({
value: channel.type
});
}
if (!(channel.isPrivate() || PermissionStore.can(Permissions.VIEW_CHANNEL, channel))) {
delete a0[key];
}
} else {
const value2 = r12.channelType?.value;
if (value2 != null && THREAD_CHANNEL_TYPES.has(value2)) {
continue;
}
delete a0[key];
}
}
} else {
delete a0[key];
}
}
};
cleanupChannelParentId = function cleanupChannelParentId(a0, a1) {
const r3 = a0[a1];
if (r3 != null) {
if (r3.parentId !== FAVORITES_UNCATEGORIZED_PARENT_ID) {
const r10 = r3.parentId != null ? a0[r3.parentId] : null;
if (!(r10 != null && r10.type === FavoriteChannelType.CATEGORY)) {
r3.parentId = FAVORITES_UNCATEGORIZED_PARENT_ID;
}
}
}
};
getReachedLimit = function getReachedLimit(a0, a1) {
cleanFavoriteChannels(a0);
if (Module12.size(a0) >= MAX_FAVORITE_CHANNELS) {
return MAX_FAVORITE_CHANNELS;
}
const favoriteLimit = getFavoritesAccess().favoriteLimit;
return favoriteLimit <= 0 ? null : a1 !== FavoriteChannelType.CATEGORY ? Module12.filter(a0, $mk84182()).length >= favoriteLimit ? favoriteLimit : null : null;
};
showLimitReachedAlert = function showLimitReachedAlert(a0) {
AlertActionCreators.show({
title: intl.string(t["+XYXtZ"]),
body: intl.formatToPlainString(t.JaIyFi, {
count: a0
})
});
};
onSaveFailed = function onSaveFailed() {
AlertActionCreators.show({
title: intl.string(t.iufib1),
body: intl.string(t.eAn6z2),
onCloseCallback: function onCloseCallback() {
window.location.reload();
}
});
};
getFavoritesCount = function getFavoritesCount(a0) {
return Object.keys(a0).length;
};
getAnalyticsChannelType = function getAnalyticsChannelType(a0, a1) {
const CATEGORY = FavoriteChannelType.CATEGORY;
let r11 = null;
if (a1 !== CATEGORY) {
let r16 = ChannelStore.getChannel(a0)?.type;
if (r16 == null) {
r16 = null;
}
r11 = r16;
}
return r11;
};
removeFavoriteChannel = function removeFavoriteChannel(a0) {
let c17767_3;
let c17767_0 = a0;
let r4 = arguments[1];
if (r4 === void 0) {
r4 = {};
}
let trackAnalytics = r4.trackAnalytics;
if (trackAnalytics === void 0) {
trackAnalytics = true;
}
let c17767_1 = trackAnalytics;
c17767_3 = void 0;
const favorite = FavoriteStore.getFavorite(a0);
if (favorite != null) {
let r17 = null;
if (trackAnalytics) {
const type = favorite.type;
const CATEGORY = FavoriteChannelType.CATEGORY;
let r24 = null;
if (type !== CATEGORY) {
let r28 = ChannelStore.getChannel(a0)?.type;
if (r28 == null) {
r28 = null;
}
r24 = r28;
}
r17 = r24;
}
c17767_3 = r17;
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
delete a0.favoriteChannels[c17767_0];
if (favorite.type === FavoriteChannelType.CATEGORY) {
const favoriteChannels = a0.favoriteChannels;
for (const key in favoriteChannels) {
if (a0.favoriteChannels[key].parentId === c17767_0) {
a0.favoriteChannels[key].parentId = FAVORITES_UNCATEGORIZED_PARENT_ID;
}
}
}
cleanFavoriteChannels(a0.favoriteChannels);
if (c17767_1) {
trackFavoritesGuildRemoveFromFavorites(c17767_3, Object.keys(a0.favoriteChannels).length);
}
}, UserSettingsDelay.INFREQUENT_USER_ACTION, onSaveFailed);
}
};
export function addFavoriteChannel(a0, a1, r4 = "channel_context_menu") {
let env17768;
const r6 = [a0];
const r13 = env17768 = {
$parent: env6810
};
env17768[0] = a1;
if (r4 === void 0) {
r4 = "channel_context_menu";
}
env17768[1] = r4;
env17768[2] = void 0;
const r16 = r6.filter($mk84184());
env17768[2] = r16;
if (r16.length !== 0) {
const FREQUENT_USER_ACTION = UserSettingsDelay.FREQUENT_USER_ACTION;
PreloadedUserSettingsActionCreators.updateAsync("favorites", $mk84185(r13), FREQUENT_USER_ACTION, onSaveFailed);
}
}
export function addFavoriteChannels(a0, a1) {
let env17766;
const r2 = env17766 = {
$parent: env6810
};
env17766[0] = a1;
let r4 = arguments[2];
if (r4 === void 0) {
r4 = "channel_context_menu";
}
env17766[1] = r4;
env17766[2] = void 0;
const r15 = a0.filter($mk84184());
env17766[2] = r15;
if (r15.length !== 0) {
const FREQUENT_USER_ACTION = UserSettingsDelay.FREQUENT_USER_ACTION;
PreloadedUserSettingsActionCreators.updateAsync("favorites", $mk84185(r2), FREQUENT_USER_ACTION, onSaveFailed);
}
}
export { removeFavoriteChannel };
export function setFavoriteChannelNickname(a0, c17769_1) {
let c17769_0 = a0;
if (FavoriteStore.isFavorite(a0)) {
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
const r5 = a0.favoriteChannels[c17769_0];
let nickname2 = c17769_1;
if (nickname2 == null) {
nickname2 = "";
}
r5.nickname = nickname2;
}, UserSettingsDelay.INFREQUENT_USER_ACTION, onSaveFailed);
}
}
export function addFavoriteCategory(a0, r3 = "modal") {
let nickname, c17770_2;
let c17770_0 = r3;
nickname = void 0;
c17770_2 = void 0;
if (isFavoritesGuildCategoryNameValid(a0)) {
nickname = a0.trim();
c17770_2 = SnowflakeUtils.fromTimestamp(Date.now());
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
let r29;
const favoriteChannels = a0.favoriteChannels;
const CATEGORY = FavoriteChannelType.CATEGORY;
cleanFavoriteChannels(favoriteChannels);
const r35 = Module12.size(favoriteChannels);
let MAX_FAVORITE_CHANNELS2 = MAX_FAVORITE_CHANNELS;
if (!(r35 >= MAX_FAVORITE_CHANNELS2)) {
const favoriteLimit = getFavoritesAccess().favoriteLimit;
MAX_FAVORITE_CHANNELS2 = favoriteLimit <= 0 ? null : CATEGORY !== FavoriteChannelType.CATEGORY ? Module12.filter(favoriteChannels, $mk84182()).length >= favoriteLimit ? favoriteLimit : null : null;
}
if (MAX_FAVORITE_CHANNELS2 != null) {
AlertActionCreators.show({
title: intl.string(t["+XYXtZ"]),
body: intl.formatToPlainString(t.JaIyFi, {
count: MAX_FAVORITE_CHANNELS2
})
});
return false;
}
const { favoriteChannels: favoriteChannels3, favoriteChannels: favoriteChannels2 } = a0;
let r21 = 0;
let r20 = 0;
for (const key in favoriteChannels2) {
r29 = r21;
r20 = r29;
const r67 = favoriteChannels2[key];
r21 = r67 != null && r67.position != null ? Math.max(r29, r67.position) : r29;
}
r29 = r21;
r20 = r29;
favoriteChannels3[c17770_2] = _Module1306.FavoriteChannel.create({
nickname,
type: FavoriteChannelType.CATEGORY,
position: r20 + 1,
parentId: FAVORITES_UNCATEGORIZED_PARENT_ID
});
const CATEGORY2 = FavoriteChannelType.CATEGORY;
const CATEGORY3 = FavoriteChannelType.CATEGORY;
let r88 = null;
if (CATEGORY2 !== CATEGORY3) {
let r93 = ChannelStore.getChannel(c17770_2)?.type;
if (r93 == null) {
r93 = null;
}
r88 = r93;
}
trackFavoritesGuildAddToFavorites(c17770_0, r88, Object.keys(a0.favoriteChannels).length);
}, UserSettingsDelay.FREQUENT_USER_ACTION, onSaveFailed);
}
}
export function removeFavoriteCategory(a0) {
removeFavoriteChannel(a0);
}
export function setFavoriteCategoryCollapsed(a0, collapsed) {
let c17771_0 = a0;
const favorite2 = FavoriteStore.getFavorite(a0);
if (favorite2 != null && favorite2.type === FavoriteChannelType.CATEGORY) {
let env17772;
const r23 = env17772 = {};
env17772[0] = (a0) => {
const r8 = a0.favoriteChannels[c17771_0];
let r10 = r8 != null && r8.type === FavoriteChannelType.CATEGORY && r8.collapsed !== collapsed;
if (r10) {
r8.collapsed = collapsed;
r10 = true;
}
return r10;
};
const FREQUENT_USER_ACTION = UserSettingsDelay.FREQUENT_USER_ACTION;
PreloadedUserSettingsActionCreators.updateAsync("favorites", $mk84187(r23), FREQUENT_USER_ACTION, onSaveFailed);
}
}
export function setAllFavoriteCategoriesCollapsed(collapsed2) {
let env17774;
const r12 = env17774 = {};
env17774[0] = (a0) => {
let r4;
const favoriteChannels = a0.favoriteChannels;
let r3 = false;
let r6 = false;
for (const key in favoriteChannels) {
r4 = r3;
r6 = r4;
const r21 = a0.favoriteChannels[key];
let r2 = r21 != null && r21.type === FavoriteChannelType.CATEGORY && r21.collapsed !== collapsed2;
if (r2) {
r21.collapsed = collapsed2;
r2 = true;
}
r3 = r2 ? true : r4;
}
r4 = r3;
r6 = r4;
return r6;
};
const FREQUENT_USER_ACTION = UserSettingsDelay.FREQUENT_USER_ACTION;
PreloadedUserSettingsActionCreators.updateAsync("favorites", $mk84187(r12), FREQUENT_USER_ACTION, onSaveFailed);
}
export function updateFavoriteChannels(a0) {
let c17775_0 = a0;
if (a0.length !== 0) {
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
for (const item of c17775_0) {
const id = item.id;
if (item.position != null) {
a0.favoriteChannels[id].position = item.position;
}
if (item.parent_id !== void 0) {
const r40 = a0.favoriteChannels[id];
let parent_id = item.parent_id;
if (parent_id == null) {
parent_id = FAVORITES_UNCATEGORIZED_PARENT_ID;
}
r40.parentId = parent_id;
cleanupChannelParentId(a0.favoriteChannels, id);
}
}
trackFavoritesGuildOrderUpdated();
}, UserSettingsDelay.FREQUENT_USER_ACTION, onSaveFailed);
}
}
export function updateFavoriteChannelParent(c17776_0, c17776_1) {
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
const favoriteChannels = a0.favoriteChannels;
const r8 = favoriteChannels[c17776_0];
let parentId = c17776_1;
if (parentId == null) {
parentId = FAVORITES_UNCATEGORIZED_PARENT_ID;
}
r8.parentId = parentId;
const favoriteChannels2 = a0.favoriteChannels;
const r10 = favoriteChannels2[c17776_0];
if (r10 != null) {
if (r10.parentId !== FAVORITES_UNCATEGORIZED_PARENT_ID) {
const r15 = r10.parentId != null ? favoriteChannels2[r10.parentId] : null;
if (!(r15 != null && r15.type === FavoriteChannelType.CATEGORY)) {
r10.parentId = FAVORITES_UNCATEGORIZED_PARENT_ID;
}
}
}
}, UserSettingsDelay.FREQUENT_USER_ACTION, onSaveFailed);
}
export function toggleFavoriteGuildMuted() {
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
a0.muted = !a0.muted;
}, UserSettingsDelay.INFREQUENT_USER_ACTION, onSaveFailed);
}
export function resetFavoritesGuild() {
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
a0.favoriteChannels = {};
a0.guildVisible = void 0;
a0.muted = false;
}, UserSettingsDelay.INFREQUENT_USER_ACTION, onSaveFailed);
for (const item of FAVORITES_GUILD_DISMISSIBLE_CONTENT) {
removeDismissedContent(item);
}
}
export function setFavoritesGuildVisibility(value, r3 = "settings_page") {
let c17777_1 = r3;
PreloadedUserSettingsActionCreators.updateAsync("favorites", (a0) => {
a0.guildVisible = BoolValue.create({
value
});
trackFavoritesGuildVisibilitySettingToggled(c17777_1, value);
}, UserSettingsDelay.INFREQUENT_USER_ACTION, onSaveFailed);
}