diff --git a/lib/services/github_api.dart b/lib/services/github_api.dart index ffc26df1..6c34748d 100644 --- a/lib/services/github_api.dart +++ b/lib/services/github_api.dart @@ -130,4 +130,18 @@ class GithubAPI { } return patches; } + + Future getLastestReleaseVersion(String repoName) async { + try { + Map? release = await _getLatestRelease(repoName); + if (release != null) { + return release['tag_name']; + } else { + return 'Unknown'; + } + } on Exception catch (e, s) { + await Sentry.captureException(e, stackTrace: s); + return ''; + } + } } diff --git a/lib/ui/views/patches_selector/patches_selector_viewmodel.dart b/lib/ui/views/patches_selector/patches_selector_viewmodel.dart index 7ad093ee..4cc07461 100644 --- a/lib/ui/views/patches_selector/patches_selector_viewmodel.dart +++ b/lib/ui/views/patches_selector/patches_selector_viewmodel.dart @@ -3,6 +3,7 @@ import 'package:flutter_i18n/widgets/I18nText.dart'; import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/models/patch.dart'; import 'package:revanced_manager/models/patched_application.dart'; +import 'package:revanced_manager/services/github_api.dart'; import 'package:revanced_manager/services/manager_api.dart'; import 'package:revanced_manager/services/patcher_api.dart'; import 'package:revanced_manager/services/toast.dart'; @@ -14,10 +15,14 @@ import 'package:flutter/material.dart'; class PatchesSelectorViewModel extends BaseViewModel { final PatcherAPI _patcherAPI = locator(); final ManagerAPI _managerAPI = locator(); + final GithubAPI _githubAPI = locator(); final List patches = []; final List selectedPatches = locator().selectedPatches; String? patchesVersion = ''; + bool isDefaultPatchesRepo() { + return _managerAPI.getPatchesRepo() == 'revanced/revanced-patches'; + } Future initialize() async { getPatchesVersion(); @@ -104,9 +109,15 @@ class PatchesSelectorViewModel extends BaseViewModel { } Future getPatchesVersion() async { - patchesVersion = await _managerAPI.getLatestPatchesVersion(); - // print('Patches version: $patchesVersion'); - return patchesVersion ?? '0.0.0'; + if (isDefaultPatchesRepo()) { + patchesVersion = await _managerAPI.getLatestPatchesVersion(); + // print('Patches version: $patchesVersion'); + return patchesVersion ?? '0.0.0'; + } else { + // fetch from github + patchesVersion = await _githubAPI + .getLastestReleaseVersion(_managerAPI.getPatchesRepo()); + } } List getQueriedPatches(String query) {