mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-23 01:29:40 +02:00
Compare commits
5 Commits
v0.6.9-bet
...
v0.6.11-be
Author | SHA1 | Date | |
---|---|---|---|
|
e158c23cca | ||
|
208f125e12 | ||
|
b7ccf3fa49 | ||
|
c746e89052 | ||
|
ee758e8470 |
@@ -15,7 +15,7 @@ import 'package:dynamic_color/dynamic_color.dart';
|
|||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:android_alarm_manager_plus/android_alarm_manager_plus.dart';
|
import 'package:android_alarm_manager_plus/android_alarm_manager_plus.dart';
|
||||||
|
|
||||||
const String currentVersion = '0.6.9';
|
const String currentVersion = '0.6.11';
|
||||||
const String currentReleaseTag =
|
const String currentReleaseTag =
|
||||||
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
||||||
|
|
||||||
|
@@ -57,6 +57,8 @@ class _AddAppPageState extends State<AddAppPage> {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e is String
|
return e is String
|
||||||
? e
|
? e
|
||||||
|
: e is ObtainiumError
|
||||||
|
? e.toString()
|
||||||
: 'Error';
|
: 'Error';
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@@ -62,7 +62,6 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
body: CustomScrollView(slivers: <Widget>[
|
body: CustomScrollView(slivers: <Widget>[
|
||||||
const CustomAppBar(title: 'Import/Export'),
|
const CustomAppBar(title: 'Import/Export'),
|
||||||
SliverFillRemaining(
|
SliverFillRemaining(
|
||||||
hasScrollBody: false,
|
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding:
|
padding:
|
||||||
const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
||||||
@@ -316,7 +315,19 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
|||||||
},
|
},
|
||||||
child: Text('Import ${source.name}'))
|
child: Text('Import ${source.name}'))
|
||||||
]))
|
]))
|
||||||
.toList()
|
.toList(),
|
||||||
|
const Spacer(),
|
||||||
|
const Divider(
|
||||||
|
height: 32,
|
||||||
|
),
|
||||||
|
const Text(
|
||||||
|
'Imported Apps may incorrectly show as "Not Installed".\nTo fix this, re-install them through Obtainium.\nThis should not affect App data.\n\nOnly affects URL and third-party import methods.',
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontStyle: FontStyle.italic, fontSize: 12)),
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
)
|
||||||
],
|
],
|
||||||
)))
|
)))
|
||||||
]));
|
]));
|
||||||
|
@@ -139,12 +139,17 @@ class AppsProvider with ChangeNotifier {
|
|||||||
// The former case should be handled (give the App its real ID), the latter is a security issue
|
// The former case should be handled (give the App its real ID), the latter is a security issue
|
||||||
var newInfo = await PackageArchiveInfo.fromPath(downloadedFile.path);
|
var newInfo = await PackageArchiveInfo.fromPath(downloadedFile.path);
|
||||||
if (app.id != newInfo.packageName) {
|
if (app.id != newInfo.packageName) {
|
||||||
if (apps[app.id] != null) {
|
if (apps[app.id] != null && !SourceProvider().isTempId(app.id)) {
|
||||||
throw IDChangedError();
|
throw IDChangedError();
|
||||||
}
|
}
|
||||||
|
var originalAppId = app.id;
|
||||||
app.id = newInfo.packageName;
|
app.id = newInfo.packageName;
|
||||||
downloadedFile = downloadedFile.renameSync(
|
downloadedFile = downloadedFile.renameSync(
|
||||||
'${downloadedFile.parent.path}/${app.id}-${app.latestVersion}-${app.preferredApkIndex}.apk');
|
'${downloadedFile.parent.path}/${app.id}-${app.latestVersion}-${app.preferredApkIndex}.apk');
|
||||||
|
if (apps[originalAppId] != null) {
|
||||||
|
await removeApps([originalAppId]);
|
||||||
|
await saveApps([app]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return DownloadedApk(app.id, downloadedFile);
|
return DownloadedApk(app.id, downloadedFile);
|
||||||
}
|
}
|
||||||
|
@@ -27,7 +27,9 @@ class UpdateNotification extends ObtainiumNotification {
|
|||||||
'Updates Available',
|
'Updates Available',
|
||||||
'Notifies the user that updates are available for one or more Apps tracked by Obtainium',
|
'Notifies the user that updates are available for one or more Apps tracked by Obtainium',
|
||||||
Importance.max) {
|
Importance.max) {
|
||||||
message = updates.length == 1
|
message = updates.isEmpty
|
||||||
|
? "No new updates."
|
||||||
|
: updates.length == 1
|
||||||
? '${updates[0].name} has an update.'
|
? '${updates[0].name} has an update.'
|
||||||
: '${(updates.length == 2 ? '${updates[0].name} and ${updates[1].name}' : '${updates[0].name} and ${updates.length - 1} more apps')} have updates.';
|
: '${(updates.length == 2 ? '${updates[0].name} and ${updates[1].name}' : '${updates[0].name} and ${updates.length - 1} more apps')} have updates.';
|
||||||
}
|
}
|
||||||
|
@@ -191,6 +191,19 @@ class SourceProvider {
|
|||||||
String generateTempID(AppNames names, AppSource source) =>
|
String generateTempID(AppNames names, AppSource source) =>
|
||||||
'${names.author.toLowerCase()}_${names.name.toLowerCase()}_${source.host}';
|
'${names.author.toLowerCase()}_${names.name.toLowerCase()}_${source.host}';
|
||||||
|
|
||||||
|
bool isTempId(String id) {
|
||||||
|
List<String> parts = id.split('_');
|
||||||
|
if (parts.length < 3) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < parts.length - 1; i++) {
|
||||||
|
if (RegExp('.*[A-Z].*').hasMatch(parts[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getSourceHosts().contains(parts.last);
|
||||||
|
}
|
||||||
|
|
||||||
Future<App> getApp(AppSource source, String url, List<String> additionalData,
|
Future<App> getApp(AppSource source, String url, List<String> additionalData,
|
||||||
{String name = '', String? id}) async {
|
{String name = '', String? id}) async {
|
||||||
String standardUrl = source.standardizeURL(preStandardizeUrl(url));
|
String standardUrl = source.standardizeURL(preStandardizeUrl(url));
|
||||||
|
@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 0.6.9+53 # When changing this, update the tag in main() accordingly
|
version: 0.6.11+55 # When changing this, update the tag in main() accordingly
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.18.2 <3.0.0'
|
sdk: '>=2.18.2 <3.0.0'
|
||||||
|
Reference in New Issue
Block a user