feat: use OkHttp and fix mTLS (#15230)

This commit is contained in:
Denys Vitali 2025-10-08 13:55:04 +02:00
parent 4cd2cc223a
commit 6de4921b99
No known key found for this signature in database
GPG key ID: 37CE2BFB2D6D249D
22 changed files with 560 additions and 236 deletions

View file

@ -10,6 +10,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/common/http.dart';
import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/constants/locales.dart';
import 'package:immich_mobile/domain/services/background_worker.service.dart';
@ -41,6 +42,7 @@ import 'package:immich_mobile/utils/http_ssl_options.dart';
import 'package:immich_mobile/utils/licenses.dart';
import 'package:immich_mobile/utils/migration.dart';
import 'package:immich_mobile/pages/common/error_display_screen.dart';
import 'package:immich_mobile/common/package_info.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:logging/logging.dart';
import 'package:timezone/data/latest.dart';
@ -53,6 +55,8 @@ void main() async {
final (isar, drift, logDb) = await Bootstrap.initDB();
await Bootstrap.initDomain(isar, drift, logDb);
await initApp();
await setPackageInfo();
await refreshClient();
// Warm-up isolate pool for worker manager
await workerManager.init(dynamicSpawning: true);
await migrateDatabaseIfNeeded(isar, drift);
@ -72,15 +76,12 @@ void main() async {
// Log the error for debugging
debugPrint('Fatal initialization error: $e');
debugPrint('Stack trace: $stackTrace');
// Display a prominent error message to the user
runApp(
MaterialApp(
title: 'Immich - Initialization Error',
home: ErrorDisplayScreen(
error: e.toString(),
stackTrace: stackTrace.toString(),
),
home: ErrorDisplayScreen(error: e.toString(), stackTrace: stackTrace.toString()),
debugShowCheckedModeBanner: false,
),
);
@ -139,6 +140,10 @@ Future<void> initApp() async {
});
}
Future<void> setPackageInfo() async {
await PackageInfoSingleton.instance.init();
}
class ImmichApp extends ConsumerStatefulWidget {
const ImmichApp({super.key});