From e184544750bd921265c96e28ccc23089a634998d Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Sun, 23 Oct 2022 12:09:54 +0800 Subject: [PATCH] Bug Fix: - Fix not updating user info after fetch contact --- .../contact_page/cubit/contact_cubit.dart | 4 +-- lib/main.dart | 2 +- .../user_repository/user_repository.dart | 32 ++++++++++++++++++- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/lib/home/view/contact_page/cubit/contact_cubit.dart b/lib/home/view/contact_page/cubit/contact_cubit.dart index a968fbe..f1ab7d3 100644 --- a/lib/home/view/contact_page/cubit/contact_cubit.dart +++ b/lib/home/view/contact_page/cubit/contact_cubit.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-13 14:01:45 - * @LastEditTime : 2022-10-20 16:36:05 + * @LastEditTime : 2022-10-23 12:09:26 * @Description : */ @@ -22,7 +22,7 @@ class ContactCubit extends Cubit { }): super(ContactState.empty()) { subscription = tcpRepository.responseStreamBroadcast.listen(_onResponse); updateContacts(); - timer = Timer.periodic(const Duration(seconds: 20), (timer) {updateContacts();}); + timer = Timer.periodic(const Duration(seconds: 60), (timer) {updateContacts();}); } final LocalServiceRepository localServiceRepository; diff --git a/lib/main.dart b/lib/main.dart index 8972f9d..322a04a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-10 08:04:53 - * @LastEditTime : 2022-10-23 11:36:04 + * @LastEditTime : 2022-10-23 12:09:34 * @Description : */ import 'package:flutter/gestures.dart'; diff --git a/lib/repositories/user_repository/user_repository.dart b/lib/repositories/user_repository/user_repository.dart index 2a32784..13c9f35 100644 --- a/lib/repositories/user_repository/user_repository.dart +++ b/lib/repositories/user_repository/user_repository.dart @@ -1,7 +1,7 @@ /* * @Author : Linloir * @Date : 2022-10-13 20:18:14 - * @LastEditTime : 2022-10-20 11:50:26 + * @LastEditTime : 2022-10-23 12:06:33 * @Description : Repository to cache user info */ @@ -46,6 +46,36 @@ class UserRepository { _userInfoStreamController.add(response.userInfo!); localServiceRepository.storeUserInfo(userInfo: response.userInfo!); } + else if(response.type == TCPResponseType.fetchContact && response.status == TCPResponseStatus.ok) { + response as FetchContactResponse; + for(var user in response.addedContacts) { + users.update( + user.userID, + (value) => user, + ifAbsent: () => user + ); + localServiceRepository.storeUserInfo(userInfo: user); + _userInfoStreamController.add(user); + } + for(var user in response.pendingContacts) { + users.update( + user.userID, + (value) => user, + ifAbsent: () => user + ); + localServiceRepository.storeUserInfo(userInfo: user); + _userInfoStreamController.add(user); + } + for(var user in response.requestingContacts) { + users.update( + user.userID, + (value) => user, + ifAbsent: () => user + ); + localServiceRepository.storeUserInfo(userInfo: user); + _userInfoStreamController.add(user); + } + } } //Fetch user info