Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/stream_chat/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

✅ Added

- Added support for `Message.channelRole` field to provide access to the sender's channel role.
- Added support for `Channel.messageCount` field.

🐞 Fixed
Expand Down
19 changes: 19 additions & 0 deletions packages/stream_chat/lib/src/core/models/message.dart
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ class Message extends Equatable implements ComparableFieldProvider {
this.moderation,
this.draft,
this.reminder,
this.channelRole,
}) : id = id ?? const Uuid().v4(),
type = MessageType(type),
pinExpires = pinExpires?.toUtc(),
Expand Down Expand Up @@ -314,6 +315,19 @@ class Message extends Equatable implements ComparableFieldProvider {
/// This is present when a user has set a reminder for this message.
final MessageReminder? reminder;

static Object? _channelRoleReadValue(Map<Object?, Object?> json, String key) {
// Extract the channel role from the member object if present.
final member = json['member'];
if (member is! Map<String, Object?>) return null;

final channelRole = member[key];
return channelRole;
}

/// The role of the user in the channel the message belongs to.
@JsonKey(includeToJson: false, readValue: _channelRoleReadValue)
final String? channelRole;

/// Message custom extraData.
final Map<String, Object?> extraData;

Expand Down Expand Up @@ -362,6 +376,7 @@ class Message extends Equatable implements ComparableFieldProvider {
'moderation_details',
'draft',
'reminder',
'member',
];

/// Serialize to json.
Expand Down Expand Up @@ -424,6 +439,7 @@ class Message extends Equatable implements ComparableFieldProvider {
Moderation? moderation,
Object? draft = _nullConst,
Object? reminder = _nullConst,
String? channelRole,
}) {
assert(() {
if (pinExpires is! DateTime &&
Expand Down Expand Up @@ -506,6 +522,7 @@ class Message extends Equatable implements ComparableFieldProvider {
draft: draft == _nullConst ? this.draft : draft as Draft?,
reminder:
reminder == _nullConst ? this.reminder : reminder as MessageReminder?,
channelRole: channelRole ?? this.channelRole,
);
}

Expand Down Expand Up @@ -551,6 +568,7 @@ class Message extends Equatable implements ComparableFieldProvider {
moderation: other.moderation,
draft: other.draft,
reminder: other.reminder,
channelRole: other.channelRole,
);
}

Expand Down Expand Up @@ -616,6 +634,7 @@ class Message extends Equatable implements ComparableFieldProvider {
moderation,
draft,
reminder,
channelRole,
];

@override
Expand Down
2 changes: 2 additions & 0 deletions packages/stream_chat/lib/src/core/models/message.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions packages/stream_chat/test/fixtures/message.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
"image": "https://randomuser.me/api/portraits/women/2.jpg",
"name": "Mia Denys"
},
"member": {
"user_id": "c1c9b454-2bcc-402d-8bb0-2f3706ce1680",
"channel_role": "channel_member",
"created_at": "2020-01-28T22:17:30.83015Z",
"updated_at": "2020-01-28T22:17:31.19435Z"
},
"attachments": [
{
"type": "video",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ void main() {
expect(message.pinnedBy, null);
expect(message.i18n, null);
expect(message.restrictedVisibility, isA<List<String>>());
expect(message.channelRole, 'channel_member');
});

test('should serialize to json correctly', () {
Expand Down
1 change: 1 addition & 0 deletions packages/stream_chat_persistence/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

✅ Added

- Added support for `Message.channelRole` field.
- Added support for `client.flush()` method to clear database.
- Added support for `Channel.messageCount` field.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class DriftChatDatabase extends _$DriftChatDatabase {

// you should bump this number whenever you change or add a table definition.
@override
int get schemaVersion => 24;
int get schemaVersion => 25;

@override
MigrationStrategy get migration => MigrationStrategy(
Expand Down
Loading
Loading