getnewchat method

Future<void> getnewchat({
  1. bool fetchRestart = false,
})

Implementation

Future<void> getnewchat({bool fetchRestart = false}) async {
  if (chatsearchprocess.value || chatsearchEndprocess.value) {
    return;
  }

  if (fetchRestart) {
    chatPage.value = 1;
  }

  filteredchatList.value ??= [];
  chatList.value ??= [];

  chatsearchprocess.value = true;
  ChatNewListResponse response = await service.chatServices.newChatlist(
    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 getnewchat();
    return;
  }

  if (fetchRestart) {
    filteredchatList.value = [];
    chatList.value = [];
  }

  for (APIChatList element in response.response!) {
    chatList.value!.add(
      Chat(
        user: User(
          userID: element.kullID,
          displayName: Rx(element.adSoyad),
          detailInfo: Rxn(
            UserDetailInfo(
              about: Rxn(),
              age: Rxn(),
              email: Rxn(),
              friends: Rxn(),
              posts: Rxn(),
              awards: Rxn(),
              phoneNumber: Rxn(),
              birthdayDate: Rxn(),
              inviteCode: Rxn(),
              lastloginDate: Rxn(element.sonGiris),
              lastloginDateV2: Rxn(element.sonGiris),
              lastfailedDate: Rxn(),
              country: Rxn(),
              province: Rxn(),
            ),
          ),
          avatar: Media(
            mediaID: 0,
            mediaType: MediaType.image,
            mediaURL: MediaURL(
              bigURL: Rx(element.chatImage.mediaURL.bigURL),
              normalURL: Rx(element.chatImage.mediaURL.normalURL),
              minURL: Rx(element.chatImage.mediaURL.minURL),
            ),
          ),
        ),
        lastmessage: ChatMessage(
          messageID: 0,
          messageContext: "",
          user: User(
            userID: element.kullID,
            displayName: Rx(element.adSoyad),
            detailInfo: Rxn(
              UserDetailInfo(
                about: Rxn(),
                age: Rxn(),
                email: Rxn(),
                friends: Rxn(),
                posts: Rxn(),
                awards: Rxn(),
                phoneNumber: Rxn(),
                birthdayDate: Rxn(),
                inviteCode: Rxn(),
                lastloginDate: Rxn(element.sonGiris),
                lastloginDateV2: Rxn(element.sonGiris),
                lastfailedDate: Rxn(),
                country: Rxn(),
                province: Rxn(),
              ),
            ),
          ),
          isMe: false,
        ).obs,
        chatType: element.sohbetTuru,
        chatNotification: false.obs,
      ),
    );
  }

  filteredchatList.value = chatList.value!;
  updateChatList();

  if (response.response!.length < 30) {
    // 10'dan azsa daha fazla yok demektir
    log("Daha fazla veri yok (newChatList)");
  }
  log("New ChatList :: Page => $chatPage , Count => ${cachedChatList?.length}");

  chatsearchprocess.value = false;
  isFirstFetch.value = false;
  chatPage++;
}