feat: Use rhttp package for http3 usage

krille/use-rhttp
Christian Kußowski 2 months ago
parent 4b2611e892
commit 1c040384d9
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652

@ -1,9 +1,11 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:flutter_vodozemac/flutter_vodozemac.dart' as vod;
import 'package:matrix/matrix.dart';
import 'package:rhttp/rhttp.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:fluffychat/config/app_config.dart';
@ -22,6 +24,7 @@ void main() async {
WidgetsFlutterBinding.ensureInitialized();
await vod.init(wasmPath: './assets/assets/vodozemac/');
if (!kIsWeb) await Rhttp.init();
Logs().nativeColors = !PlatformInfos.isIOS;
final store = await SharedPreferences.getInstance();

@ -106,7 +106,7 @@ abstract class ClientManager {
return Client(
clientName,
httpClient: CustomHttpClient.createHTTPClient(),
httpClient: await CustomHttpClient.createHTTPClient(),
verificationMethods: {
KeyVerificationMethod.numbers,
if (kIsWeb || PlatformInfos.isMobile || PlatformInfos.isLinux)

@ -1,9 +1,12 @@
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:http/http.dart' as http;
import 'package:http/io_client.dart';
import 'package:http/retry.dart' as retry;
import 'package:rhttp/rhttp.dart';
import 'package:fluffychat/config/isrg_x1.dart';
import 'package:fluffychat/utils/platform_infos.dart';
@ -32,9 +35,19 @@ class CustomHttpClient {
return HttpClient(context: context);
}
static http.Client createHTTPClient() => retry.RetryClient(
PlatformInfos.isAndroid
? IOClient(customHttpClient(ISRG_X1))
: http.Client(),
);
static Future<http.Client> createHTTPClient() async {
if (kIsWeb) return http.Client();
final needsLetsEncryptCert = PlatformInfos.isAndroid
? (await DeviceInfoPlugin().androidInfo).version.sdkInt < 25
: false;
if (needsLetsEncryptCert) {
return IOClient(customHttpClient(ISRG_X1));
}
return await RhttpCompatibleClient.create(
interceptors: [RetryInterceptor()],
);
}
}

@ -19,6 +19,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
list(APPEND FLUTTER_FFI_PLUGIN_LIST
flutter_vodozemac
rhttp
)
set(PLUGIN_BUNDLED_LIBRARIES)

@ -42,6 +42,8 @@ PODS:
- FlutterMacOS
- record_macos (1.1.0):
- FlutterMacOS
- rhttp (0.0.1):
- FlutterMacOS
- share_plus (0.0.1):
- FlutterMacOS
- shared_preferences_foundation (0.0.1):
@ -70,11 +72,8 @@ PODS:
DEPENDENCIES:
- app_links (from `Flutter/ephemeral/.symlinks/plugins/app_links/macos`)
- audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`)
- desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`)
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
- dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`)
- emoji_picker_flutter (from `Flutter/ephemeral/.symlinks/plugins/emoji_picker_flutter/macos`)
- file_picker (from `Flutter/ephemeral/.symlinks/plugins/file_picker/macos`)
- file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`)
- flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`)
@ -89,6 +88,7 @@ DEPENDENCIES:
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
- record_macos (from `Flutter/ephemeral/.symlinks/plugins/record_macos/macos`)
- rhttp (from `Flutter/ephemeral/.symlinks/plugins/rhttp/macos`)
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqlcipher_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlcipher_flutter_libs/macos`)
@ -144,6 +144,8 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
record_macos:
:path: Flutter/ephemeral/.symlinks/plugins/record_macos/macos
rhttp:
:path: Flutter/ephemeral/.symlinks/plugins/rhttp/macos
share_plus:
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
shared_preferences_foundation:

@ -708,6 +708,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
freezed_annotation:
dependency: transitive
description:
name: freezed_annotation
sha256: "7294967ff0a6d98638e7acb774aac3af2550777accd8149c90af5b014e6d44d8"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
frontend_server_client:
dependency: transitive
description:
@ -881,6 +889,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.1.2"
http_profile:
dependency: transitive
description:
name: http_profile
sha256: "7e679e355b09aaee2ab5010915c932cce3f2d1c11c3b2dc177891687014ffa78"
url: "https://pub.dev"
source: hosted
version: "0.1.0"
image:
dependency: "direct main"
description:
@ -1542,6 +1558,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.2"
rhttp:
dependency: "direct main"
description:
name: rhttp
sha256: "9dc9608187979c98cdb9164f0ef037ec65b14584c4ef6c866744170fa508cf8e"
url: "https://pub.dev"
source: hosted
version: "0.12.0"
rxdart:
dependency: transitive
description:

@ -68,6 +68,7 @@ dependencies:
qr_image: ^1.0.0
receive_sharing_intent: ^1.8.1
record: ^6.1.1
rhttp: ^0.12.0
scroll_to_index: ^3.0.1
share_plus: ^11.1.0
shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401

@ -22,6 +22,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
list(APPEND FLUTTER_FFI_PLUGIN_LIST
flutter_local_notifications_windows
flutter_vodozemac
rhttp
)
set(PLUGIN_BUNDLED_LIBRARIES)

Loading…
Cancel
Save