Files
discord-decomp/modules/notifications/settings/utils/notficationSettingsChannelFlagUtils.tsx
T
2026-11-01 12:12:55 +02:00

73 lines
4.5 KiB
TypeScript

// Metro module 10312 (f10313).
import ChannelStore from "../../../../stores/ChannelStore";
import UserGuildSettingsStore from "../../../../stores/UserGuildSettingsStore";
import { UserNotificationSettings } from "../../../../Constants";
import { UnreadSetting } from "../../../read_states/ReadStateConstants";
import { ChannelNotificationSettingsFlags } from "../../../user_settings/UserSettingsConstants";
import { useStateFromStores, useStateFromStoresArray } from "../../../../_bundle/defaultAreStatesEqual";
import { presetFromSettings, presetName, Presets } from "./notificationSettingsPresetUtils";
import { filterOverrides } from "../../NotificationUtils";
import NotificationSettingsModalActionCreators from "../../../../actions/NotificationSettingsModalActionCreators";
import { withChannelUnreadFlags, resetChannelUnreadFlags } from "./notificationSettingsFlagUtils";
import { NotificationLabels, NotificationLabel } from "../../../../utils/NotificationSettingsUtils";
export function useChannelPresetSettings(c17861_0) {
const stateFromStores = useStateFromStores([UserGuildSettingsStore], () => UserGuildSettingsStore.resolveUnreadSetting(c17861_0));
const stateFromStores2 = useStateFromStores([UserGuildSettingsStore], () => UserGuildSettingsStore.resolvedMessageNotifications(c17861_0));
return {
unread: stateFromStores,
notification: stateFromStores2,
preset: presetFromSettings(stateFromStores, stateFromStores2)
};
}
export function useChannelPresetInheritance(a0) {
const stateFromStoresArray = useStateFromStoresArray([UserGuildSettingsStore], () => filterOverrides(UserGuildSettingsStore.getChannelOverrides(a0.guild_id), {
ignoreMute: true,
ignoreUnreadSetting: false,
ignoreNotificationSetting: false
}));
const [inheritedFrom, inheritedPreset] = useStateFromStoresArray([UserGuildSettingsStore, ChannelStore], () => {
const channel = ChannelStore.getChannel(a0.parent_id);
return channel != null && stateFromStoresArray.includes(channel.id) ? ["parent", presetName(presetFromSettings(UserGuildSettingsStore.resolveUnreadSetting(channel), UserGuildSettingsStore.resolvedMessageNotifications(channel)))] : ["guild", presetName(presetFromSettings(UserGuildSettingsStore.getGuildUnreadSetting(a0.guild_id), UserGuildSettingsStore.getMessageNotifications(a0.guild_id)))];
}, [a0.guild_id, a0.parent_id, stateFromStoresArray]);
return {
inherited: !stateFromStoresArray.includes(a0.id),
inheritedFrom,
inheritedPreset
};
}
export function updateChannelPreset(a0, a1, a2) {
const channelIdFlags = UserGuildSettingsStore.getChannelIdFlags(a0, a1);
if (a2 === Presets.ALL_MESSAGES) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
message_notifications: UserNotificationSettings.ALL_MESSAGES,
flags: withChannelUnreadFlags(channelIdFlags, ChannelNotificationSettingsFlags.UNREADS_ALL_MESSAGES)
}, NotificationLabels.PresetAll);
} else if (a2 === Presets.MENTIONS) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
message_notifications: UserNotificationSettings.ONLY_MENTIONS,
flags: withChannelUnreadFlags(channelIdFlags, ChannelNotificationSettingsFlags.UNREADS_ONLY_MENTIONS)
}, NotificationLabels.PresetMentions);
} else if (a2 === Presets.NOTHING) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
message_notifications: UserNotificationSettings.NO_MESSAGES,
flags: withChannelUnreadFlags(channelIdFlags, ChannelNotificationSettingsFlags.UNREADS_ONLY_MENTIONS)
}, NotificationLabels.PresetNothing);
}
}
export function updateChannelToGuildDefault(a0, a1) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
message_notifications: UserNotificationSettings.NULL,
flags: resetChannelUnreadFlags(UserGuildSettingsStore.getChannelIdFlags(a0, a1))
}, NotificationLabels.PresetDefault);
}
export function updateChannelUnreadSetting(a0, a1, a2) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
flags: withChannelUnreadFlags(UserGuildSettingsStore.getChannelIdFlags(a0, a1), a2 === UnreadSetting.ALL_MESSAGES ? ChannelNotificationSettingsFlags.UNREADS_ALL_MESSAGES : ChannelNotificationSettingsFlags.UNREADS_ONLY_MENTIONS)
}, NotificationLabel.unreads(a2));
}
export function updateChannelNotificationSetting(a0, a1, a2) {
NotificationSettingsModalActionCreators.updateChannelOverrideSettings(a0, a1, {
message_notifications: a2
}, NotificationLabel.notifications(a2));
}