Skip to content

Commit

Permalink
fix: Cache external API calls (#1911)
Browse files Browse the repository at this point in the history
  • Loading branch information
kitadai31 committed May 18, 2024
1 parent cc85b39 commit 2c3e2e6
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions lib/services/github_api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ import 'package:injectable/injectable.dart';
import 'package:revanced_manager/app/app.locator.dart';
import 'package:revanced_manager/services/download_manager.dart';
import 'package:revanced_manager/services/manager_api.dart';
import 'package:synchronized/synchronized.dart';

@lazySingleton
class GithubAPI {
late final Dio _dio;
late final ManagerAPI _managerAPI = locator<ManagerAPI>();
late final DownloadManager _downloadManager = locator<DownloadManager>();
final Map<String, Lock> _lockMap = {};

Future<void> initialize(String repoUrl) async {
_dio = _downloadManager.initDio(repoUrl);
Expand All @@ -21,11 +23,21 @@ class GithubAPI {
await _downloadManager.clearAllCache();
}

Future<Response> _dioGetSynchronously(String path) async {
// Create a new Lock for each path
if (!_lockMap.containsKey(path)) {
_lockMap[path] = Lock();
}
return _lockMap[path]!.synchronized(() async {
return await _dio.get(path);
});
}

Future<Map<String, dynamic>?> getLatestRelease(
String repoName,
) async {
try {
final response = await _dio.get(
final response = await _dioGetSynchronously(
'/repos/$repoName/releases/latest',
);
return response.data;
Expand All @@ -41,7 +53,7 @@ class GithubAPI {
String repoName,
) async {
try {
final response = await _dio.get(
final response = await _dioGetSynchronously(
'/repos/$repoName/releases',
);
final Map<String, dynamic> releases = response.data[0];
Expand Down Expand Up @@ -87,7 +99,7 @@ class GithubAPI {
url,
);
}
final response = await _dio.get(
final response = await _dioGetSynchronously(
'/repos/$repoName/releases/tags/$version',
);
final Map<String, dynamic>? release = response.data;
Expand Down

0 comments on commit 2c3e2e6

Please sign in to comment.