Merge branch 'isabella/create-chat-with-powerlevel' into 'main'

Isabella/create chat with powerlevel

See merge request famedly/company/frontend/famedlysdk!1078
This commit is contained in:
Krille Fear 2022-07-14 08:32:39 +00:00
commit 50ef19b8a8
1 changed files with 12 additions and 9 deletions

View File

@ -21,19 +21,19 @@ import 'dart:convert';
import 'dart:core'; import 'dart:core';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:matrix/src/utils/cached_stream_controller.dart'; import 'package:matrix/src/utils/cached_stream_controller.dart';
import 'package:matrix/src/utils/run_in_root.dart'; import 'package:matrix/src/utils/run_in_root.dart';
import 'package:matrix/src/utils/sync_update_item_count.dart'; import 'package:matrix/src/utils/sync_update_item_count.dart';
import 'package:mime/mime.dart'; import 'package:mime/mime.dart';
import 'package:olm/olm.dart' as olm; import 'package:olm/olm.dart' as olm;
import 'package:collection/collection.dart' show IterableExtension;
import 'package:random_string/random_string.dart'; import 'package:random_string/random_string.dart';
import '../encryption.dart'; import '../encryption.dart';
import '../matrix.dart'; import '../matrix.dart';
import 'utils/run_benchmarked.dart';
import 'utils/multilock.dart'; import 'utils/multilock.dart';
import 'utils/run_benchmarked.dart';
typedef RoomSorter = int Function(Room a, Room b); typedef RoomSorter = int Function(Room a, Room b);
@ -570,6 +570,7 @@ class Client extends MatrixApi {
bool? enableEncryption, bool? enableEncryption,
List<StateEvent>? initialState, List<StateEvent>? initialState,
bool waitForSync = true, bool waitForSync = true,
Map<String, dynamic>? powerLevelContentOverride,
}) async { }) async {
// Try to find an existing direct chat // Try to find an existing direct chat
final directChatRoomId = getDirectChatFromUserId(mxid); final directChatRoomId = getDirectChatFromUserId(mxid);
@ -595,6 +596,7 @@ class Client extends MatrixApi {
isDirect: true, isDirect: true,
preset: CreateRoomPreset.trustedPrivateChat, preset: CreateRoomPreset.trustedPrivateChat,
initialState: initialState, initialState: initialState,
powerLevelContentOverride: powerLevelContentOverride,
); );
if (waitForSync && getRoomById(roomId) == null) { if (waitForSync && getRoomById(roomId) == null) {
@ -619,6 +621,7 @@ class Client extends MatrixApi {
Visibility? visibility, Visibility? visibility,
bool waitForSync = true, bool waitForSync = true,
bool groupCall = false, bool groupCall = false,
Map<String, dynamic>? powerLevelContentOverride,
}) async { }) async {
enableEncryption ??= enableEncryption ??=
encryptionEnabled && preset != CreateRoomPreset.publicChat; encryptionEnabled && preset != CreateRoomPreset.publicChat;
@ -633,19 +636,19 @@ class Client extends MatrixApi {
)); ));
} }
} }
if (groupCall) {
powerLevelContentOverride ??= {};
powerLevelContentOverride['events'] = <String, dynamic>{
'org.matrix.msc3401.call.member': 0,
};
}
final roomId = await createRoom( final roomId = await createRoom(
invite: invite, invite: invite,
preset: preset, preset: preset,
name: groupName, name: groupName,
initialState: initialState, initialState: initialState,
visibility: visibility, visibility: visibility,
powerLevelContentOverride: groupCall powerLevelContentOverride: powerLevelContentOverride);
? <String, dynamic>{
'events': <String, dynamic>{
'org.matrix.msc3401.call.member': 0,
},
}
: null);
if (waitForSync) { if (waitForSync) {
if (getRoomById(roomId) == null) { if (getRoomById(roomId) == null) {