У меня есть метод, который проверяет, содержит ли список пользователя или нет.По какой-то причине он всегда возвращает false, даже если пользователь находится в списке.Функция работает, я знаю, что она находит пользователя, но не уверена, почему она ничего не возвращает, но false
.
Я знаю, что она работает, потому что у меня есть другой метод с этим фрагментом кода впроверьте, есть ли пользователь в списке, и удалите или добавьте его.Это работает, поэтому я знаю, что он тянет список.
Метод:
fun checkUserChatChannel(channelId: String): Boolean {
var list = mutableListOf<String>()
val currentUserId = FirebaseAuth.getInstance().currentUser!!.uid
var bool = false
chatChannelsCollectionRef.document(channelId).get().addOnSuccessListener {
if (it.exists()) {
list = it.get("userIds") as MutableList<String>
if(list.contains(currentUserId)){
bool = true
}
}
}
return bool
}
Вызов:
boolean inOut = FirestoreUtil.INSTANCE.checkUserChatChannel(moduleId);
if(!inOut)
{
JLChat.setText("Join");
}
else
{
JLChat.setText("Leave");
}
Но кнопка всегда будет оставаться на «Присоединиться»:
Это другой метод, который я использую, поэтому я знаю, что код работает для удаления пользователя из списка (ничего общего с вопросом):
fun LeaveGroup(channelId: String) {
currentUserDocRef.collection("engagedChatChannels").document(channelId)
.delete()
var list = mutableListOf<String>()
val currentUserId = FirebaseAuth.getInstance().currentUser!!.uid
chatChannelsCollectionRef.document(channelId).get().addOnSuccessListener {
if (it.exists()) {
list = it.get("userIds") as MutableList<String>
if(list.contains(currentUserId)){
list.remove(currentUserId)
}
}
val newChannel = chatChannelsCollectionRef.document(channelId)
newChannel.set(GChatChannel(channelId,list))
}
}