ADD : Send messages From MassagingService by controller
continuous-integration/drone/push Build is failing Details

#MSG01/ImplementationFirebaseMessaging
Audric SABATIER 2 years ago
parent 7f35484e2c
commit cee8a2fd80

@ -10,15 +10,32 @@ import '../services/api/api_spotify.dart';
import '../services/database/database_service.dart';
import '../services/position/location.dart';
import 'live_datas.dart';
import 'package:dafl_project_flutter/model/message.dart';
import 'package:dafl_project_flutter/services/messaging/message_database.dart';
class Controller {
final ApiSpotify _api = ApiSpotify();
late User _currentUser;
final DataBaseService _dataBaseService = DataBaseService();
final LiveData _data = LiveData();
final MessageDatabase _messageAccess = MessageDatabase();
late BuildContext navigatorKey;
/// FIREBASE Messaging
void sendMessage(Message message, String idSender, String idReceiver){
_messageAccess.sendMessage(message, idSender, idReceiver);
}
initUser() async {
await setCurrentMusic();
await setDiscoveries();

@ -1,20 +0,0 @@
import 'package:dafl_project_flutter/model/message.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class MessageDatabase{
void SendMessage(String chatId, Message message) {
var documentReference = FirebaseFirestore.instance
.collection('messages')
.doc(chatId)
.collection(chatId)
.doc(DateTime.now().millisecondsSinceEpoch.toString());
FirebaseFirestore.instance.runTransaction((transaction) async {
transaction.set(documentReference,message.toHashMap());
});
}
}

@ -0,0 +1,29 @@
import 'package:dafl_project_flutter/model/message.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class MessageDatabase {
String _getChatId(String idSender, String idReceiver) {
if (idSender.hashCode <= idReceiver.hashCode)
return '$idSender-${idReceiver}';
else
return '${idReceiver}-$idSender';
}
void sendMessage(Message message, String idSender, String idReceiver) {
String chatId = _getChatId(idSender, idReceiver);
var documentReference = FirebaseFirestore.instance
.collection('messages')
.doc(chatId)
.collection(chatId)
.doc(DateTime
.now()
.millisecondsSinceEpoch
.toString());
FirebaseFirestore.instance.runTransaction((transaction) async {
transaction.set(documentReference, message.toHashMap());
});
}
}

@ -15,18 +15,25 @@ class _ConversationPageState extends State<ConversationPage> {
String destinataire = 'test';
List<Widget> messages = [];
bool isNull = true;
String receiver = 'test';
final messageTextField = TextEditingController();
void sendMessage(String content) {
void sendMessage(String content, String idSender, String idReceiver) {
Message messageToSend = Message(
idSender: idSender,
idReceiver: idReceiver,
content: content);
MyApp.controller.sendMessage(messageToSend, idSender, idReceiver);
setState(() {
messages.add(messageWidget(
Message(MyApp.controller.getIdDafl().toString(), content)));
messages.add(messageWidget(messageToSend));
});
}
Widget messageWidget(Message message) {
if (message.senderId != MyApp.controller.getIdDafl().toString()) {
if (message.idSender != MyApp.controller.getIdDafl()) {
return Align(
alignment: Alignment.centerLeft,
child: Container(
@ -218,7 +225,7 @@ class _ConversationPageState extends State<ConversationPage> {
onTap: isNull
? null
: () {
sendMessage(messageTextField.text);
sendMessage(messageTextField.text, MyApp.controller.getIdDafl(), receiver);
if (listScrollController.hasClients) {
final position =
listScrollController.position.maxScrollExtent;

Loading…
Cancel
Save