mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
refactor(app): name mute and unread state accessors by intent (#1859)
This commit is contained in:
1 parent
52781cfa2d
commit
a2099fb0e2
33 files changed
+173
-490
No files matched your search
@@ -38,7 +38,7 @@ export const ChannelListContextMenu: React.FC<ChannelListContextMenuProps> = obs
|
||||
});
|
||||
const invitableChannelId = InviteUtils.getInvitableChannelId(guild.id);
|
||||
const canInvite = InviteUtils.canInviteToChannel(invitableChannelId, guild.id);
|
||||
const hideMutedChannels = UserGuildSettings.getSettings(guild.id)?.hide_muted_channels ?? false;
|
||||
const hideMutedChannels = UserGuildSettings.getSettingsForScope(guild.id)?.hide_muted_channels ?? false;
|
||||
const handleToggleHideMutedChannels = useCallback(() => {
|
||||
UserGuildSettingsCommands.toggleHideMutedChannels(guild.id);
|
||||
}, [guild.id]);
|
||||
|
||||
@@ -22,7 +22,7 @@ interface FavoritesGuildContextMenuProps {
|
||||
|
||||
export const FavoritesGuildContextMenu: React.FC<FavoritesGuildContextMenuProps> = observer(({onClose}) => {
|
||||
const {i18n} = useLingui();
|
||||
const settings = UserGuildSettings.getSettings(FAVORITES_GUILD_ID);
|
||||
const settings = UserGuildSettings.getSettingsForScope(FAVORITES_GUILD_ID);
|
||||
const isMuted = settings?.muted ?? false;
|
||||
const handleToggleMute = () => {
|
||||
UserGuildSettingsCommands.updateGuildSettings(FAVORITES_GUILD_ID, {muted: !isMuted});
|
||||
|
||||
@@ -34,7 +34,7 @@ interface GuildFolderContextMenuProps {
|
||||
}
|
||||
|
||||
function guildHasUnreadState(guildId: string): boolean {
|
||||
return GuildReadState.hasUnread(guildId) || GuildReadState.getGuildHasUnreadIgnoreMuted(guildId);
|
||||
return GuildReadState.guildIsUnread(guildId) || GuildReadState.guildUnreadIgnoringMute(guildId);
|
||||
}
|
||||
|
||||
export const GuildFolderContextMenu: React.FC<GuildFolderContextMenuProps> = observer(({folder, guilds, onClose}) => {
|
||||
|
||||
@@ -132,11 +132,11 @@ function getCategoryMenuState(category: Channel): CategoryMenuState {
|
||||
(ch) => ch.parentId === category.id && ch.type !== ChannelTypes.GUILD_CATEGORY,
|
||||
);
|
||||
const hasUnread = channelsInCategory.some((ch) => ReadStates.hasUnread(ch.id));
|
||||
const isCollapsed = UserGuildSettings.isChannelCollapsed(guildId, category.id);
|
||||
const isCollapsed = UserGuildSettings.isChannelSectionCollapsed(guildId, category.id);
|
||||
const categoryIds = channels.filter((ch) => ch.type === ChannelTypes.GUILD_CATEGORY).map((ch) => ch.id);
|
||||
const allCategoriesCollapsed =
|
||||
categoryIds.length > 0
|
||||
? categoryIds.every((categoryId) => UserGuildSettings.isChannelCollapsed(guildId, categoryId))
|
||||
? categoryIds.every((categoryId) => UserGuildSettings.isChannelSectionCollapsed(guildId, categoryId))
|
||||
: false;
|
||||
const categoryOverride = UserGuildSettings.getChannelOverride(guildId, category.id);
|
||||
const isMuted = categoryOverride?.muted ?? false;
|
||||
|
||||
@@ -113,7 +113,7 @@ export const MarkCategoryAsReadMenuItem: React.FC<CategoryMenuItemProps> = obser
|
||||
export const CollapseCategoryMenuItem: React.FC<CategoryMenuItemProps> = observer(({category, onClose}) => {
|
||||
const {i18n} = useLingui();
|
||||
const guildId = category.guildId!;
|
||||
const isCollapsed = UserGuildSettings.isChannelCollapsed(guildId, category.id);
|
||||
const isCollapsed = UserGuildSettings.isChannelSectionCollapsed(guildId, category.id);
|
||||
const handleToggleCollapse = useCallback(() => {
|
||||
UserGuildSettingsCommands.toggleChannelCollapsed(guildId, category.id);
|
||||
onClose();
|
||||
@@ -138,7 +138,7 @@ export const CollapseAllCategoriesMenuItem: React.FC<CategoryMenuItemProps> = ob
|
||||
);
|
||||
const allCategoriesCollapsed = useMemo(() => {
|
||||
if (categoryIds.length === 0) return false;
|
||||
return categoryIds.every((categoryId) => UserGuildSettings.isChannelCollapsed(guildId, categoryId));
|
||||
return categoryIds.every((categoryId) => UserGuildSettings.isChannelSectionCollapsed(guildId, categoryId));
|
||||
}, [guildId, categoryIds]);
|
||||
const handleToggleCollapseAll = useCallback(() => {
|
||||
UserGuildSettingsCommands.toggleAllCategoriesCollapsed(guildId, categoryIds);
|
||||
|
||||
@@ -164,7 +164,7 @@ export function useGuildMenuData(guild: Guild, options: UseGuildMenuDataOptions)
|
||||
const isOwner = guild.isOwner(Authentication.currentUserId);
|
||||
const developerMode = UserSettings.developerMode;
|
||||
const canEditCommunityProfile = Users.getCurrentUser()?.isClaimed() ?? true;
|
||||
const settings = UserGuildSettings.getSettings(guild.id);
|
||||
const settings = UserGuildSettings.getSettingsForScope(guild.id);
|
||||
const hideMutedChannels = settings?.hide_muted_channels ?? false;
|
||||
const isMuted = settings?.muted ?? false;
|
||||
const muteConfig = settings?.mute_config;
|
||||
@@ -298,7 +298,7 @@ export function useGuildMenuData(guild: Guild, options: UseGuildMenuDataOptions)
|
||||
ModalCommands.runAfterBottomSheetClose(onClose, () => openReportGuildModal({i18n, guild}));
|
||||
},
|
||||
handleToggleHideMutedChannels: (checked: boolean) => {
|
||||
const currentSettings = UserGuildSettings.getSettings(guild.id);
|
||||
const currentSettings = UserGuildSettings.getSettingsForScope(guild.id);
|
||||
const currentValue = currentSettings?.hide_muted_channels ?? false;
|
||||
if (checked === currentValue) return;
|
||||
UserGuildSettingsCommands.toggleHideMutedChannels(guild.id);
|
||||
|
||||
@@ -148,7 +148,7 @@ export const InvitePeopleMenuItem: React.FC<GuildMenuItemProps> = observer(({gui
|
||||
});
|
||||
export const MuteCommunityMenuItem: React.FC<GuildMenuItemProps> = observer(({guild, onClose}) => {
|
||||
const {i18n} = useLingui();
|
||||
const settings = UserGuildSettings.getSettings(guild.id);
|
||||
const settings = UserGuildSettings.getSettingsForScope(guild.id);
|
||||
const isMuted = settings?.muted ?? false;
|
||||
const muteConfig = settings?.mute_config;
|
||||
const mutedText = getMutedText(isMuted, muteConfig);
|
||||
@@ -219,7 +219,7 @@ export const MuteCommunityMenuItem: React.FC<GuildMenuItemProps> = observer(({gu
|
||||
});
|
||||
export const NotificationSettingsMenuItem: React.FC<GuildMenuItemProps> = observer(({guild, onClose}) => {
|
||||
const {i18n} = useLingui();
|
||||
const settings = UserGuildSettings.getSettings(guild.id);
|
||||
const settings = UserGuildSettings.getSettingsForScope(guild.id);
|
||||
const suppressEveryone = settings?.suppress_everyone ?? false;
|
||||
const suppressRoles = settings?.suppress_roles ?? false;
|
||||
const mobilePush = settings?.mobile_push ?? true;
|
||||
@@ -323,11 +323,11 @@ export const NotificationSettingsMenuItem: React.FC<GuildMenuItemProps> = observ
|
||||
});
|
||||
export const HideMutedChannelsMenuItem: React.FC<GuildMenuItemProps> = observer(({guild}) => {
|
||||
const {i18n} = useLingui();
|
||||
const settings = UserGuildSettings.getSettings(guild.id);
|
||||
const settings = UserGuildSettings.getSettingsForScope(guild.id);
|
||||
const hideMutedChannels = settings?.hide_muted_channels ?? false;
|
||||
const handleToggle = useCallback(
|
||||
(checked: boolean) => {
|
||||
const currentSettings = UserGuildSettings.getSettings(guild.id);
|
||||
const currentSettings = UserGuildSettings.getSettingsForScope(guild.id);
|
||||
const currentValue = currentSettings?.hide_muted_channels ?? false;
|
||||
if (checked === currentValue) return;
|
||||
UserGuildSettingsCommands.toggleHideMutedChannels(guild.id);
|
||||
|
||||
@@ -223,7 +223,7 @@ class NotificationState {
|
||||
}
|
||||
|
||||
private shouldNotifyBasedOnSettings(channel: Channel, messageRecord: Message, currentUser: User): boolean {
|
||||
const level = UserGuildSettings.resolvedMessageNotifications({
|
||||
const level = UserGuildSettings.resolveEffectiveMessageNotifications({
|
||||
id: channel.id,
|
||||
guildId: channel.guildId,
|
||||
parentId: channel.parentId ?? undefined,
|
||||
@@ -261,7 +261,7 @@ class NotificationState {
|
||||
return null;
|
||||
}
|
||||
if (
|
||||
UserGuildSettings.allowNoMessages({
|
||||
UserGuildSettings.resolvesToNoMessages({
|
||||
id: channel.id,
|
||||
guildId: channel.guildId,
|
||||
parentId: channel.parentId ?? undefined,
|
||||
|
||||
Reference in new issue
Block a user