mirror of
https://github.com/revanced/revanced-manager
synced 2024-05-14 13:56:57 +02:00
feat: fix list contributors and add patched apps changelog (wip)
This commit is contained in:
parent
bfbcb510c4
commit
45f4a5b207
@ -56,13 +56,14 @@ class GithubAPI {
|
||||
}
|
||||
|
||||
Future<List<Contributor>> getContributors(String org, repoName) async {
|
||||
try {
|
||||
var contributors = _github.repositories.listContributors(
|
||||
RepositorySlug(org, repoName),
|
||||
);
|
||||
return contributors.toList();
|
||||
} on Exception {
|
||||
return List.empty();
|
||||
}
|
||||
return await (_github.repositories.listContributors(
|
||||
RepositorySlug(org, repoName),
|
||||
)).toList();
|
||||
}
|
||||
|
||||
Future<List<RepositoryCommit>> getCommits(String org, repoName) async {
|
||||
return await (_github.repositories.listCommits(
|
||||
RepositorySlug(org, repoName),
|
||||
)).toList();
|
||||
}
|
||||
}
|
||||
|
@ -94,6 +94,7 @@ class ManagerAPI {
|
||||
Future<void> reAssessSavedApps() async {
|
||||
List<PatchedApplication> patchedApps = getPatchedApps();
|
||||
bool isRoot = isRooted() ?? false;
|
||||
List<PatchedApplication> toRemove = [];
|
||||
for (PatchedApplication app in patchedApps) {
|
||||
bool existsRoot = false;
|
||||
if (isRoot) {
|
||||
@ -101,23 +102,23 @@ class ManagerAPI {
|
||||
}
|
||||
bool existsNonRoot = await DeviceApps.isAppInstalled(app.packageName);
|
||||
if (!existsRoot && !existsNonRoot) {
|
||||
patchedApps.remove(app);
|
||||
toRemove.add(app);
|
||||
} else if (existsNonRoot) {
|
||||
ApplicationWithIcon? application =
|
||||
await DeviceApps.getApp(app.packageName, true)
|
||||
as ApplicationWithIcon?;
|
||||
if (application != null) {
|
||||
int savedVersionInt =
|
||||
int.parse(app.version.replaceFirst('v', '').replaceAll('.', ''));
|
||||
int currentVersionInt = int.parse(application.versionName!
|
||||
.replaceFirst('v', '')
|
||||
.replaceAll('.', ''));
|
||||
int.parse(app.version.replaceAll(RegExp('[^0-9]'), ''));
|
||||
int currentVersionInt = int.parse(
|
||||
application.versionName!.replaceAll(RegExp('[^0-9]'), ''));
|
||||
if (savedVersionInt < currentVersionInt) {
|
||||
patchedApps.remove(app);
|
||||
toRemove.add(app);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
patchedApps.removeWhere((a) => toRemove.contains(a));
|
||||
setPatchedApps(patchedApps);
|
||||
List<String> apps = await _rootAPI.getInstalledApps();
|
||||
for (String packageName in apps) {
|
||||
@ -136,8 +137,19 @@ class ManagerAPI {
|
||||
return false;
|
||||
}
|
||||
|
||||
Future<String> getAppChangelog(String packageName) async {
|
||||
// TODO: get changelog based on last commits on the folder of this app?
|
||||
return 'To be implemented';
|
||||
Future<List<String>> getAppChangelog(
|
||||
String packageName,
|
||||
DateTime lastUpdated,
|
||||
) async {
|
||||
return (await _githubAPI.getCommits(ghOrg, patchesRepo))
|
||||
.where((c) =>
|
||||
c.commit != null &&
|
||||
c.commit!.message != null &&
|
||||
!c.commit!.message!.startsWith('chore') &&
|
||||
c.commit!.author != null &&
|
||||
c.commit!.author!.date != null)
|
||||
.map((c) => ' - ${c.commit!.message!}')
|
||||
.toList()
|
||||
.sublist(0, 3);
|
||||
}
|
||||
}
|
||||
|
@ -27,12 +27,15 @@ class RootAPI {
|
||||
);
|
||||
if (res != null) {
|
||||
List<String> apps = res.split('\n');
|
||||
List<String> toRemove = [];
|
||||
for (String packageName in apps) {
|
||||
bool isInstalled = await isAppInstalled(packageName);
|
||||
if (!isInstalled) {
|
||||
apps.remove(packageName);
|
||||
toRemove.add(packageName);
|
||||
}
|
||||
}
|
||||
apps.removeWhere((a) => toRemove.contains(a));
|
||||
return apps;
|
||||
}
|
||||
} on Exception {
|
||||
return List.empty();
|
||||
|
@ -32,5 +32,6 @@ class ContributorsViewModel extends BaseViewModel {
|
||||
ghOrg,
|
||||
managerRepo,
|
||||
);
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
@ -65,9 +65,9 @@ class HomeViewModel extends BaseViewModel {
|
||||
if (latestVersion != null) {
|
||||
try {
|
||||
int latestVersionInt =
|
||||
int.parse(latestVersion.replaceFirst('v', '').replaceAll('.', ''));
|
||||
int.parse(latestVersion.replaceAll(RegExp('[^0-9]'), ''));
|
||||
int currentVersionInt =
|
||||
int.parse(currentVersion.replaceFirst('v', '').replaceAll('.', ''));
|
||||
int.parse(currentVersion.replaceAll(RegExp('[^0-9]'), ''));
|
||||
return latestVersionInt > currentVersionInt;
|
||||
} on Exception {
|
||||
return false;
|
||||
|
@ -20,32 +20,33 @@ class AvailableUpdatesCard extends StatelessWidget {
|
||||
children: [
|
||||
FutureBuilder<List<PatchedApplication>>(
|
||||
future: locator<HomeViewModel>().getPatchedApps(true),
|
||||
builder: (context, snapshot) =>
|
||||
snapshot.hasData && snapshot.data!.isNotEmpty
|
||||
? ListView.builder(
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
padding: EdgeInsets.zero,
|
||||
itemCount: snapshot.data!.length,
|
||||
itemBuilder: (context, index) => FutureBuilder<String>(
|
||||
future: _managerAPI.getAppChangelog(
|
||||
snapshot.data![index].packageName,
|
||||
),
|
||||
initialData: '',
|
||||
builder: (context, snapshot2) => ApplicationItem(
|
||||
icon: snapshot.data![index].icon,
|
||||
name: snapshot.data![index].name,
|
||||
patchDate: snapshot.data![index].patchDate,
|
||||
changelog: snapshot2.data!,
|
||||
isUpdatableApp: true,
|
||||
onPressed: () =>
|
||||
locator<HomeViewModel>().navigateToPatcher(
|
||||
snapshot.data![index],
|
||||
),
|
||||
),
|
||||
builder: (context, snapshot) => snapshot.hasData &&
|
||||
snapshot.data!.isNotEmpty
|
||||
? ListView.builder(
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
padding: EdgeInsets.zero,
|
||||
itemCount: snapshot.data!.length,
|
||||
itemBuilder: (context, index) => FutureBuilder<List<String>>(
|
||||
future: _managerAPI.getAppChangelog(
|
||||
snapshot.data![index].packageName,
|
||||
snapshot.data![index].patchDate,
|
||||
),
|
||||
initialData: List.empty(),
|
||||
builder: (context, snapshot2) => ApplicationItem(
|
||||
icon: snapshot.data![index].icon,
|
||||
name: snapshot.data![index].name,
|
||||
patchDate: snapshot.data![index].patchDate,
|
||||
changelog: '${snapshot2.data!.join('\n')}\n...',
|
||||
isUpdatableApp: true,
|
||||
onPressed: () =>
|
||||
locator<HomeViewModel>().navigateToPatcher(
|
||||
snapshot.data![index],
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
),
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
@ -21,31 +21,32 @@ class InstalledAppsCard extends StatelessWidget {
|
||||
children: [
|
||||
FutureBuilder<List<PatchedApplication>>(
|
||||
future: locator<HomeViewModel>().getPatchedApps(false),
|
||||
builder: (context, snapshot) =>
|
||||
snapshot.hasData && snapshot.data!.isNotEmpty
|
||||
? ListView.builder(
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
padding: EdgeInsets.zero,
|
||||
itemCount: snapshot.data!.length,
|
||||
itemBuilder: (context, index) => FutureBuilder<String>(
|
||||
future: _managerAPI.getAppChangelog(
|
||||
snapshot.data![index].packageName,
|
||||
),
|
||||
initialData: '',
|
||||
builder: (context, snapshot2) => ApplicationItem(
|
||||
icon: snapshot.data![index].icon,
|
||||
name: snapshot.data![index].name,
|
||||
patchDate: snapshot.data![index].patchDate,
|
||||
changelog: snapshot2.data!,
|
||||
isUpdatableApp: false,
|
||||
onPressed: () => DeviceApps.openApp(
|
||||
snapshot.data![index].packageName,
|
||||
),
|
||||
),
|
||||
builder: (context, snapshot) => snapshot.hasData &&
|
||||
snapshot.data!.isNotEmpty
|
||||
? ListView.builder(
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
padding: EdgeInsets.zero,
|
||||
itemCount: snapshot.data!.length,
|
||||
itemBuilder: (context, index) => FutureBuilder<List<String>>(
|
||||
future: _managerAPI.getAppChangelog(
|
||||
snapshot.data![index].packageName,
|
||||
snapshot.data![index].patchDate,
|
||||
),
|
||||
initialData: const ['Loading'],
|
||||
builder: (context, snapshot2) => ApplicationItem(
|
||||
icon: snapshot.data![index].icon,
|
||||
name: snapshot.data![index].name,
|
||||
patchDate: snapshot.data![index].patchDate,
|
||||
changelog: '${snapshot2.data!.join('\n')}\n(...)',
|
||||
isUpdatableApp: false,
|
||||
onPressed: () => DeviceApps.openApp(
|
||||
snapshot.data![index].packageName,
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
),
|
||||
),
|
||||
)
|
||||
: Container(),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user