diff --git a/lib/controllers/client_controller.dart b/lib/controllers/client_controller.dart index 10c67a0..8e7a7d2 100644 --- a/lib/controllers/client_controller.dart +++ b/lib/controllers/client_controller.dart @@ -105,9 +105,9 @@ class ClientController extends AsyncNotifier { } Future _sendCommand( - String command, - Map data, - ) async { + String command, [ + Map data = const {}, + ]) async { final bufferPointer = data.toGomuksBufferPtr(); final handle = await future; final response = await Isolate.run( @@ -145,6 +145,11 @@ class ClientController extends AsyncNotifier { return response["room_id"]; } + Future getAccessToken() async { + final response = await _sendCommand("get_account_info", {}); + return response["access_token"]; + } + Future leaveRoom(Room room) async { if (room.metadata == null) return; await _sendCommand("leave_room", {"room_id": room.metadata!.id}); diff --git a/lib/controllers/header_controller.dart b/lib/controllers/header_controller.dart index ead8f0d..56f57b2 100644 --- a/lib/controllers/header_controller.dart +++ b/lib/controllers/header_controller.dart @@ -1,23 +1,11 @@ -import "dart:ffi"; -import "dart:isolate"; -import "package:ffi/ffi.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:nexus/controllers/client_controller.dart"; -import "package:nexus/src/third_party/gomuks.g.dart"; class HeaderController extends AsyncNotifier> { @override Future> build() async { - final handle = await ref.watch(ClientController.provider.future); - final info = await Isolate.run(() => GomuksGetAccountInfo(handle)); - final headers = { - if (info.access_token != nullptr) - "authorization": - "Bearer ${info.access_token.cast().toDartString()}", - }; - - await Isolate.run(() => GomuksFreeAccountInfo(info)); - return headers; + final client = ref.watch(ClientController.provider.notifier); + return {"authorization": "Bearer ${await client.getAccessToken()}"}; } static final provider = diff --git a/scripts/generate.dart b/scripts/generate.dart index b240d98..c39c85f 100644 --- a/scripts/generate.dart +++ b/scripts/generate.dart @@ -15,6 +15,8 @@ void main(List args) async { "--depth", "1", "https://mau.dev/gomuks/gomuks", + "--branch", + "tulir/ffi-updates", repoDir.path, ]);