diff --git a/mobile/lib/infrastructure/repositories/sync_api.repository.dart b/mobile/lib/infrastructure/repositories/sync_api.repository.dart index 2175e77e82..d744da9317 100644 --- a/mobile/lib/infrastructure/repositories/sync_api.repository.dart +++ b/mobile/lib/infrastructure/repositories/sync_api.repository.dart @@ -4,11 +4,13 @@ import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:immich_mobile/constants/constants.dart'; import 'package:immich_mobile/domain/models/sync_event.model.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); @@ -20,10 +22,8 @@ class SyncApiRepository { Future streamChanges( Function(List, Function() abort) onData, { 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'}; @@ -70,7 +70,7 @@ class SyncApiRepository { } try { - final response = await client.send(request); + final response = await _client.send(request); if (response.statusCode != 200) { final errorBody = await response.stream.bytesToString(); @@ -102,7 +102,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 fca9080c86..0280026044 100644 --- a/mobile/lib/services/api.service.dart +++ b/mobile/lib/services/api.service.dart @@ -4,15 +4,16 @@ import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/material.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'; import 'package:immich_mobile/utils/user_agent.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));