Rumahjo-Android-APP/lib/data/cubits/chatCubits/send_message.dart

82 lines
2.1 KiB
Dart
Raw Permalink Normal View History

2024-09-07 00:58:50 +00:00
// ignore_for_file: public_member_api_docs, sort_constructors_first
// import 'dart:developer';
import 'package:dio/dio.dart';
import 'package:ebroker/data/Repositories/chat_repository.dart';
import 'package:ebroker/utils/logger.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class SendMessageState {}
class SendMessageInitial extends SendMessageState {}
class SendMessageInProgress extends SendMessageState {}
class SendMessageSuccess extends SendMessageState {
final int messageId;
SendMessageSuccess({
required this.messageId,
});
}
class SendMessageFailed extends SendMessageState {
final dynamic error;
SendMessageFailed(
this.error,
);
}
class SendMessageCubit extends Cubit<SendMessageState> {
SendMessageCubit() : super(SendMessageInitial());
final ChatRepostiory _chatRepostiory = ChatRepostiory();
void send(
{required String senderId,
required String recieverId,
required String message,
required String proeprtyId,
dynamic audio,
dynamic attachment}) async {
try {
emit(SendMessageInProgress());
MultipartFile? audioFile;
MultipartFile? attachmentFile;
if (audio != null) {
audioFile = await MultipartFile.fromFile(audio);
}
if (attachment != null) {
attachmentFile = await MultipartFile.fromFile(attachment);
}
///If use is not uploading any text so we will upload [File].
var message0 = message;
if (attachment != null && message == "") {
message0 = "";
}
var result = await _chatRepostiory.sendMessage(
senderId: senderId,
recieverId: recieverId,
message: message0,
proeprtyId: proeprtyId,
attachment: attachmentFile,
audio: audioFile);
emit(SendMessageSuccess(messageId: result['id']));
} catch (e) {
Logger.error(e.toString());
emit(SendMessageFailed(e.toString()));
}
}
//This will check if given file like audio recording or attachment is local or it is coming from remote server
bool isRemoteFile(dynamic file) {
if (file is String) {
return true;
} else {
return false;
}
}
}