getchat method
Future<void>
getchat(
{ - bool fetchRestart = false,
})
Implementation
Future<void> getchat({bool fetchRestart = false}) async {
if (chatsearchprocess.value || chatsearchEndprocess.value) {
return;
}
chatsearchprocess.value = true;
if (fetchRestart) {
chatPage.value = 1;
}
filteredchatList.value ??= [];
chatList.value ??= [];
ChatListResponse response =
await service.chatServices.currentChatList(page: chatPage.value);
if (!response.result.status) {
chatsearchprocess.value = false;
isFirstFetch.value = false;
//10 saniye sonra Tekrar çekmeyi dene
await Future.delayed(const Duration(seconds: 10));
await getchat();
return;
}
if (fetchRestart) {
filteredchatList.value = [];
chatList.value = [];
}
for (APIChatList element in response.response!) {
chatList.value!.add(
Chat(
chatID: element.kullID, //sonradan chat id olarak değişecek
user: User(
userID: element.kullID,
userName: Rx(element.kullAdi!),
displayName: Rx(element.adSoyad),
avatar: Media(
mediaID: element.kullID,
mediaType: MediaType.image,
mediaURL: MediaURL(
bigURL: Rx(element.chatImage.mediaURL.bigURL),
normalURL: Rx(element.chatImage.mediaURL.bigURL),
minURL: Rx(element.chatImage.mediaURL.bigURL),
),
),
detailInfo: Rxn(
UserDetailInfo(
about: Rxn(),
age: Rxn(),
email: Rxn(),
friends: Rxn(),
posts: Rxn(),
awards: Rxn(),
phoneNumber: Rxn(),
birthdayDate: Rxn(),
inviteCode: Rxn(),
lastloginDate: Rxn(),
lastloginDateV2: Rxn(element.sonGiris),
lastfailedDate: Rxn(),
country: Rxn(),
province: Rxn(),
),
),
),
chatNotification: element.bildirim == 1 ? true.obs : false.obs,
lastmessage: Rx(
ChatMessage(
messageID: 0,
messageContext: element.sonMesaj,
user: User(),
isMe: true,
),
),
chatType: element.sohbetTuru,
calling: false.obs,
),
);
}
updateChatList();
if (response.response!.length < 30) {
// 10'dan azsa daha fazla yok demektir
chatsearchEndprocess.value = true;
log("Daha fazla veri yok (ChatList)");
}
log("ChatList :: Page => $chatPage , Count => ${cachedChatList?.length}");
chatsearchprocess.value = false;
isFirstFetch.value = false;
chatPage++;
}