Added functionality to create chat

This commit is contained in:
Elias Müller 2023-06-08 21:27:51 +02:00
parent 0f3fe75bad
commit 82b10e4eed
4 changed files with 99 additions and 2 deletions

View File

@ -0,0 +1,24 @@
import 'package:http/http.dart' as http;
import 'package:http/http.dart';
import '../talkApi.dart';
import 'createRoomParams.dart';
class CreateRoom extends TalkApi<void> {
CreateRoomParams params;
CreateRoom(this.params) : super("v4/room", params);
@override
assemble(String raw) {
}
@override
Future<Response>? request(Uri uri, Object? body, Map<String, String>? headers) {
if(body is CreateRoomParams) {
return http.post(uri, headers: headers, body: body.toJson().map((key, value) => MapEntry(key, value.toString())));
}
return null;
}
}

View File

@ -0,0 +1,27 @@
import 'package:json_annotation/json_annotation.dart';
import '../../../apiParams.dart';
part 'createRoomParams.g.dart';
@JsonSerializable()
class CreateRoomParams extends ApiParams {
int roomType;
String invite;
String? source;
String? roomName;
String? objectType;
String? objectId;
CreateRoomParams({
required this.roomType,
required this.invite,
this.source,
this.roomName,
this.objectType,
this.objectId
});
factory CreateRoomParams.fromJson(Map<String, dynamic> json) => _$CreateRoomParamsFromJson(json);
Map<String, dynamic> toJson() => _$CreateRoomParamsToJson(this);
}

View File

@ -0,0 +1,27 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'createRoomParams.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
CreateRoomParams _$CreateRoomParamsFromJson(Map<String, dynamic> json) =>
CreateRoomParams(
roomType: json['roomType'] as int,
invite: json['invite'] as String,
source: json['source'] as String?,
roomName: json['roomName'] as String?,
objectType: json['objectType'] as String?,
objectId: json['objectId'] as String?,
);
Map<String, dynamic> _$CreateRoomParamsToJson(CreateRoomParams instance) =>
<String, dynamic>{
'roomType': instance.roomType,
'invite': instance.invite,
'source': instance.source,
'roomName': instance.roomName,
'objectType': instance.objectType,
'objectId': instance.objectId,
};

View File

@ -1,8 +1,11 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/api/marianumcloud/talk/createRoom/createRoomParams.dart';
import 'package:marianum_mobile/widget/confirmDialog.dart';
import 'package:provider/provider.dart';
import '../../../api/marianumcloud/talk/createRoom/createRoom.dart';
import '../../../model/chatList/chatListProps.dart';
import '../../../storage/base/settingsProvider.dart';
import 'chatTile.dart';
@ -51,8 +54,24 @@ class _ChatListState extends State<ChatList> {
floatingActionButton: FloatingActionButton(
heroTag: "createChat",
backgroundColor: Theme.of(context).primaryColor,
onPressed: () {
showSearch(context: context, delegate: JoinChat());
onPressed: () async {
showSearch(context: context, delegate: JoinChat()).then((username) {
if(username == null) return;
ConfirmDialog(
title: "Chat starten",
content: "Möchtest du einen Chat mit nutzer '$username' starten?",
confirmButton: "Chat starten",
onConfirm: () {
CreateRoom(CreateRoomParams(
roomType: 1,
invite: username,
)).run().then((value) {
_query(renew: true);
});
},
).asDialog(context);
});
},
child: const Icon(Icons.add_comment_outlined),
),