SendBird рассматривает каждый канал как свой GroupChannel
. Чат 1:1 также технически является GroupChannel
только с двумя пользователями (с isDistinct = true
, чтобы он возвращал личный чат, когда вы пытаетесь создать его снова).
У меня вопрос: как мне искать GroupChannel
по имени, включая группу И чат 1:1? Групповой чат будет иметь общее имя, которое будет отображаться для всех пользователей в группе. Но для чата 1:1 у GroupChannel
не будет имени, а если оно есть, оно не будет показано пользователям, как и для чата 1:1, мы всегда показываем имя другого человека (как и почти все чаты). системы работают).
Обычно основной список пользовательского интерфейса содержит смесь группового чата и чатов 1:1 (все GroupChannel
).
--------------------------------
| Search Chat TextField |
|--------------------------------|
|1 John (1:1) |
|2 John's Birthday Plan (group) |
|3 Johnney Eve (1:1) |
|4 Johansson Fans (group) |
| ... |
--------------------------------
Все предметы технически GroupChannel
. Обратите внимание, что все чаты 1:1 не имеют фактических name
, как показано в списке. Имя, показанное в списке, принадлежит другому человеку nickname
.
Ожидание:
Теперь, если пользователь ищет что-то вроде joh, он должен вернуть все групповые чаты, чье имя содержит joh ИЛИ все чаты 1:1, в которых имя другого человека содержит joh. (В основном все элементы, показанные в приведенном выше примере.)
Моя попытка:
Мое первоначальное решение для достижения этой цели состоит в том, чтобы сохранить имя канала 1:1 как <user1 nickname> & <user2 nickname>
, поэтому, когда пользователь ищет другого пользователя по его имени, канал 1:1 будет отображаться так же, как групповой канал.
Пример кода:
query = SBDGroupChannel.createMyGroupChannelListQuery()
query?.order = .latestLastMessage
query?.limit = 30
query?.channelNameContainsFilter = "joh"
query.loadNextPage(...)
Проблема:
Проблема с этим:
- Если пользователь ищет свое имя (или просто символ-разделитель
&
, или просто пробел), то будет виден и весь личный чат, что не имеет значения. - Моя система позволяет пользователю изменять свой псевдоним, поэтому каждый раз, когда пользователь меняет свой псевдоним, все имена каналов 1: 1 должны обновляться (что болезненно).