add a global toggle to hide membership events (#142)
fixes #141 Co-authored-by: seres <seres@seres.eu.org> Reviewed-on: #142
This commit is contained in:
parent
80197aff00
commit
800fb5566d
3 changed files with 28 additions and 0 deletions
|
|
@ -166,6 +166,21 @@ class SettingsSectionsController
|
|||
: null,
|
||||
),
|
||||
),
|
||||
.new(
|
||||
title: "Hide Membership Events",
|
||||
description: "Hides membership events (invites, joins, leaves, bans & knocks) from appearing in conversations.",
|
||||
icon: Icons.person_off,
|
||||
builder: (title, description, icon) => SwitchListTile(
|
||||
title: Text(title),
|
||||
subtitle: Text(description),
|
||||
secondary: Icon(icon),
|
||||
value: settings.hideMembershipEvents,
|
||||
onChanged: (value) => ref
|
||||
.read(SettingsController.provider.notifier)
|
||||
.set(settings.copyWith(hideMembershipEvents: value))
|
||||
.onError(showError),
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
]),
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ class const Settings({
|
|||
final bool showAllInHome = false,
|
||||
final bool showMinimizeButton = false,
|
||||
final bool swipeToReply = false,
|
||||
final bool hideMembershipEvents = false,
|
||||
final RoomOrder roomOrder = .unreadFirst,
|
||||
}) with _$Settings {
|
||||
Map<String, Object?> toJson() => _$SettingsToJson(this);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import "package:hooks_riverpod/hooks_riverpod.dart";
|
|||
import "package:nexus/controllers/event.dart";
|
||||
import "package:nexus/controllers/room_chat.dart";
|
||||
import "package:nexus/controllers/rooms.dart";
|
||||
import "package:nexus/controllers/settings.dart";
|
||||
import "package:nexus/helpers/extensions/show_adaptive_menu.dart";
|
||||
import "package:nexus/helpers/hooks/chat_scroll.dart";
|
||||
import "package:nexus/models/content/avatar.dart";
|
||||
|
|
@ -78,6 +79,17 @@ class const EventRenderer(
|
|||
|
||||
if (event == null) return SizedBox.shrink();
|
||||
|
||||
final hideMembershipEvents = (ref
|
||||
.watch(SettingsController.provider)
|
||||
.maybeWhen(
|
||||
orElse: () => false,
|
||||
data: (settings) => settings.hideMembershipEvents,
|
||||
));
|
||||
|
||||
if (event.content is MembershipContent && hideMembershipEvents) {
|
||||
return SizedBox.shrink();
|
||||
}
|
||||
|
||||
final isGrouped =
|
||||
previousEvent?.content is MessageContent &&
|
||||
previousEvent?.redactedBy == null &&
|
||||
|
|
|
|||
Loading…
Reference in a new issue