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

327 lines
12 KiB
TypeScript

// Metro module 5129 (f5130).
import ImpersonateStore from "../impersonate/ImpersonateStore";
import ChannelStore from "../../stores/ChannelStore";
import UserGuildSettingsStore from "../../stores/UserGuildSettingsStore";
import { AnalyticEvents } from "../../Constants";
import { ChannelNotificationSettingsFlags, GuildNotificationSettingsFlags } from "../user_settings/UserSettingsConstants";
import { updateImpersonatedChannels, updateImpersonatedData } from "../impersonate/ImpersonateActionCreators";
import * as _Module1384 from "../../_bundle/Module1384";
import { addFlag, setFlag } from "../../_bundle/Module1384";
import { getCurrentChannelSettings, trackChannelNotificationSettingsUpdate, NotificationLabel, NotificationLabels } from "../../utils/NotificationSettingsUtils";
import UserGuildSettingsManager from "../user_settings/UserGuildSettingsManager";
import Dispatcher from "../../Dispatcher";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
import { collectGuildAnalyticsMetadata, collectChannelAnalyticsMetadata } from "../app_analytics/AppAnalyticsUtils";
import { debounce } from "../../_bundle/Module12";
import NotificationSettingsModalActionCreators from "../../actions/NotificationSettingsModalActionCreators";
import { UserSettingsDelay, updateUserGuildSettings } from "../user_settings/UserSettingsProtoActionCreators";
import { GuildOnboardingProgress } from "../../_bundle/Module1306";
function $mk75517($env) {
return (a0) => {
const r2 = $env;
const r5 = $env.$parent;
const channelIdFlags = r5[6].getChannelIdFlags(r2[0], a0);
r2[1][a0] = {
flags: (0, r5[0])(r5[2][7]).setFlag(channelIdFlags, r5[8].OPT_IN_ENABLED, false)
};
};
}
let $mk75518 = function() {
return (a0) => {
const r15 = _Module1384.hasFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_CLEARED) && !_Module1384.hasFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_SHOWN);
let r1 = !r15;
if (!r15) {
a0.guildOnboardingProgress = addFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_CLEARED);
a0.guildOnboardingProgress = setFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_SHOWN, false);
r1 = true;
}
return r1;
};
};
let env3091 = {};
env3091[10] = function _persistOptInChannelUpdates2() {
const r8 = async (c25357_0, channel_overrides) => {
let c29465_0, c29465_1;
L14: {
c29465_0 = c25357_0;
c29465_1 = channel_overrides;
if (c25357_0 == null) {
break L14;
}
if (ImpersonateStore.isFullServerPreview(c25357_0)) {
break L14;
}
const r34 = {};
r34[c25357_0] = {
channel_overrides
};
await UserGuildSettingsManager.saveUserGuildSettingsBulk(r34);
Dispatcher.dispatch({
type: "USER_GUILD_SETTINGS_REMOVE_PENDING_CHANNEL_UPDATES",
guildId: c29465_0,
updates: c29465_1
});
return void 0;
}
};
env3091[10] = r8;
return r8.apply(this, arguments);
};
const r33 = debounce((a0, a1) => (function _persistOptInChannelUpdates() {
return env3091[10].apply(this, arguments);
})(a0, a1), 1000);
export function setOptInChannel(a0, a1, a2, a3) {
if (a0 != null) {
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedChannels(a0, a2 ? [a1] : [], a2 ? [] : [a1]);
} else {
const channelIdFlags = UserGuildSettingsStore.getChannelIdFlags(a0, a1);
const r8 = a2 ? channelIdFlags : setFlag(channelIdFlags, ChannelNotificationSettingsFlags.FAVORITED, false);
const currentChannelSettings = getCurrentChannelSettings(a0, a1);
const settings = {
flags: setFlag(r8, ChannelNotificationSettingsFlags.OPT_IN_ENABLED, a2)
};
const r45 = {};
const channel_overrides2 = {};
channel_overrides2[a1] = settings;
r45[a0] = {
channel_overrides: channel_overrides2
};
UserGuildSettingsManager.saveUserGuildSettingsBulk(r45);
Dispatcher.dispatch({
type: "USER_GUILD_SETTINGS_CHANNEL_UPDATE",
guildId: a0,
channelId: a1,
settings
});
trackChannelNotificationSettingsUpdate({
guildId: a0,
channelId: a1,
change: settings,
previous: currentChannelSettings,
label: NotificationLabel.optedIn(a2),
location: a3
});
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
updateUserGuildSettings(a0, $mk75518(), INFREQUENT_USER_ACTION);
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
...collectChannelAnalyticsMetadata(ChannelStore.getChannel(a1)),
action_type: a2 ? "add" : "remove",
location: a3
});
}
}
}
export function updateOptInChannelsImmediate(a0, a1, a2, a3) {
if (a0 != null) {
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedChannels(a0, a2 ? [a1] : [], a2 ? [] : [a1]);
updateImpersonatedData(a0, {
optInEnabled: true
});
return void 0;
}
const channelIdFlags = UserGuildSettingsStore.getChannelIdFlags(a0, a1);
const r10 = a2 ? channelIdFlags : setFlag(channelIdFlags, ChannelNotificationSettingsFlags.FAVORITED, false);
const currentChannelSettings = getCurrentChannelSettings(a0, a1);
const settings = {
flags: setFlag(r10, ChannelNotificationSettingsFlags.OPT_IN_ENABLED, a2)
};
if (!UserGuildSettingsStore.isOptInEnabled(a0)) {
const flags = setFlag(UserGuildSettingsStore.getGuildFlags(a0), GuildNotificationSettingsFlags.OPT_IN_CHANNELS_ON, true);
const r54 = {};
const channel_overrides2 = {};
channel_overrides2[a1] = settings;
r54[a0] = {
channel_overrides: channel_overrides2,
flags
};
UserGuildSettingsManager.saveUserGuildSettingsBulk(r54);
}
Dispatcher.dispatch({
type: "USER_GUILD_SETTINGS_CHANNEL_UPDATE",
guildId: a0,
channelId: a1,
settings
});
trackChannelNotificationSettingsUpdate({
guildId: a0,
channelId: a1,
change: settings,
previous: currentChannelSettings,
label: NotificationLabel.optedIn(a2),
location: a3
});
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
updateUserGuildSettings(a0, $mk75518(), INFREQUENT_USER_ACTION);
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
...collectChannelAnalyticsMetadata(ChannelStore.getChannel(a1)),
action_type: a2 ? "add" : "remove",
location: a3
});
}
}
export { r33 as updateOptInChannelsBatched };
export function bulkOptInChannels(a0, a1) {
let c14688_1;
let r2 = arguments[2];
if (r2 === void 0) {
r2 = false;
}
c14688_1 = void 0;
if (a0 != null) {
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedChannels(a0, a1, []);
if (r2) {
updateImpersonatedData(a0, {
optInEnabled: true
});
}
return void 0;
}
const location2 = arguments[3];
const channel_overrides2 = {};
c14688_1 = channel_overrides2;
a1.forEach((item) => {
c14688_1[item] = {
flags: setFlag(UserGuildSettingsStore.getChannelIdFlags(a0, item), ChannelNotificationSettingsFlags.OPT_IN_ENABLED, true)
};
});
if (r2) {
NotificationSettingsModalActionCreators.updateGuildAndChannelNotificationSettings(a0, {
flags: setFlag(UserGuildSettingsStore.getGuildFlags(a0), GuildNotificationSettingsFlags.OPT_IN_CHANNELS_ON, true),
channel_overrides: channel_overrides2
}, NotificationLabels.OptedIn);
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
action_type: "add_many_and_enable_guild",
location: location2
});
} else {
NotificationSettingsModalActionCreators.updateChannelOverrideSettingsBulk(a0, channel_overrides2, NotificationLabels.OptedIn);
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
action_type: "add_many",
location: location2
});
}
}
}
export function bulkOptOutChannels(a0, a1, a2) {
let env14687;
const r2 = env14687 = {
$parent: env3091
};
env14687[0] = a0;
if (a0 != null) {
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedChannels(a0, [], a1);
} else {
const r11 = {};
env14687[1] = r11;
a1.forEach($mk75517(r2));
NotificationSettingsModalActionCreators.updateChannelOverrideSettingsBulk(a0, r11, NotificationLabels.OptedOut);
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
action_type: "remove_many",
location: a2
});
}
}
}
export function setGuildOptIn(a0, a1, a2) {
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedData(a0, {
optInEnabled: a1
});
} else {
NotificationSettingsModalActionCreators.updateGuildNotificationSettings(a0, {
flags: setFlag(UserGuildSettingsStore.getGuildFlags(a0), GuildNotificationSettingsFlags.OPT_IN_CHANNELS_ON, a1)
}, NotificationLabel.optedIn(a1));
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
action_type: a1 ? "guild_enabled" : "guild_disabled",
location: a2
});
}
}
export function setIsFavorite(a0, a1, a2, a3) {
if (a0 != null && !ImpersonateStore.isFullServerPreview(a0)) {
const channelIdFlags = UserGuildSettingsStore.getChannelIdFlags(a0, a1);
const hasFlag = _Module1384.hasFlag(channelIdFlags, ChannelNotificationSettingsFlags.OPT_IN_ENABLED);
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
flags: setFlag((hasFlag ? !hasFlag : a2) ? setFlag(channelIdFlags, ChannelNotificationSettingsFlags.OPT_IN_ENABLED, true) : channelIdFlags, ChannelNotificationSettingsFlags.FAVORITED, a2)
}, NotificationLabel.favorited(a2));
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
action_type: a2 ? "favorited" : "unfavorited",
location: a3
});
}
}
export function setMessagesFavorite(a0, a1) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(null, a0, {
flags: setFlag(UserGuildSettingsStore.getChannelIdFlags(null, a0), ChannelNotificationSettingsFlags.FAVORITED, a1)
}, NotificationLabel.favorited(a1));
}
export function enableGuildNotice(a0) {
updateUserGuildSettings(a0, (a0) => {
const hasFlag = _Module1384.hasFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_SHOWN);
let r0 = !hasFlag;
if (!hasFlag) {
a0.guildOnboardingProgress = addFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_SHOWN);
r0 = true;
}
return r0;
}, UserSettingsDelay.INFREQUENT_USER_ACTION);
}
export function dismissGuildNotice(a0) {
const INFREQUENT_USER_ACTION = UserSettingsDelay.INFREQUENT_USER_ACTION;
updateUserGuildSettings(a0, $mk75518(), INFREQUENT_USER_ACTION);
}
export function clearGuildNotice(a0) {
let env14689;
const r8 = [...UserGuildSettingsStore.getOptedInChannels(a0)];
const r16 = env14689 = {
$parent: env3091
};
env14689[0] = a0;
env14689[1] = void 0;
if (a0 != null) {
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedChannels(a0, [], r8);
} else {
const r12 = {};
env14689[1] = r12;
r8.forEach($mk75517(r16));
NotificationSettingsModalActionCreators.updateChannelOverrideSettingsBulk(a0, r12, NotificationLabels.OptedOut);
AnalyticsUtils.track(AnalyticEvents.CHANNEL_LIST_UPDATED, {
...collectGuildAnalyticsMetadata(a0),
action_type: "remove_many",
location: void 0
});
}
}
updateUserGuildSettings(a0, (a0) => {
a0.guildOnboardingProgress = setFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_SHOWN, false);
a0.guildOnboardingProgress = setFlag(a0.guildOnboardingProgress, GuildOnboardingProgress.GUILD_NOTICE_CLEARED, false);
return true;
}, UserSettingsDelay.INFREQUENT_USER_ACTION);
}
export function dimissFavoriteSuggestion(a0, a1) {
Dispatcher.dispatch({
type: "DISMISS_FAVORITE_SUGGESTION",
guildId: a0,
channelId: a1
});
}
export function setRecentlyActiveCollapsed(a0, a1) {
Dispatcher.dispatch({
type: "SET_RECENTLY_ACTIVE_COLLAPSED",
guildId: a0,
collapsed: a1
});
}