import 'package:e2ee_chat/azlistview/azlistview.dart'; import 'package:e2ee_chat/common/global.dart'; import 'package:e2ee_chat/model/contact_info.dart'; import 'package:e2ee_chat/model/user.dart'; import 'package:e2ee_chat/presenter/contact.dart'; import 'package:e2ee_chat/presenter/profile.dart'; import 'package:e2ee_chat/presenter/login.dart'; import 'package:flutter/material.dart'; import 'package:lpinyin/lpinyin.dart'; import 'package:e2ee_chat/common/api.dart'; import 'login.dart'; class ContactListPresenter extends ChangeNotifier { List get contacts { final User? user = LoginPresenter().user; final list = []; try { for (var i in user!.friends) { list.add(ContactInfo(name: i.username, tag: ContactInfo.getTag(i.username))); } } catch (e) { debug(e); } SuspensionUtil.sortListBySuspensionTag(list); SuspensionUtil.setShowSuspensionStatus(list); list.add(ContactInfo(name: 'New friends', tag: '↑', bgColor: Colors.orange, iconData: Icons.person_add)); return list; } Future freshContacts() async { debug('contact list presenter fresh contacts begin'); bool _result = false; var _user = LoginPresenter().user; if (_user != null) { try { var list = (await Api().friendList())!; debug('contact list presenter fresh contacts friends: $list'); _user.friends.clear(); list.forEach((username) { var contact = User(username); contact.refreshProfile(); _user.friends.add(contact); }); notifyListeners(); _result = true; } catch (e) { debug('contact list presenter fresh contacts failed: error $e'); } } debug('contact list presenter fresh contacts end'); return _result; } }