diff --git a/lib/services/manager_api.dart b/lib/services/manager_api.dart index de11e598..a2eed1b4 100644 --- a/lib/services/manager_api.dart +++ b/lib/services/manager_api.dart @@ -36,10 +36,15 @@ class ManagerAPI { String defaultCliRepo = 'revanced/revanced-cli'; String defaultManagerRepo = 'revanced/revanced-manager'; String? patchesVersion = ''; + String? integrationsVersion = ''; bool isDefaultPatchesRepo() { return getPatchesRepo() == 'revanced/revanced-patches'; } + bool isDefaultIntegrationsRepo() { + return getIntegrationsRepo() == 'revanced/revanced-integrations'; + } + Future initialize() async { _prefs = await SharedPreferences.getInstance(); isRooted = await _rootAPI.isRooted(); @@ -267,14 +272,12 @@ class ManagerAPI { Future downloadIntegrations() async { try { final String repoName = getIntegrationsRepo(); - if (repoName == defaultIntegrationsRepo) { - return await _revancedAPI.getLatestReleaseFile( - '.apk', - defaultIntegrationsRepo, - ); - } else { - return await _githubAPI.getLatestReleaseFile('.apk', repoName); - } + final String currentVersion = await getCurrentIntegrationsVersion(); + return await _githubAPI.getPatchesReleaseFile( + '.apk', + repoName, + currentVersion, + ); } on Exception catch (e) { if (kDebugMode) { print(e); @@ -323,6 +326,22 @@ class ManagerAPI { ); } + Future getLatestIntegrationsVersion() async { + if (isDefaultIntegrationsRepo()) { + return await _revancedAPI.getLatestReleaseVersion( + '.apk', + defaultIntegrationsRepo, + ); + } else { + final release = await _githubAPI.getLatestRelease(getIntegrationsRepo()); + if (release != null) { + return release['tag_name']; + } else { + return null; + } + } + } + Future getLatestPatchesVersion() async { if (isDefaultPatchesRepo()) { return await _revancedAPI.getLatestReleaseVersion( @@ -330,7 +349,8 @@ class ManagerAPI { defaultPatchesRepo, ); } else { - final release = await _githubAPI.getLatestPatchesRelease(getPatchesRepo()); + final release = + await _githubAPI.getLatestPatchesRelease(getPatchesRepo()); if (release != null) { return release['tag_name']; } else { @@ -357,6 +377,19 @@ class ManagerAPI { await _prefs.setString('patchesVersion', version); } + Future getCurrentIntegrationsVersion() async { + integrationsVersion = _prefs.getString('integrationsVersion') ?? '0.0.0'; + if (integrationsVersion == '0.0.0' || isPatchesAutoUpdate()) { + integrationsVersion = await getLatestIntegrationsVersion() ?? '0.0.0'; + await setCurrentIntegrationsVersion(integrationsVersion!); + } + return integrationsVersion!; + } + + Future setCurrentIntegrationsVersion(String version) async { + await _prefs.setString('integrationsVersion', version); + } + Future> getAppsToRemove( List patchedApps, ) async { diff --git a/lib/ui/views/home/home_viewmodel.dart b/lib/ui/views/home/home_viewmodel.dart index 161993ee..e2ce5125 100644 --- a/lib/ui/views/home/home_viewmodel.dart +++ b/lib/ui/views/home/home_viewmodel.dart @@ -253,9 +253,12 @@ class HomeViewModel extends BaseViewModel { _toast.showBottom('homeView.downloadingMessage'); final String patchesVersion = await _managerAPI.getLatestPatchesVersion() ?? '0.0.0'; - if (patchesVersion != '0.0.0') { + final String integrationsVersion = + await _managerAPI.getLatestIntegrationsVersion() ?? '0.0.0'; + if (patchesVersion != '0.0.0' && integrationsVersion != '0.0.0') { _toast.showBottom('homeView.downloadedMessage'); await _managerAPI.setCurrentPatchesVersion(patchesVersion); + await _managerAPI.setCurrentIntegrationsVersion(integrationsVersion); forceRefresh(context); } else { _toast.showBottom('homeView.errorDownloadMessage');