mirror of
https://github.com/Linloir/Simple-TCP-Client.git
synced 2025-12-18 17:28:11 +08:00
New Feature:
- Add API ACKFETCH to acknowledge fetch message done
This commit is contained in:
parent
a758929b46
commit
da53d22261
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* @Author : Linloir
|
||||
* @Date : 2022-10-13 14:02:28
|
||||
* @LastEditTime : 2022-10-22 01:20:14
|
||||
* @LastEditTime : 2022-10-22 21:08:39
|
||||
* @Description :
|
||||
*/
|
||||
|
||||
@ -44,17 +44,15 @@ class HomeCubit extends Cubit<HomeState> {
|
||||
tcpRepository.pushRequest(FetchMessageRequest(
|
||||
token: (await SharedPreferences.getInstance()).getInt('token')
|
||||
));
|
||||
await for(var response in tcpRepository.responseStreamBroadcast) {
|
||||
if(response.type == TCPResponseType.fetchMessage) {
|
||||
if(response.status == TCPResponseStatus.ok) {
|
||||
// response as FetchMessageResponse;
|
||||
// localServiceRepository.storeMessages(response.messages);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}).then((_) {
|
||||
emit(state.copyWith(status: HomePageStatus.done));
|
||||
// await for(var response in tcpRepository.responseStreamBroadcast) {
|
||||
// if(response.type == TCPResponseType.fetchMessage) {
|
||||
// if(response.status == TCPResponseStatus.ok) {
|
||||
// // response as FetchMessageResponse;
|
||||
// // localServiceRepository.storeMessages(response.messages);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
@ -71,19 +69,26 @@ class HomeCubit extends Cubit<HomeState> {
|
||||
);
|
||||
}
|
||||
|
||||
void _onTCPResponse(TCPResponse response) {
|
||||
void _onTCPResponse(TCPResponse response) async {
|
||||
if(response.status == TCPResponseStatus.err) {
|
||||
return;
|
||||
}
|
||||
switch(response.type) {
|
||||
case TCPResponseType.forwardMessage: {
|
||||
response as ForwardMessageResponse;
|
||||
localServiceRepository.storeMessages([response.message]);
|
||||
await localServiceRepository.storeMessages([response.message]);
|
||||
break;
|
||||
}
|
||||
case TCPResponseType.fetchMessage: {
|
||||
response as FetchMessageResponse;
|
||||
localServiceRepository.storeMessages(response.messages);
|
||||
await localServiceRepository.storeMessages(response.messages);
|
||||
emit(state.copyWith(status: HomePageStatus.done));
|
||||
if(response.messages.isNotEmpty) {
|
||||
tcpRepository.pushRequest(AckFetchRequest(
|
||||
timeStamp: response.messages[0].timeStamp,
|
||||
token: (await SharedPreferences.getInstance()).getInt('token')
|
||||
));
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* @Author : Linloir
|
||||
* @Date : 2022-10-10 08:04:53
|
||||
* @LastEditTime : 2022-10-21 22:49:14
|
||||
* @LastEditTime : 2022-10-22 20:43:39
|
||||
* @Description :
|
||||
*/
|
||||
import 'package:flutter/gestures.dart';
|
||||
@ -49,7 +49,7 @@ class SplashPage extends StatelessWidget {
|
||||
return BlocProvider<InitializationCubit>(
|
||||
create: (context) {
|
||||
return InitializationCubit(
|
||||
serverAddress: 'chat.linloir.cn',
|
||||
serverAddress: '192.168.43.155',
|
||||
serverPort: 20706
|
||||
);
|
||||
},
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* @Author : Linloir
|
||||
* @Date : 2022-10-11 09:44:03
|
||||
* @LastEditTime : 2022-10-18 14:45:20
|
||||
* @LastEditTime : 2022-10-22 21:01:35
|
||||
* @Description : Abstract TCP request class
|
||||
*/
|
||||
|
||||
@ -24,6 +24,7 @@ enum TCPRequestType {
|
||||
modifyProfile ('MODIFYPROFILE'), //Modify user profile
|
||||
sendMessage ('SENDMSG'), //Send message
|
||||
fetchMessage ('FETCHMSG'), //Fetch message
|
||||
ackFetch ('ACKFETCH'), //Acknowledge message fetch
|
||||
findFile ('FINDFILE'), //Find file by md5 before transmitting the file
|
||||
fetchFile ('FETCHFILE'), //Fetch file and file md5 by message md5
|
||||
searchUser ('SEARCHUSR'), //Search username and userid by username
|
||||
@ -244,3 +245,14 @@ class FetchContactRequest extends TCPRequest {
|
||||
@override
|
||||
Map<String, Object?> get body => {};
|
||||
}
|
||||
|
||||
class AckFetchRequest extends TCPRequest {
|
||||
final int _timeStamp;
|
||||
|
||||
const AckFetchRequest({required int timeStamp, required int? token}): _timeStamp = timeStamp, super(type: TCPRequestType.ackFetch, token: token);
|
||||
|
||||
@override
|
||||
Map<String, Object?> get body => {
|
||||
'timestamp': _timeStamp
|
||||
};
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user