Normally we do not need a workaround here at all but we had one in the displayname calculation for historical reasons. A "good" server should always send the mHeroes correctly. Instead of removing this workaround completely we do a compromise and implement a more lightweight alt behaviour by just saying that in a DM room with no heroes, the directChatMatrixId will be used. This is the same behaviour like in Element and needs way less lines than before and also covers the avatar calculation. For Synapse we seem to not need this but for Conduit it might be helpful. |
||
|---|---|---|
| .gitlab | ||
| docs | ||
| example | ||
| home | ||
| lib | ||
| olm@efd17631b1 | ||
| scripts | ||
| test | ||
| test_driver | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .metadata | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
| analysis_options.yaml | ||
| build.yaml | ||
| pubspec.yaml | ||
README.md
Matrix SDK
Matrix (matrix.org) SDK written in dart.
Native libraries
For E2EE, libolm must be provided.
Additionally, OpenSSL (libcrypto) must be provided on native platforms for E2EE.
For flutter apps you can easily import it with the flutter_olm and the flutter_openssl_crypto packages.
How to use this
- Import the sdk
matrix: <latest-version>
# Optional:
flutter_olm: <latest-version>
flutter_openssl_crypto: <latest-version>
import 'package:matrix/matrix.dart';
- Create a new client:
final client = Client("HappyChat");
The SDK works better with a database. Otherwise it has no persistence. For this you need to provide a databaseBuilder like this:
final client = Client(
"HappyChat",
databaseBuilder: (Client client) async {
await Hive.init('/path/to/your/storage');
final db = FamedlySdkHiveDatabase(client.clientName);
await db.open();
return db;
},
);
- Connect to a Matrix Homeserver and listen to the streams:
client.onLoginStateChanged.stream.listen((bool loginState){
print("LoginState: ${loginState.toString()}");
});
client.onEvent.stream.listen((EventUpdate eventUpdate){
print("New event update!");
});
client.onRoomUpdate.stream.listen((RoomUpdate eventUpdate){
print("New room update!");
});
await client.checkHomeserver("https://yourhomeserver.abc");
await client.login(
identifier: AuthenticationUserIdentifier(user: 'alice'),
password: '123456',
);
- Send a message to a Room:
await client.getRoomById('your_room_id').sendTextEvent('Hello world');