diff --git a/lib/controllers/client_controller.dart b/lib/controllers/client_controller.dart new file mode 100644 index 0000000..066c618 --- /dev/null +++ b/lib/controllers/client_controller.dart @@ -0,0 +1,33 @@ +import "dart:io"; + +import "package:matrix/matrix.dart"; +import "package:nexusbot/controllers/settings_controller.dart"; +import "package:riverpod/riverpod.dart"; +import "package:sqflite_common_ffi/sqflite_ffi.dart"; + +class ClientController extends AsyncNotifier { + @override + Future build() async { + final settings = ref.watch(SettingsController.provider)!; + final client = Client( + "nexusbot", + database: await MatrixSdkDatabase.init( + "NexusBot", + database: await databaseFactoryFfi.openDatabase(inMemoryDatabasePath), + ), + ); + + await client.checkHomeserver(settings.homeserver); + await client.login( + LoginType.mLoginPassword, + identifier: AuthenticationUserIdentifier(user: settings.name), + password: (await File(settings.botPasswordFile).readAsString()).trim(), + ); + + return client; + } + + static final provider = AsyncNotifierProvider( + ClientController.new, + ); +}