diff --git a/lib/backend/api/github_api.dart b/lib/backend/api/github_api.dart index 5823e191..a9174976 100644 --- a/lib/backend/api/github_api.dart +++ b/lib/backend/api/github_api.dart @@ -6,12 +6,42 @@ class GithubAPI { Future latestRelease(String org, repoName) async { var latestRelease = await github.repositories .getLatestRelease(RepositorySlug(org, repoName)); - var dlurl = latestRelease.assets?.first.browserDownloadUrl; + var dlurl = latestRelease.assets + ?.firstWhere((element) => + element.browserDownloadUrl!.contains(".jar") || + element.browserDownloadUrl!.contains(".apk")) + .browserDownloadUrl; print(dlurl); return latestRelease; } + + Future latestCommitTime(String org, repoName) async { + var latestCommit = + await github.repositories.getRepository(RepositorySlug(org, repoName)); + var commitTime = latestCommit.pushedAt?.difference( + DateTime.now().toLocal(), + ); + + final hours = commitTime!.inHours.abs(); + + if (hours > 24) { + var days = (commitTime.inDays).abs().toString(); + print("$days days"); + return "$days days"; + } else if (hours > 1 && hours < 24) { + var hours = (commitTime.inHours).abs().toString(); + print("$hours hours"); + return "$hours hours"; + } else { + var minutes = (commitTime.inMinutes).abs().toString(); + print("$minutes minutes"); + return "$minutes mins"; + } + } } void main(List args) { - GithubAPI().latestRelease('revanced', 'revanced-patches'); + GithubAPI githubAPI = GithubAPI(); + githubAPI.latestRelease('revanced', 'revanced-patches'); + githubAPI.latestCommitTime("revanced", "revanced-patches"); } diff --git a/lib/ui/widgets/latest_commit.dart b/lib/ui/widgets/latest_commit.dart index 70ae0a56..2df96e9f 100644 --- a/lib/ui/widgets/latest_commit.dart +++ b/lib/ui/widgets/latest_commit.dart @@ -1,11 +1,36 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; +import 'package:revanced_manager_flutter/backend/api/github_api.dart'; import 'package:revanced_manager_flutter/constants.dart'; import 'package:revanced_manager_flutter/ui/widgets/patch_text_button.dart'; -class LatestCommitWidget extends StatelessWidget { +class LatestCommitWidget extends StatefulWidget { const LatestCommitWidget({Key? key}) : super(key: key); + @override + State createState() => _LatestCommitWidgetState(); +} + +class _LatestCommitWidgetState extends State { + GithubAPI githubAPI = GithubAPI(); + String lastPatcherCommit = "Loading..."; + String lastManagerCommit = "Loading..."; + + void latestCommit() async { + lastPatcherCommit = + await githubAPI.latestCommitTime("revanced", "revanced-patcher"); + lastManagerCommit = + await githubAPI.latestCommitTime("revanced", "revanced-manager"); + } + + @override + void initState() { + setState(() { + latestCommit(); + }); + super.initState(); + } + @override Widget build(BuildContext context) { return Container( @@ -29,7 +54,7 @@ class LatestCommitWidget extends StatelessWidget { ), ), Text( - "20 hours ago", + "$lastPatcherCommit ago", style: robotoTextStyle, ) ], @@ -43,7 +68,7 @@ class LatestCommitWidget extends StatelessWidget { ), ), Text( - "3 days ago", + "$lastManagerCommit ago", style: robotoTextStyle, ) ],