diff --git a/src/Models/Message.cs b/src/Models/Message.cs index a355cd3..93a6a62 100644 --- a/src/Models/Message.cs +++ b/src/Models/Message.cs @@ -40,6 +40,7 @@ public class Message : CustomDataBase public DateTimeOffset? DeletedAt { get; set; } public bool? Shadowed { get; set; } public Dictionary> ImageLabels { get; set; } + public List RestrictedVisibility { get; set; } [JsonProperty("i18n")] public Dictionary I18n { get; set; } diff --git a/src/Models/MessageRequest.cs b/src/Models/MessageRequest.cs index 9e0d140..e398fa3 100644 --- a/src/Models/MessageRequest.cs +++ b/src/Models/MessageRequest.cs @@ -37,6 +37,7 @@ public class MessageRequest : CustomDataBase public DateTimeOffset? PinExpires { get; set; } public UserRequest PinnedBy { get; set; } public DateTimeOffset? PinnedAt { get; set; } + public IEnumerable RestrictedVisibility { get; set; } } } diff --git a/tests/MessageClientTests.cs b/tests/MessageClientTests.cs index 1c17db8..c56e6f8 100644 --- a/tests/MessageClientTests.cs +++ b/tests/MessageClientTests.cs @@ -271,5 +271,81 @@ public async Task TestRunCommandActionAsync() commandResp.Message.Command.Should().BeEquivalentTo("giphy"); } + + [Test] + public async Task TestSendMessageWithRestrictedVisibilityAsync() + { + var messageText = Guid.NewGuid().ToString(); + var restrictedToUsers = new[] { _user.Id }; + + var messageRequest = new MessageRequest + { + Text = messageText, + Type = MessageRequestType.Regular, + RestrictedVisibility = restrictedToUsers, + }; + + var msgResp = await _messageClient.SendMessageAsync(_channel.Type, _channel.Id, messageRequest, _user.Id); + + var channel = await _channelClient.GetOrCreateAsync(_channel.Type, _channel.Id, new ChannelGetRequest { Watch = false, State = true }); + var actualMsg = channel.Messages.First(m => m.Id == msgResp.Message.Id); + + actualMsg.RestrictedVisibility.Should().BeEquivalentTo(restrictedToUsers); + } + + [Test] + public async Task TestUpdateMessageWithRestrictedVisibilityAsync() + { + var originalText = Guid.NewGuid().ToString(); + var messageRequest = new MessageRequest + { + Text = originalText, + Type = MessageRequestType.Regular, + }; + + var msgResp = await _messageClient.SendMessageAsync(_channel.Type, _channel.Id, messageRequest, _user.Id); + + var updatedText = Guid.NewGuid().ToString(); + var restrictedToUsers = new[] { _user.Id }; + + var updated = await _messageClient.UpdateMessageAsync(new MessageRequest + { + Id = msgResp.Message.Id, + Text = updatedText, + UserId = _user.Id, + RestrictedVisibility = restrictedToUsers, + }); + + updated.Message.Text.Should().BeEquivalentTo(updatedText); + updated.Message.RestrictedVisibility.Should().BeEquivalentTo(restrictedToUsers); + updated.Message.User.Id.Should().BeEquivalentTo(_user.Id); + } + + [Test] + public async Task TestUpdateMessagePartialWithRestrictedVisibilityAsync() + { + var messageText = Guid.NewGuid().ToString(); + var messageRequest = new MessageRequest + { + Text = messageText, + Type = MessageRequestType.Regular, + }; + + var msgResp = await _messageClient.SendMessageAsync(_channel.Type, _channel.Id, messageRequest, _user.Id); + + var restrictedToUsers = new[] { _user.Id }; + var resp = await _messageClient.UpdateMessagePartialAsync(msgResp.Message.Id, new MessagePartialUpdateRequest + { + UserId = _user.Id, + Set = new Dictionary + { + { "restricted_visibility", restrictedToUsers }, + }, + }); + + resp.Message.RestrictedVisibility.Should().BeEquivalentTo(restrictedToUsers); + resp.Message.Text.Should().BeEquivalentTo(messageText); + resp.Message.User.Id.Should().BeEquivalentTo(_user.Id); + } } } \ No newline at end of file