Skip to content

Commit 2a0784d

Browse files
author
Slava Bobik
committed
feat: added restricted visibility feature
1 parent 7ba3fc8 commit 2a0784d

File tree

3 files changed

+80
-0
lines changed

3 files changed

+80
-0
lines changed

src/Models/Message.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class Message : CustomDataBase
4040
public DateTimeOffset? DeletedAt { get; set; }
4141
public bool? Shadowed { get; set; }
4242
public Dictionary<string, List<string>> ImageLabels { get; set; }
43+
public List<string> RestrictedVisibility { get; set; }
4344

4445
[JsonProperty("i18n")]
4546
public Dictionary<string, string> I18n { get; set; }

src/Models/MessageRequest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public class MessageRequest : CustomDataBase
3737
public DateTimeOffset? PinExpires { get; set; }
3838
public UserRequest PinnedBy { get; set; }
3939
public DateTimeOffset? PinnedAt { get; set; }
40+
public IEnumerable<string> RestrictedVisibility { get; set; }
4041
}
4142
}
4243

tests/MessageClientTests.cs

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,5 +271,83 @@ public async Task TestRunCommandActionAsync()
271271

272272
commandResp.Message.Command.Should().BeEquivalentTo("giphy");
273273
}
274+
275+
[Test]
276+
public async Task TestSendMessageWithRestrictedVisibilityAsync()
277+
{
278+
var messageText = Guid.NewGuid().ToString();
279+
var restrictedToUsers = new[] { _user.Id };
280+
281+
var messageRequest = new MessageRequest
282+
{
283+
Text = messageText,
284+
Type = MessageRequestType.Regular,
285+
RestrictedVisibility = restrictedToUsers,
286+
};
287+
288+
var msgResp = await _messageClient.SendMessageAsync(_channel.Type, _channel.Id, messageRequest, _user.Id);
289+
290+
var channel = await _channelClient.GetOrCreateAsync(_channel.Type, _channel.Id, new ChannelGetRequest { Watch = false, State = true });
291+
var actualMsg = channel.Messages.First(m => m.Id == msgResp.Message.Id);
292+
293+
actualMsg.User.Id.Should().BeEquivalentTo(_user.Id);
294+
actualMsg.Text.Should().BeEquivalentTo(messageText);
295+
actualMsg.RestrictedVisibility.Should().BeEquivalentTo(restrictedToUsers);
296+
}
297+
298+
[Test]
299+
public async Task TestUpdateMessageWithRestrictedVisibilityAsync()
300+
{
301+
var originalText = Guid.NewGuid().ToString();
302+
var messageRequest = new MessageRequest
303+
{
304+
Text = originalText,
305+
Type = MessageRequestType.Regular,
306+
};
307+
308+
var msgResp = await _messageClient.SendMessageAsync(_channel.Type, _channel.Id, messageRequest, _user.Id);
309+
310+
var updatedText = Guid.NewGuid().ToString();
311+
var restrictedToUsers = new[] { _user.Id };
312+
313+
var updated = await _messageClient.UpdateMessageAsync(new MessageRequest
314+
{
315+
Id = msgResp.Message.Id,
316+
Text = updatedText,
317+
UserId = _user.Id,
318+
RestrictedVisibility = restrictedToUsers,
319+
});
320+
321+
updated.Message.Text.Should().BeEquivalentTo(updatedText);
322+
updated.Message.RestrictedVisibility.Should().BeEquivalentTo(restrictedToUsers);
323+
updated.Message.User.Id.Should().BeEquivalentTo(_user.Id);
324+
}
325+
326+
[Test]
327+
public async Task TestUpdateMessagePartialWithRestrictedVisibilityAsync()
328+
{
329+
var messageText = Guid.NewGuid().ToString();
330+
var messageRequest = new MessageRequest
331+
{
332+
Text = messageText,
333+
Type = MessageRequestType.Regular,
334+
};
335+
336+
var msgResp = await _messageClient.SendMessageAsync(_channel.Type, _channel.Id, messageRequest, _user.Id);
337+
338+
var restrictedToUsers = new[] { _user.Id };
339+
var resp = await _messageClient.UpdateMessagePartialAsync(msgResp.Message.Id, new MessagePartialUpdateRequest
340+
{
341+
UserId = _user.Id,
342+
Set = new Dictionary<string, object>
343+
{
344+
{ "restricted_visibility", restrictedToUsers },
345+
},
346+
});
347+
348+
resp.Message.RestrictedVisibility.Should().BeEquivalentTo(restrictedToUsers);
349+
resp.Message.Text.Should().BeEquivalentTo(messageText);
350+
resp.Message.User.Id.Should().BeEquivalentTo(_user.Id);
351+
}
274352
}
275353
}

0 commit comments

Comments
 (0)