Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus
nexus/lib/models/requests/create_room.dart
2026-10-15 19:49:04 -04:00

52 lines
1.7 KiB
Dart

import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:freezed_annotation/freezed_annotation.dart";
import "package:nexus/models/content/content.dart";
import "package:nexus/models/content/encryption.dart";
part "create_room.freezed.dart";
part "create_room.g.dart";
@Freezed(toJson: false, fromJson: false)
@JsonSerializable(includeIfNull: false)
class const CreateRoomRequest({
final RoomVisibility? visibility,
final String? roomAliasName,
final String? name,
final String? topic,
final IList<String> invite = const IList.empty(),
@JsonKey(name: "uk.timedout.msc4491.invite_reason")
final String? inviteReason,
final IList<InitialStateEvent> initialState = const IList.empty(),
final RoomPreset? preset,
final bool isDirect = false,
final IMap<String, dynamic>? creationContent,
}) with _$CreateRoomRequest {
Map<String, Object?> toJson() => _$CreateRoomRequestToJson(this);
factory CreateRoomRequest.fromJson(Map<String, Object?> json) =>
_$CreateRoomRequestFromJson(json);
}
@Freezed(toJson: false, fromJson: false)
@JsonSerializable()
class const InitialStateEvent({
required final String type,
final String stateKey = "",
required final Content content,
}) with _$InitialStateEvent {
static final encryption = InitialStateEvent(
type: EventType.encryption.type,
content: EncryptionContent(algorithm: "m.megolm.v1.aes-sha2"),
);
Map<String, Object?> toJson() => _$InitialStateEventToJson(this);
factory InitialStateEvent.fromJson(Map<String, Object?> json) =>
_$InitialStateEventFromJson(json);
}
@JsonEnum(fieldRename: .snake)
enum RoomVisibility { public, private }
@JsonEnum(fieldRename: .snake)
enum RoomPreset { privateChat, publicChat, trustedPrivateChat }