From 0a11e3ae51b63cb54a8df757285cd759af7ffc37 Mon Sep 17 00:00:00 2001 From: jld3103 Date: Wed, 20 Jul 2022 18:13:36 +0200 Subject: [PATCH] harbour: Use proper user-agent --- packages/harbour/lib/main.dart | 2 ++ packages/harbour/lib/src/blocs/login.dart | 3 +-- packages/harbour/lib/src/harbour.dart | 1 + packages/harbour/lib/src/models/account.dart | 7 ++----- packages/harbour/lib/src/pages/login/login.dart | 2 ++ packages/harbour/lib/src/utils/global.dart | 9 +++++++++ 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 packages/harbour/lib/src/utils/global.dart diff --git a/packages/harbour/lib/main.dart b/packages/harbour/lib/main.dart index 13112077..a1851264 100644 --- a/packages/harbour/lib/main.dart +++ b/packages/harbour/lib/main.dart @@ -25,6 +25,8 @@ Future main() async { FlutterNativeSplash.preserve(widgetsBinding: WidgetsBinding.instance); + await Global.init(); + final platform = getHarbourPlatform(); await platform.init?.call(); diff --git a/packages/harbour/lib/src/blocs/login.dart b/packages/harbour/lib/src/blocs/login.dart index 29d4e5cb..12158935 100644 --- a/packages/harbour/lib/src/blocs/login.dart +++ b/packages/harbour/lib/src/blocs/login.dart @@ -35,8 +35,7 @@ class LoginBloc extends $LoginBloc { try { final client = NextcloudClient( url, - userAgentSuffix: userAgentSuffix, - appType: appType, + userAgentOverride: userAgentOverride(), ); final status = (await client.core.getStatus())!; diff --git a/packages/harbour/lib/src/harbour.dart b/packages/harbour/lib/src/harbour.dart index 0202481b..d67139e8 100644 --- a/packages/harbour/lib/src/harbour.dart +++ b/packages/harbour/lib/src/harbour.dart @@ -69,6 +69,7 @@ part 'utils/app_implementation.dart'; part 'utils/confirmation_dialog.dart'; part 'utils/custom_timeago.dart'; part 'utils/env.dart'; +part 'utils/global.dart'; part 'utils/global_options.dart'; part 'utils/hex_color.dart'; part 'utils/missing_permission_exception.dart'; diff --git a/packages/harbour/lib/src/models/account.dart b/packages/harbour/lib/src/models/account.dart index 7b29d374..55995326 100644 --- a/packages/harbour/lib/src/models/account.dart +++ b/packages/harbour/lib/src/models/account.dart @@ -9,9 +9,7 @@ import 'package:settings/settings.dart'; part 'account.g.dart'; -// TODO: https://github.com/jld3103/nextcloud-harbour/issues/9 -const userAgentSuffix = ' // Harbour'; -const appType = AppType.nextcloud; +String userAgentOverride() => 'Harbour ${Global.packageInfo.version}+${Global.packageInfo.buildNumber}'; @JsonSerializable() class Account { @@ -54,8 +52,7 @@ class Account { serverURL, username: username, password: password ?? appPassword, - userAgentSuffix: userAgentSuffix, - appType: appType, + userAgentOverride: userAgentOverride(), ); } diff --git a/packages/harbour/lib/src/pages/login/login.dart b/packages/harbour/lib/src/pages/login/login.dart index 60a0b36b..a3effbb1 100644 --- a/packages/harbour/lib/src/pages/login/login.dart +++ b/packages/harbour/lib/src/pages/login/login.dart @@ -73,6 +73,7 @@ class _LoginPageState extends State { final Env? env, ) => { + HttpHeaders.userAgentHeader: userAgentOverride(), if (env != null) ...{ HttpHeaders.authorizationHeader: 'Basic ${base64.encode(utf8.encode('${env.testUsername}:${env.testPassword}'))}', @@ -136,6 +137,7 @@ class _LoginPageState extends State { ? WebView( javascriptMode: JavascriptMode.unrestricted, zoomEnabled: false, + userAgent: userAgentOverride(), onWebViewCreated: (final controller) async { _webViewController = controller; final url = diff --git a/packages/harbour/lib/src/utils/global.dart b/packages/harbour/lib/src/utils/global.dart new file mode 100644 index 00000000..77756937 --- /dev/null +++ b/packages/harbour/lib/src/utils/global.dart @@ -0,0 +1,9 @@ +part of '../harbour.dart'; + +class Global { + static Future init() async { + packageInfo = await PackageInfo.fromPlatform(); + } + + static late PackageInfo packageInfo; +}