Linloir c3d0a91c48
Core Function
- Chat page available
- File transfer available
2022-10-15 15:30:09 +08:00

46 lines
1.4 KiB
Dart

/*
* @Author : Linloir
* @Date : 2022-10-14 21:57:05
* @LastEditTime : 2022-10-14 22:55:16
* @Description :
*/
import 'package:bloc/bloc.dart';
import 'package:formz/formz.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tcp_client/chat/cubit/chat_cubit.dart';
import 'package:tcp_client/chat/view/input_box/cubit/input_state.dart';
import 'package:tcp_client/chat/view/input_box/model/input.dart';
import 'package:tcp_client/repositories/common_models/message.dart';
import 'package:tcp_client/repositories/local_service_repository/local_service_repository.dart';
import 'package:tcp_client/repositories/tcp_repository/tcp_repository.dart';
class MessageInputCubit extends Cubit<MessageInputState> {
MessageInputCubit({
required this.chatCubit,
}): super(const MessageInputState());
final ChatCubit chatCubit;
void onInputChange(MessageInput input) {
emit(state.copyWith(
status: Formz.validate([input]),
input: input
));
}
Future<void> onSubmission() async {
chatCubit.addMessage(Message(
userid: (await SharedPreferences.getInstance()).getInt('userid')!,
targetid: chatCubit.userID,
contenttype: MessageType.plaintext,
content: state.input.value,
token: (await SharedPreferences.getInstance()).getInt('token')!
));
emit(state.copyWith(
status: FormzStatus.pure,
input: const MessageInput.pure()
));
}
}