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/database/database_service.dart';
import '../services/position/location.dart'; import '../services/position/location.dart';
import 'live_datas.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 { class Controller {
final ApiSpotify _api = ApiSpotify(); final ApiSpotify _api = ApiSpotify();
late User _currentUser; late User _currentUser;
final DataBaseService _dataBaseService = DataBaseService(); final DataBaseService _dataBaseService = DataBaseService();
final LiveData _data = LiveData(); final LiveData _data = LiveData();
final MessageDatabase _messageAccess = MessageDatabase();
late BuildContext navigatorKey; late BuildContext navigatorKey;
/// FIREBASE Messaging
void sendMessage(Message message, String idSender, String idReceiver){
_messageAccess.sendMessage(message, idSender, idReceiver);
}
initUser() async { initUser() async {
await setCurrentMusic(); await setCurrentMusic();
await setDiscoveries(); 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'; String destinataire = 'test';
List<Widget> messages = []; List<Widget> messages = [];
bool isNull = true; bool isNull = true;
String receiver = 'test';
final messageTextField = TextEditingController(); 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(() { setState(() {
messages.add(messageWidget( messages.add(messageWidget(messageToSend));
Message(MyApp.controller.getIdDafl().toString(), content)));
}); });
} }
Widget messageWidget(Message message) { Widget messageWidget(Message message) {
if (message.senderId != MyApp.controller.getIdDafl().toString()) { if (message.idSender != MyApp.controller.getIdDafl()) {
return Align( return Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: Container( child: Container(
@ -218,7 +225,7 @@ class _ConversationPageState extends State<ConversationPage> {
onTap: isNull onTap: isNull
? null ? null
: () { : () {
sendMessage(messageTextField.text); sendMessage(messageTextField.text, MyApp.controller.getIdDafl(), receiver);
if (listScrollController.hasClients) { if (listScrollController.hasClients) {
final position = final position =
listScrollController.position.maxScrollExtent; listScrollController.position.maxScrollExtent;

Loading…
Cancel
Save