From 09534a677561a1217ca81270e2d137c5778d2fa5 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 22 Sep 2026 09:53:00 -0400 Subject: [PATCH] use GomuksConfig --- .gitmodules | 3 +- gomuks | 2 +- lib/controllers/client.dart | 16 ++++++---- lib/models/gomuks_config.dart | 55 +++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 lib/models/gomuks_config.dart diff --git a/.gitmodules b/.gitmodules index 627b6b0..06dd51a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,3 @@ [submodule "gomuks"] path = gomuks - url = https://github.com/Henry-Hiles/gomuks - branch = quad/feat/customizable-device-name + url = https://github.com/gomuks/gomuks diff --git a/gomuks b/gomuks index ae11daa..b11eedc 160000 --- a/gomuks +++ b/gomuks @@ -1 +1 @@ -Subproject commit ae11daa1b14b103688e57accb9c65ad6401cb3ef +Subproject commit b11eedca121a7081d3ee48165ba363e722d18d87 diff --git a/lib/controllers/client.dart b/lib/controllers/client.dart index cd1fa13..8f6e774 100644 --- a/lib/controllers/client.dart +++ b/lib/controllers/client.dart @@ -20,6 +20,7 @@ import "package:nexus/main.dart"; import "package:nexus/models/capabilities.dart"; import "package:nexus/models/content/message.dart"; import "package:nexus/models/event.dart"; +import "package:nexus/models/gomuks_config.dart"; import "package:nexus/models/oauth_auth_code_response.dart"; import "package:nexus/models/open_graph_data.dart"; import "package:nexus/models/paginate.dart"; @@ -70,14 +71,17 @@ class ClientController extends AsyncNotifier { } } final handle = await Isolate.run(() { - final message = - "Nexus on ${toBeginningOfSentenceCase(Platform.operatingSystem)}" - .toNativeUtf8() - .cast(); + final bufferPointer = GomuksConfig( + matrix: .new( + initialDeviceDisplayName: + "Nexus on ${toBeginningOfSentenceCase(Platform.operatingSystem)}", + ), + ).toJson().toGomuksBufferPtr(); + try { - return GomuksInit(message); + return GomuksInit(bufferPointer.ref); } finally { - calloc.free(message); + calloc.free(bufferPointer); } }); diff --git a/lib/models/gomuks_config.dart b/lib/models/gomuks_config.dart new file mode 100644 index 0000000..e6a8ce7 --- /dev/null +++ b/lib/models/gomuks_config.dart @@ -0,0 +1,55 @@ +import "package:freezed_annotation/freezed_annotation.dart"; + +part "gomuks_config.freezed.dart"; +part "gomuks_config.g.dart"; + +@Freezed(toJson: false, fromJson: false) +@JsonSerializable() +class const GomuksConfig({ + final MatrixConfig? matrix, + final PushConfig? push, + final MediaConfig? media, +}) with _$GomuksConfig { + Map toJson() => _$GomuksConfigToJson(this); + + factory GomuksConfig.fromJson(Map json) => + _$GomuksConfigFromJson(json); +} + +@Freezed(toJson: false, fromJson: false) +@JsonSerializable() +class const MatrixConfig({ + @JsonKey(name: "disable_http2") final bool disableHttp2 = false, + @JsonKey(name: "set_presence") final String? setPresence, + @JsonKey(name: "initial_device_display_name") + required final String initialDeviceDisplayName, +}) with _$MatrixConfig { + Map toJson() => _$MatrixConfigToJson(this); + + factory MatrixConfig.fromJson(Map json) => + _$MatrixConfigFromJson(json); +} + +@Freezed(toJson: false, fromJson: false) +@JsonSerializable() +class const PushConfig({ + @JsonKey(name: "fcm_gateway") required final String fcmGateway, + @JsonKey(name: "vapid_private_key") required final String vapidPrivateKey, + @JsonKey(name: "vapid_public_key") required final String vapidPublicKey, +}) with _$PushConfig { + Map toJson() => _$PushConfigToJson(this); + + factory PushConfig.fromJson(Map json) => + _$PushConfigFromJson(json); +} + +@Freezed(toJson: false, fromJson: false) +@JsonSerializable() +class const MediaConfig({ + @JsonKey(name: "thumbnail_size") required final int thumbnailSize, +}) with _$MediaConfig { + Map toJson() => _$MediaConfigToJson(this); + + factory MediaConfig.fromJson(Map json) => + _$MediaConfigFromJson(json); +}