diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index fc1a0a2..833f1c7 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -230,7 +230,10 @@ Future checkETagHeader(String url, StreamedResponse response = await client.send(req); var resHeaders = response.headers; client.close(); - return resHeaders[HttpHeaders.etagHeader]; + return resHeaders[HttpHeaders.etagHeader] + ?.replaceAll('"', '') + .hashCode + .toString(); } Future downloadFile(String url, String fileName, bool fileNameHasExt, diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 543c8e7..f9cec27 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -4,6 +4,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:http/http.dart' as http; +import 'dart:typed_data'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -599,16 +600,19 @@ abstract class AppSource { } } + final bytes = (await response.fold( + BytesBuilder(), (b, d) => b..add(d))) + .toBytes(); + final headers = {}; response.headers.forEach((name, values) { headers[name] = values.join(', '); }); - final body = await response.transform(utf8.decoder).join(); httpClient.close(); - return http.Response( - body, + return http.Response.bytes( + bytes, response.statusCode, headers: headers, request: http.Request(method, Uri.parse(url)),