getchat method

Future<void> getchat({
  1. 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++;
}