Merge branch 'master' into soru/fix-members-requests
This commit is contained in:
commit
0ece2717e0
6
build.yaml
Normal file
6
build.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
targets:
|
||||
$default:
|
||||
builders:
|
||||
moor_generator:
|
||||
options:
|
||||
generate_connect_constructor: true
|
|
@ -194,8 +194,14 @@ class KeyVerification {
|
|||
}
|
||||
}
|
||||
|
||||
bool _handlePayloadLock = false;
|
||||
|
||||
Future<void> handlePayload(String type, Map<String, dynamic> payload,
|
||||
[String eventId]) async {
|
||||
while (_handlePayloadLock) {
|
||||
await Future.delayed(Duration(milliseconds: 50));
|
||||
}
|
||||
_handlePayloadLock = true;
|
||||
print('[Key Verification] Received type ${type}: ' + payload.toString());
|
||||
try {
|
||||
var thisLastStep = lastStep;
|
||||
|
@ -307,6 +313,8 @@ class KeyVerification {
|
|||
if (deviceId != null) {
|
||||
await cancel('m.invalid_message');
|
||||
}
|
||||
} finally {
|
||||
_handlePayloadLock = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -529,8 +537,8 @@ class KeyVerification {
|
|||
Future<void> send(String type, Map<String, dynamic> payload) async {
|
||||
makePayload(payload);
|
||||
print('[Key Verification] Sending type ${type}: ' + payload.toString());
|
||||
print('[Key Verification] Sending to ${userId} device ${deviceId}');
|
||||
if (room != null) {
|
||||
print('[Key Verification] Sending to ${userId} in room ${room.id}');
|
||||
if (['m.key.verification.request'].contains(type)) {
|
||||
payload['msgtype'] = type;
|
||||
payload['to'] = userId;
|
||||
|
@ -544,6 +552,7 @@ class KeyVerification {
|
|||
encryption.keyVerificationManager.addRequest(this);
|
||||
}
|
||||
} else {
|
||||
print('[Key Verification] Sending to ${userId} device ${deviceId}');
|
||||
await client.sendToDevice(
|
||||
[client.userDeviceKeys[userId].deviceKeys[deviceId]], type, payload);
|
||||
}
|
||||
|
|
|
@ -74,7 +74,9 @@ class PusherData {
|
|||
});
|
||||
|
||||
PusherData.fromJson(Map<String, dynamic> json) {
|
||||
if (json.containsKey('url')) {
|
||||
url = Uri.parse(json['url']);
|
||||
}
|
||||
format = json['format'];
|
||||
}
|
||||
|
||||
|
|
|
@ -87,7 +87,8 @@ class Client {
|
|||
this.enableE2eeRecovery = false,
|
||||
this.verificationMethods,
|
||||
http.Client httpClient,
|
||||
this.importantStateEvents}) {
|
||||
this.importantStateEvents,
|
||||
this.pinUnreadRooms = false}) {
|
||||
verificationMethods ??= <KeyVerificationMethod>{};
|
||||
importantStateEvents ??= <String>{};
|
||||
importantStateEvents.addAll([
|
||||
|
@ -1101,13 +1102,16 @@ class Client {
|
|||
|
||||
bool _sortLock = false;
|
||||
|
||||
/// If [true] then unread rooms are pinned at the top of the room list.
|
||||
bool pinUnreadRooms;
|
||||
|
||||
/// The compare function how the rooms should be sorted internally. By default
|
||||
/// rooms are sorted by timestamp of the last m.room.message event or the last
|
||||
/// event if there is no known message.
|
||||
RoomSorter sortRoomsBy = (a, b) => (a.membership != b.membership)
|
||||
? (a.membership == Membership.invite ? -1 : 1)
|
||||
: (a.isFavourite != b.isFavourite)
|
||||
RoomSorter get sortRoomsBy => (a, b) => (a.isFavourite != b.isFavourite)
|
||||
? (a.isFavourite ? -1 : 1)
|
||||
: (pinUnreadRooms && a.notificationCount != b.notificationCount)
|
||||
? b.notificationCount.compareTo(a.notificationCount)
|
||||
: b.timeCreated.millisecondsSinceEpoch
|
||||
.compareTo(a.timeCreated.millisecondsSinceEpoch);
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ part 'database.g.dart';
|
|||
class Database extends _$Database {
|
||||
Database(QueryExecutor e) : super(e);
|
||||
|
||||
Database.connect(DatabaseConnection connection) : super.connect(connection);
|
||||
|
||||
@override
|
||||
int get schemaVersion => 5;
|
||||
|
||||
|
@ -48,7 +50,6 @@ class Database extends _$Database {
|
|||
}
|
||||
if (from == 3) {
|
||||
await m.createTable(userCrossSigningKeys);
|
||||
await m.createIndex(userCrossSigningKeysIndex);
|
||||
await m.createTable(ssssCache);
|
||||
// mark all keys as outdated so that the cross signing keys will be fetched
|
||||
await m.issueCustomQuery(
|
||||
|
|
|
@ -5361,6 +5361,7 @@ class Files extends Table with TableInfo<Files, DbFile> {
|
|||
|
||||
abstract class _$Database extends GeneratedDatabase {
|
||||
_$Database(QueryExecutor e) : super(SqlTypeSystem.defaultInstance, e);
|
||||
_$Database.connect(DatabaseConnection c) : super.connect(c);
|
||||
Clients _clients;
|
||||
Clients get clients => _clients ??= Clients(this);
|
||||
UserDeviceKeys _userDeviceKeys;
|
||||
|
|
|
@ -89,7 +89,13 @@ class Event extends MatrixEvent {
|
|||
this.roomId = roomId ?? room?.id;
|
||||
this.senderId = senderId;
|
||||
this.unsigned = unsigned;
|
||||
this.prevContent = prevContent;
|
||||
// synapse unfortunatley isn't following the spec and tosses the prev_content
|
||||
// into the unsigned block
|
||||
this.prevContent = prevContent != null && prevContent.isNotEmpty
|
||||
? prevContent
|
||||
: (unsigned != null && unsigned['prev_content'] is Map
|
||||
? unsigned['prev_content']
|
||||
: null);
|
||||
this.stateKey = stateKey;
|
||||
this.originServerTs = originServerTs;
|
||||
}
|
||||
|
|
|
@ -71,7 +71,10 @@ class User extends Event {
|
|||
String get id => stateKey;
|
||||
|
||||
/// The displayname of the user if the user has set one.
|
||||
String get displayName => content != null ? content['displayname'] : null;
|
||||
String get displayName =>
|
||||
content != null && content.containsKey('displayname')
|
||||
? content['displayname']
|
||||
: (prevContent != null ? prevContent['displayname'] : null);
|
||||
|
||||
/// Returns the power level of this user.
|
||||
int get powerLevel => room?.getPowerLevelByUserId(id);
|
||||
|
@ -89,9 +92,13 @@ class User extends Event {
|
|||
}, orElse: () => Membership.join);
|
||||
|
||||
/// The avatar if the user has one.
|
||||
Uri get avatarUrl => content != null && content['avatar_url'] is String
|
||||
Uri get avatarUrl => content != null && content.containsKey('avatar_url')
|
||||
? (content['avatar_url'] is String
|
||||
? Uri.parse(content['avatar_url'])
|
||||
: null;
|
||||
: null)
|
||||
: (prevContent != null && prevContent['avatar_url'] is String
|
||||
? Uri.parse(prevContent['avatar_url'])
|
||||
: null);
|
||||
|
||||
/// Returns the displayname or the local part of the Matrix ID if the user
|
||||
/// has no displayname. If [formatLocalpart] is true, then the localpart will
|
||||
|
|
43
pubspec.lock
43
pubspec.lock
|
@ -22,13 +22,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.2.2"
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.13"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -326,12 +319,10 @@ packages:
|
|||
matrix_file_e2ee:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "."
|
||||
ref: "1.x.y"
|
||||
resolved-ref: "32edeff765369a7a77a0822f4b19302ca24a017b"
|
||||
url: "https://gitlab.com/famedly/libraries/matrix_file_e2ee.git"
|
||||
source: git
|
||||
version: "1.0.3"
|
||||
name: matrix_file_e2ee
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -340,7 +331,7 @@ packages:
|
|||
source: hosted
|
||||
version: "1.1.8"
|
||||
mime:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: mime
|
||||
url: "https://pub.dartlang.org"
|
||||
|
@ -398,12 +389,10 @@ packages:
|
|||
olm:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "."
|
||||
ref: "1.x.y"
|
||||
resolved-ref: "8e4fcccff7a2d4d0bd5142964db092bf45061905"
|
||||
url: "https://gitlab.com/famedly/libraries/dart-olm.git"
|
||||
source: git
|
||||
version: "1.2.0"
|
||||
name: olm
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -432,13 +421,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: petitparser
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
pointycastle:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -670,13 +652,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.5.4"
|
||||
xml:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xml
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.7.0"
|
||||
yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
12
pubspec.yaml
12
pubspec.yaml
|
@ -19,16 +19,8 @@ dependencies:
|
|||
crypto: ^2.1.4
|
||||
base58check: ^1.0.1
|
||||
password_hash: ^2.0.0
|
||||
|
||||
olm:
|
||||
git:
|
||||
url: https://gitlab.com/famedly/libraries/dart-olm.git
|
||||
ref: 1.x.y
|
||||
|
||||
matrix_file_e2ee:
|
||||
git:
|
||||
url: https://gitlab.com/famedly/libraries/matrix_file_e2ee.git
|
||||
ref: 1.x.y
|
||||
olm: ^1.2.1
|
||||
matrix_file_e2ee: ^1.0.4
|
||||
|
||||
dev_dependencies:
|
||||
test: ^1.0.0
|
||||
|
|
Loading…
Reference in a new issue