feat: Show changelogs from the latest to the last used patches version (#2219)

This commit is contained in:
aAbed
2024-10-21 16:02:23 +05:45
committed by GitHub
parent bd96701103
commit daba737ecb
7 changed files with 54 additions and 23 deletions

View File

@ -49,18 +49,24 @@ class GithubAPI {
}
}
Future<String?> getManagerChangelogs() async {
Future<String?> getChangelogs(bool isPatches) async {
final String repoName = isPatches
? _managerAPI.getPatchesRepo()
: _managerAPI.defaultManagerRepo;
try {
final response = await _dioGetSynchronously(
'/repos/${_managerAPI.defaultManagerRepo}/releases?per_page=50',
'/repos/$repoName/releases?per_page=50',
);
final buffer = StringBuffer();
final String currentVersion =
await _managerAPI.getCurrentManagerVersion();
final String version = isPatches
? _managerAPI.getLastUsedPatchesVersion()
: await _managerAPI.getCurrentManagerVersion();
int releases = 0;
for (final release in response.data) {
if (release['tag_name'] == currentVersion) {
if (release['tag_name'] == version) {
if (buffer.isEmpty) {
buffer.writeln(release['body']);
releases++;
}
break;
}
@ -68,6 +74,10 @@ class GithubAPI {
continue;
}
buffer.writeln(release['body']);
releases++;
if (isPatches && releases == 10) {
break;
}
}
return buffer.toString();
} on Exception catch (e) {

View File

@ -367,7 +367,8 @@ class ManagerAPI {
) async {
deleteLastPatchedApp();
final Directory appCache = await getApplicationSupportDirectory();
app.patchedFilePath = outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
app.patchedFilePath =
outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
app.fileSize = outFile.lengthSync();
await _prefs.setString(
'lastPatchedApp',
@ -511,8 +512,7 @@ class ManagerAPI {
defaultPatchesRepo,
);
} else {
final release =
await _githubAPI.getLatestRelease(getPatchesRepo());
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) {
final DateTime timestamp =
DateTime.parse(release['created_at'] as String);
@ -560,8 +560,7 @@ class ManagerAPI {
defaultPatchesRepo,
);
} else {
final release =
await _githubAPI.getLatestRelease(getPatchesRepo());
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
if (release != null) {
return release['tag_name'];
} else {
@ -570,6 +569,30 @@ class ManagerAPI {
}
}
String getLastUsedPatchesVersion() {
final String lastPatchesVersions =
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
final Map<String, dynamic> lastPatchesVersionMap =
jsonDecode(lastPatchesVersions);
final String repo = getPatchesRepo();
return lastPatchesVersionMap[repo] ?? '0.0.0';
}
void setLastUsedPatchesVersion({String? version}) {
final String lastPatchesVersions =
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
final Map<String, dynamic> lastPatchesVersionMap =
jsonDecode(lastPatchesVersions);
final repo = getPatchesRepo();
final String lastPatchesVersion =
version ?? lastPatchesVersionMap[repo] ?? '0.0.0';
lastPatchesVersionMap[repo] = lastPatchesVersion;
_prefs.setString(
'lastUsedPatchesVersion',
jsonEncode(lastPatchesVersionMap),
);
}
Future<String> getCurrentManagerVersion() async {
final PackageInfo packageInfo = await PackageInfo.fromPlatform();
String version = packageInfo.version;