diff --git a/lib/pages/app.dart b/lib/pages/app.dart index bd9e510..815b6dc 100644 --- a/lib/pages/app.dart +++ b/lib/pages/app.dart @@ -153,7 +153,7 @@ class _AppPageState extends State { height: 25, ), Text( - app?.app.name ?? tr('app'), + app?.name ?? tr('app'), textAlign: TextAlign.center, style: Theme.of(context).textTheme.displayLarge, ), @@ -386,7 +386,7 @@ class _AppPageState extends State { scrollable: true, content: getInfoColumn(), title: Text( - '${app.app.name} ${tr('byX', args: [ + '${app.name} ${tr('byX', args: [ app.app.author ])}'), actions: [ diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index 201df76..be6cd50 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -94,8 +94,7 @@ class AppsPageState extends State { .toList(); for (var t in nameTokens) { - var name = app.installedInfo?.name ?? app.app.name; - if (!name.toLowerCase().contains(t.toLowerCase())) { + if (!app.name.toLowerCase().contains(t.toLowerCase())) { return false; } } @@ -120,13 +119,11 @@ class AppsPageState extends State { }).toList(); listedApps.sort((a, b) { - var nameA = a.installedInfo?.name ?? a.app.name; - var nameB = b.installedInfo?.name ?? b.app.name; int result = 0; if (settingsProvider.sortColumn == SortColumnSettings.authorName) { - result = (a.app.author + nameA).compareTo(b.app.author + nameB); + result = (a.app.author + a.name).compareTo(b.app.author + b.name); } else if (settingsProvider.sortColumn == SortColumnSettings.nameAuthor) { - result = (nameA + a.app.author).compareTo(nameB + b.app.author); + result = (a.name + a.app.author).compareTo(b.name + b.app.author); } else if (settingsProvider.sortColumn == SortColumnSettings.releaseDate) { result = (a.app.releaseDate)?.compareTo( @@ -481,8 +478,7 @@ class AppsPageState extends State { leading: getAppIcon(index), title: Text( maxLines: 1, - listedApps[index].installedInfo?.name ?? - listedApps[index].app.name, + listedApps[index].name, style: TextStyle( overflow: TextOverflow.ellipsis, fontWeight: listedApps[index].app.pinned diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 13fa426..22e08cc 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -36,6 +36,8 @@ class AppInMemory { AppInMemory(this.app, this.downloadProgress, this.installedInfo); AppInMemory deepCopy() => AppInMemory(app.deepCopy(), downloadProgress, installedInfo); + + String get name => app.overrideName ?? installedInfo?.name ?? app.finalName; } class DownloadedApk { @@ -163,7 +165,7 @@ class AppsProvider with ChangeNotifier { Future downloadApp(App app, BuildContext? context) async { NotificationsProvider? notificationsProvider = context?.read(); - var notifId = DownloadNotification(app.name, 0).id; + var notifId = DownloadNotification(app.finalName, 0).id; if (apps[app.id] != null) { apps[app.id]!.downloadProgress = 0; notifyListeners(); @@ -173,7 +175,7 @@ class AppsProvider with ChangeNotifier { .getSource(app.url) .apkUrlPrefetchModifier(app.apkUrls[app.preferredApkIndex].value); var fileName = '${app.id}-${downloadUrl.hashCode}.apk'; - var notif = DownloadNotification(app.name, 100); + var notif = DownloadNotification(app.finalName, 100); notificationsProvider?.cancel(notif.id); int? prevProg; File downloadedFile = @@ -183,7 +185,7 @@ class AppsProvider with ChangeNotifier { apps[app.id]!.downloadProgress = progress; notifyListeners(); } - notif = DownloadNotification(app.name, prog ?? 100); + notif = DownloadNotification(app.finalName, prog ?? 100); if (prog != null && prevProg != prog) { notificationsProvider?.notify(notif); } @@ -641,7 +643,7 @@ class AppsProvider with ChangeNotifier { sp.getSource(newApps[i].url); apps[newApps[i].id] = AppInMemory(newApps[i], null, info); } catch (e) { - errors.add([newApps[i].id, newApps[i].name, e.toString()]); + errors.add([newApps[i].id, newApps[i].finalName, e.toString()]); } } if (errors.isNotEmpty) { @@ -675,9 +677,6 @@ class AppsProvider with ChangeNotifier { var app = a.deepCopy(); AppInfo? info = await getInstalledInfo(app.id); app.name = info?.name ?? app.name; - if (app.additionalSettings['appName']?.toString().isNotEmpty == true) { - app.name = app.additionalSettings['appName'].toString().trim(); - } if (attemptToCorrectInstallStatus) { app = getCorrectedInstallStatusAppIfPossible(app, info) ?? app; } @@ -945,7 +944,7 @@ class _APKPickerState extends State { scrollable: true, title: Text(tr('pickAnAPK')), content: Column(children: [ - Text(tr('appHasMoreThanOnePackage', args: [widget.app.name])), + Text(tr('appHasMoreThanOnePackage', args: [widget.app.finalName])), const SizedBox(height: 16), ...widget.app.apkUrls.map( (u) => RadioListTile( diff --git a/lib/providers/notifications_provider.dart b/lib/providers/notifications_provider.dart index b68a669..f48b09a 100644 --- a/lib/providers/notifications_provider.dart +++ b/lib/providers/notifications_provider.dart @@ -34,9 +34,9 @@ class UpdateNotification extends ObtainiumNotification { message = updates.isEmpty ? tr('noNewUpdates') : updates.length == 1 - ? tr('xHasAnUpdate', args: [updates[0].name]) + ? tr('xHasAnUpdate', args: [updates[0].finalName]) : plural('xAndNMoreUpdatesAvailable', updates.length - 1, - args: [updates[0].name, (updates.length - 1).toString()]); + args: [updates[0].finalName, (updates.length - 1).toString()]); } } @@ -46,9 +46,9 @@ class SilentUpdateNotification extends ObtainiumNotification { tr('appsUpdatedNotifDescription'), Importance.defaultImportance) { message = updates.length == 1 ? tr('xWasUpdatedToY', - args: [updates[0].name, updates[0].latestVersion]) + args: [updates[0].finalName, updates[0].latestVersion]) : plural('xAndNMoreUpdatesInstalled', updates.length - 1, - args: [updates[0].name, (updates.length - 1).toString()]); + args: [updates[0].finalName, (updates.length - 1).toString()]); } } diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 5e8f595..24449d4 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -80,6 +80,15 @@ class App { return 'ID: $id URL: $url INSTALLED: $installedVersion LATEST: $latestVersion APK: $apkUrls PREFERREDAPK: $preferredApkIndex ADDITIONALSETTINGS: ${additionalSettings.toString()} LASTCHECK: ${lastUpdateCheck.toString()} PINNED $pinned'; } + String? get overrideName => + additionalSettings['appName']?.toString().trim().isNotEmpty == true + ? additionalSettings['appName'] + : null; + + String get finalName { + return overrideName ?? name; + } + App deepCopy() => App( id, url,