Описание
При переключении между авторизованными пользователями закреплённые сообщения перестают быть закрепленными. При включении оффлайн отображаются диалоги предыдущего пользователя
Причина
В бд. в таблице Dialogs не запоминается, для какого авторизованного пользователя отображены эти диалоги. Это приводит к тому, что если переключаться между аккаунтами, то закрепленные диалоги первого пользователя могут наследоваться у второго, а в оффлайн режиме, где сообщения берутся только из таблицы Dialogs, отображаются диалоги предыдущего пользователя.
Моё решение
Не делаю pull-request, поскольку не уверена, что решение удачное. Но другого я не придумала
1) Dialogs. Добавляю поле "me"
@Parcelize
@Entity(tableName = "dialogs", primaryKeys = ["peerId","me"])
data class Dialog(
val peerId: Int = 0,
......
var me: Int = 0,
2) DialogsDao:
@Query("SELECT * FROM dialogs WHERE :me = me ORDER BY isPinned DESC, timeStamp DESC")
fun getDialogs(me: Int): Single<List<Dialog>>
@Query("SELECT * FROM dialogs WHERE :peerId = peerId AND :me = me")
fun getDialogs(me: Int, peerId: Int): Single<Dialog>
@Query("SELECT * FROM dialogs WHERE peerId IN (:peerIds) AND :me = me")
fun getDialogs(me: Int, peerIds: List<Int>): Single<List<Dialog>>
3) В коде в нескольких местах добавляется SessionProvider.userId. Например:
fun loadAlias(peerId: Int) {
appDb.dialogsDao()
.getDialogs(SessionProvider.userId, peerId)
Описание При переключении между авторизованными пользователями закреплённые сообщения перестают быть закрепленными. При включении оффлайн отображаются диалоги предыдущего пользователя
Причина В бд. в таблице Dialogs не запоминается, для какого авторизованного пользователя отображены эти диалоги. Это приводит к тому, что если переключаться между аккаунтами, то закрепленные диалоги первого пользователя могут наследоваться у второго, а в оффлайн режиме, где сообщения берутся только из таблицы Dialogs, отображаются диалоги предыдущего пользователя.
Моё решение Не делаю pull-request, поскольку не уверена, что решение удачное. Но другого я не придумала
1) Dialogs. Добавляю поле "me"
2) DialogsDao:
3) В коде в нескольких местах добавляется SessionProvider.userId. Например: