import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:marianum_mobile/widget/loadingPacket.dart'; import 'package:provider/provider.dart'; import '../../../dataOld/incommingPackets/talkContactsPacket.dart'; import '../../../widget/loadingSpinner.dart'; import 'chatView.dart'; class Talk extends StatefulWidget { const Talk({Key? key}) : super(key: key); @override State createState() => _TalkState(); } class _TalkState extends State { // List chats = List.empty(growable: true); // // Future> getChats() async { // var url = Uri.https("***REMOVED***:***REMOVED***@mhsl.eu", "marianum/app/middleware/chat.php"); // var response = await http.get( // url, // headers: ( // { // "Accept": "application/json", // "OCS-APIRequest": "true", // } // ), // ); // // return compute(parseChats, response.body); // } @override void initState() { Provider.of(context, listen: false).invoke(); //TalkContactsAskPacket().send(); super.initState(); // Future.delayed(Duration.zero).then((context) => updateChats()); // Provider.of(context, listen: false).channel.sink.add("chat"); } void updateChats() { // var chats = getChats(); // // showDialog( // context: context, // barrierDismissible: false, // builder: (BuildContext context) { // return const LoadingSpinner(); // } // ); // // chats.then((value) => // setState(() { // Navigator.pop(context); // this.chats.clear(); // this.chats = value; // }) // ); } @override Widget build(BuildContext context) { // List chats = List.empty(growable: true); // // for (var element in this.chats) { // chats.add( // ListTile( // leading: element.type == 1 ? CircleAvatar( // backgroundColor: Colors.grey, // foregroundImage: Image.network(element.avatar).image, // ) : const Icon(Icons.group), // title: Text(element.name), // subtitle: Text( // "${element.lastMessageAuthor}: ${element.lastMessage.replaceAll("\n", "")}", // overflow: TextOverflow.ellipsis, // ), // onTap: () { // Navigator.push(context, MaterialPageRoute(builder: (builder) => const ChatView())); // }, // trailing: element.unreadMessages > 0 ? const Icon(Icons.mark_chat_unread) : Text(element.lastActivity), // ) // ); // } // // return ListView( // children: chats, // ); return Consumer( builder: (context, data, child) { List chats = List.empty(growable: true); for (var element in data.contacts) { chats.add(ListTile( title: Text(element.name), subtitle: Text("${element.lastTime}: ${element.lastMessage}".replaceAll("\n", " "), overflow: TextOverflow.ellipsis), trailing: element.unreadMessages ? const Icon(Icons.new_releases_outlined) : null, leading: CircleAvatar( foregroundImage: element.isGroup ? null : Image.network(element.profilePicture).image, backgroundColor: Theme.of(context).primaryColor, foregroundColor: Colors.white, child: element.isGroup ? const Icon(Icons.group) : const Icon(Icons.person), ), onTap: () { Navigator.of(context).push(MaterialPageRoute(builder: (context) { return ChatView( userToken: element.userToken, ); })); }, )); } return LoadingPacket(packet: data, child: ListView(children: chats)); }, ); } } // // List parseChats(String json) { // final parsed = jsonDecode(json).cast>(); // return parsed.map((a) => ChatData.fromJson(a)).toList(); // } // // class ChatData { // final String name; // final String lastMessage; // final String lastMessageAuthor; // final String avatar; // final int type; // final String lastActivity; // final int unreadMessages; // // const ChatData({ // required this.name, // required this.lastMessage, // required this.lastMessageAuthor, // required this.avatar, // required this.type, // required this.lastActivity, // required this.unreadMessages, // }); // // factory ChatData.fromJson(Map json) { // return ChatData( // name: json['name'] as String, // lastMessage: json['last_message'] as String, // lastMessageAuthor: json['last_message_author'] as String, // avatar: json['avatar'] as String, // type: json['type'] as int, // lastActivity: json['lastActivity'] as String, // unreadMessages: json['unreadMessages'] as int, // ); // } // }