diff --git a/mobile/lib/infrastructure/repositories/sync_api.repository.dart b/mobile/lib/infrastructure/repositories/sync_api.repository.dart index 3969286d28..2e288edb37 100644 --- a/mobile/lib/infrastructure/repositories/sync_api.repository.dart +++ b/mobile/lib/infrastructure/repositories/sync_api.repository.dart @@ -6,11 +6,13 @@ import 'package:immich_mobile/constants/constants.dart'; import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/domain/models/sync_event.model.dart'; import 'package:immich_mobile/entities/store.entity.dart'; +import 'package:immich_mobile/infrastructure/repositories/network.repository.dart'; import 'package:immich_mobile/services/api.service.dart'; import 'package:logging/logging.dart'; import 'package:openapi/api.dart'; class SyncApiRepository { + static final _client = const NetworkRepository().getHttpClient('api'); final Logger _logger = Logger('SyncApiRepository'); final ApiService _api; SyncApiRepository(this._api); @@ -23,10 +25,8 @@ class SyncApiRepository { Future Function(List, Function() abort, Function() reset) onData, { Function()? onReset, int batchSize = kSyncEventBatchSize, - http.Client? httpClient, }) async { final stopwatch = Stopwatch()..start(); - final client = httpClient ?? http.Client(); final endpoint = "${_api.apiClient.basePath}/sync/stream"; final headers = {'Content-Type': 'application/json', 'Accept': 'application/jsonlines+json'}; @@ -78,7 +78,7 @@ class SyncApiRepository { final reset = onReset ?? () {}; try { - final response = await client.send(request); + final response = await _client.send(request); if (response.statusCode != 200) { final errorBody = await response.stream.bytesToString(); @@ -113,7 +113,7 @@ class SyncApiRepository { _logger.severe("Error processing stream", error, stack); return Future.error(error, stack); } finally { - client.close(); + _client.close(); } stopwatch.stop(); _logger.info("Remote Sync completed in ${stopwatch.elapsed.inMilliseconds}ms"); diff --git a/mobile/lib/services/api.service.dart b/mobile/lib/services/api.service.dart index 4033ffb184..8ffb2c06f0 100644 --- a/mobile/lib/services/api.service.dart +++ b/mobile/lib/services/api.service.dart @@ -3,9 +3,9 @@ import 'dart:convert'; import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; -import 'package:http/http.dart'; import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/entities/store.entity.dart'; +import 'package:immich_mobile/infrastructure/repositories/network.repository.dart'; import 'package:immich_mobile/utils/url_helper.dart'; import 'package:logging/logging.dart'; import 'package:openapi/api.dart'; @@ -13,6 +13,7 @@ import 'package:immich_mobile/utils/user_agent.dart'; import 'package:immich_mobile/utils/debug_print.dart'; class ApiService implements Authentication { + static final _client = const NetworkRepository().getHttpClient('api'); late ApiClient _apiClient; late UsersApi usersApi; @@ -50,6 +51,7 @@ class ApiService implements Authentication { setEndpoint(String endpoint) { _apiClient = ApiClient(basePath: endpoint, authentication: this); + _apiClient.client = _client; _setUserAgentHeader(); if (_accessToken != null) { setAccessToken(_accessToken!); @@ -134,13 +136,11 @@ class ApiService implements Authentication { } Future _getWellKnownEndpoint(String baseUrl) async { - final Client client = Client(); - try { var headers = {"Accept": "application/json"}; headers.addAll(getRequestHeaders()); - final res = await client + final res = await _client .get(Uri.parse("$baseUrl/.well-known/immich"), headers: headers) .timeout(const Duration(seconds: 5));