add and render HistoryVisibilityContent
This commit is contained in:
parent
ec64a81fed
commit
70eba46c76
3 changed files with 47 additions and 0 deletions
|
|
@ -14,6 +14,7 @@ import "package:nexus/models/content/encrypted.dart";
|
|||
import "package:nexus/models/content/redaction.dart";
|
||||
import "package:nexus/models/content/server_acl.dart";
|
||||
import "package:nexus/models/content/topic.dart";
|
||||
import "package:nexus/models/content/history_visibility.dart";
|
||||
|
||||
class Content {
|
||||
final Error? parseError;
|
||||
|
|
@ -44,6 +45,10 @@ enum EventType {
|
|||
encryption("m.room.encryption", EncryptionContent.fromJson),
|
||||
membership("m.room.member", MembershipContent.fromJson),
|
||||
create("m.room.create", CreateContent.fromJson),
|
||||
historyVisibility(
|
||||
"m.room.history_visibility",
|
||||
HistoryVisibilityContent.fromJson,
|
||||
),
|
||||
canonicalAlias("m.room.canonical_alias", CanonicalAliasContent.fromJson),
|
||||
joinRules("m.room.join_rules", JoinRulesContent.fromJson),
|
||||
powerLevels("m.room.power_levels", PowerLevelsContent.fromJson),
|
||||
|
|
|
|||
19
lib/models/content/history_visibility.dart
Normal file
19
lib/models/content/history_visibility.dart
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import "package:freezed_annotation/freezed_annotation.dart";
|
||||
import "package:nexus/models/content/content.dart";
|
||||
part "history_visibility.freezed.dart";
|
||||
part "history_visibility.g.dart";
|
||||
|
||||
@freezed
|
||||
abstract class HistoryVisibilityContent extends Content
|
||||
with _$HistoryVisibilityContent {
|
||||
HistoryVisibilityContent._();
|
||||
factory HistoryVisibilityContent({
|
||||
required HistoryVisibility historyVisibility,
|
||||
}) = _HistoryVisibilityContent;
|
||||
|
||||
factory HistoryVisibilityContent.fromJson(Map<String, Object?> json) =>
|
||||
_$HistoryVisibilityContentFromJson(json);
|
||||
}
|
||||
|
||||
@JsonEnum(fieldRename: FieldRename.snake)
|
||||
enum HistoryVisibility { invited, joined, shared, worldReadable }
|
||||
|
|
@ -7,8 +7,11 @@ import "package:nexus/models/content/canonical_alias.dart";
|
|||
import "package:nexus/models/content/content.dart";
|
||||
import "package:nexus/models/content/create.dart";
|
||||
import "package:nexus/models/content/encrypted.dart";
|
||||
import "package:nexus/models/content/history_visibility.dart";
|
||||
import "package:nexus/models/content/join_rules.dart";
|
||||
import "package:nexus/models/content/membership.dart";
|
||||
import "package:nexus/models/content/message.dart";
|
||||
import "package:nexus/models/content/power_levels.dart";
|
||||
import "package:nexus/models/event.dart";
|
||||
import "package:nexus/widgets/lazy_loading/message_displayname.dart";
|
||||
import "package:nexus/widgets/renderers/message.dart";
|
||||
|
|
@ -67,6 +70,26 @@ class EventRenderer extends ConsumerWidget {
|
|||
MessageDisplayname(event),
|
||||
Text("created the room"),
|
||||
]),
|
||||
PowerLevelsContent() => GenericEventRenderer(Icons.add, [
|
||||
MessageDisplayname(event),
|
||||
Text("changed the room's power levels"),
|
||||
]),
|
||||
JoinRulesContent() => GenericEventRenderer(Icons.add, [
|
||||
MessageDisplayname(event),
|
||||
Text("changed the room's join rules"),
|
||||
]),
|
||||
HistoryVisibilityContent(:final historyVisibility) =>
|
||||
GenericEventRenderer(Icons.history, [
|
||||
MessageDisplayname(event),
|
||||
Text(
|
||||
"changed the room's history visibility to ${switch (historyVisibility) {
|
||||
HistoryVisibility.invited => "since invited",
|
||||
HistoryVisibility.joined => "since joined",
|
||||
HistoryVisibility.shared => "all history visible (shared)",
|
||||
HistoryVisibility.worldReadable => "all history visible (world readable)",
|
||||
}}",
|
||||
),
|
||||
]),
|
||||
CanonicalAliasContent(:final alias, :final altAliases) =>
|
||||
GenericEventRenderer(Icons.numbers, [
|
||||
MessageDisplayname(event),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue