diff --git a/flake.nix b/flake.nix index 0d380af..a79d6b8 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,7 @@ perSystem = { + lib, pkgs, system, ... @@ -62,6 +63,7 @@ pkgs.sqlite ]) }:./.dart_tool/hooks_runner/shared/nexus/build/gomuks"; + CPATH = lib.makeSearchPath "include" [ pkgs.glibc.dev ]; # ANDROID_HOME = "${android.androidsdk}/libexec/android-sdk"; # ANDROID_SDK_ROOT = ANDROID_HOME; diff --git a/lib/controllers/client_controller.dart b/lib/controllers/client_controller.dart index 3d3127b..2599d7d 100644 --- a/lib/controllers/client_controller.dart +++ b/lib/controllers/client_controller.dart @@ -8,7 +8,11 @@ import "package:nexus/models/sync_status.dart"; import "package:nexus/src/third_party/gomuks.g.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; -void gomuksCallback(Pointer command, int requestId, GomuksBuffer data) { +void gomuksCallback( + Pointer command, + int requestId, + GomuksBorrowedBuffer data, +) { try { final muksEventType = command.cast().toDartString(); final Map decodedMuksEvent = data.toJson(); @@ -34,9 +38,9 @@ class ClientController extends Notifier { GomuksStart( handle, - Pointer.fromFunction, Int64, GomuksBuffer)>( - gomuksCallback, - ), + Pointer.fromFunction< + Void Function(Pointer, Int64, GomuksBorrowedBuffer) + >(gomuksCallback), ); return handle; diff --git a/lib/helpers/extensions/gomuks_buffer.dart b/lib/helpers/extensions/gomuks_buffer.dart index 0e44706..5de7eab 100644 --- a/lib/helpers/extensions/gomuks_buffer.dart +++ b/lib/helpers/extensions/gomuks_buffer.dart @@ -5,6 +5,14 @@ import "dart:typed_data"; import "package:ffi/ffi.dart"; import "package:nexus/src/third_party/gomuks.g.dart"; +extension GomuksBufferToJson on GomuksBorrowedBuffer { + Map toJson() { + final bytes = toBytes(); + if (bytes.isEmpty) return {}; + return jsonDecode(utf8.decode(bytes)); + } +} + extension JsonToGomuksBuffer on Map { GomuksBuffer toGomuksBuffer() { final jsonString = json.encode(this); diff --git a/scripts/generate.dart b/scripts/generate.dart index e633890..427df3f 100644 --- a/scripts/generate.dart +++ b/scripts/generate.dart @@ -76,7 +76,7 @@ void main(List args) async { ), headers: Headers( entryPoints: [File(join(buildDir.path, "libgomuks.h")).uri], - // compilerOptions: ["-I${String.fromEnvironment("CPATH")}"], + compilerOptions: ["--no-warnings"], ), functions: Functions.includeAll, ).generate();