mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-02 13:50:15 +02:00
Compare commits
8 Commits
v0.11.4-be
...
v0.11.6-be
Author | SHA1 | Date | |
---|---|---|---|
|
2679d5a1aa | ||
|
e49c09c0ff | ||
|
c9318ef2b5 | ||
|
2e88c8eede | ||
|
8648c1bea7 | ||
|
b22e2bab0c | ||
|
57f7bf44c2 | ||
|
ce526d8d26 |
@@ -217,9 +217,9 @@
|
|||||||
"releaseDateAsVersionExplanation": "Diese Option sollte nur für Apps verwendet werden, bei denen die Versionserkennung nicht korrekt funktioniert, aber ein Veröffentlichungsdatum verfügbar ist.",
|
"releaseDateAsVersionExplanation": "Diese Option sollte nur für Apps verwendet werden, bei denen die Versionserkennung nicht korrekt funktioniert, aber ein Veröffentlichungsdatum verfügbar ist.",
|
||||||
"changes": "Änderungen",
|
"changes": "Änderungen",
|
||||||
"releaseDate": "Veröffentlichungsdatum",
|
"releaseDate": "Veröffentlichungsdatum",
|
||||||
"importFromURLsInFile": "Import from URLs in File (like OPML)",
|
"importFromURLsInFile": "Importieren von URLs aus Datei ( z.B. OPML)",
|
||||||
"versionDetection": "Version Detection",
|
"versionDetection": "Versionserkennung",
|
||||||
"standardVersionDetection": "Standard version detection",
|
"standardVersionDetection": "Standardversionserkennung",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "App entfernen?",
|
"one": "App entfernen?",
|
||||||
"other": "App entfernen?"
|
"other": "App entfernen?"
|
||||||
|
@@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
|
|||||||
// ignore: implementation_imports
|
// ignore: implementation_imports
|
||||||
import 'package:easy_localization/src/localization.dart';
|
import 'package:easy_localization/src/localization.dart';
|
||||||
|
|
||||||
const String currentVersion = '0.11.4';
|
const String currentVersion = '0.11.6';
|
||||||
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
|
||||||
|
|
||||||
@@ -211,6 +211,14 @@ class _ObtainiumState extends State<Obtainium> {
|
|||||||
false)
|
false)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
if (!supportedLocales
|
||||||
|
.map((e) => e.languageCode)
|
||||||
|
.contains(context.locale.languageCode) ||
|
||||||
|
settingsProvider.forcedLocale == null &&
|
||||||
|
context.deviceLocale.languageCode !=
|
||||||
|
context.locale.languageCode) {
|
||||||
|
settingsProvider.resetLocaleSafe(context);
|
||||||
|
}
|
||||||
// Register the background update task according to the user's setting
|
// Register the background update task according to the user's setting
|
||||||
if (existingUpdateInterval != settingsProvider.updateInterval) {
|
if (existingUpdateInterval != settingsProvider.updateInterval) {
|
||||||
if (existingUpdateInterval != -1) {
|
if (existingUpdateInterval != -1) {
|
||||||
|
@@ -233,6 +233,31 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
.getSource(listedApps[index].app.url)
|
.getSource(listedApps[index].app.url)
|
||||||
.changeLogPageFromStandardUrl(listedApps[index].app.url);
|
.changeLogPageFromStandardUrl(listedApps[index].app.url);
|
||||||
var transparent = const Color.fromARGB(0, 0, 0, 0).value;
|
var transparent = const Color.fromARGB(0, 0, 0, 0).value;
|
||||||
|
var hasUpdate = listedApps[index].app.installedVersion != null &&
|
||||||
|
listedApps[index].app.installedVersion !=
|
||||||
|
listedApps[index].app.latestVersion;
|
||||||
|
var updateButton = IconButton(
|
||||||
|
visualDensity: VisualDensity.compact,
|
||||||
|
color: Theme.of(context).colorScheme.primary,
|
||||||
|
tooltip:
|
||||||
|
listedApps[index].app.additionalSettings['trackOnly'] ==
|
||||||
|
true
|
||||||
|
? tr('markUpdated')
|
||||||
|
: tr('update'),
|
||||||
|
onPressed: appsProvider.areDownloadsRunning()
|
||||||
|
? null
|
||||||
|
: () {
|
||||||
|
appsProvider.downloadAndInstallLatestApps([
|
||||||
|
listedApps[index].app.id
|
||||||
|
], globalNavigatorKey.currentContext).catchError((e) {
|
||||||
|
showError(e, context);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
icon: Icon(
|
||||||
|
listedApps[index].app.additionalSettings['trackOnly'] ==
|
||||||
|
true
|
||||||
|
? Icons.check_circle_outline
|
||||||
|
: Icons.install_mobile));
|
||||||
return Container(
|
return Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border.symmetric(
|
border: Border.symmetric(
|
||||||
@@ -264,7 +289,22 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
listedApps[index].installedInfo!.icon!,
|
listedApps[index].installedInfo!.icon!,
|
||||||
gaplessPlayback: true,
|
gaplessPlayback: true,
|
||||||
)
|
)
|
||||||
: null,
|
: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Transform(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
transform: Matrix4.rotationZ(0.31),
|
||||||
|
child: Image(
|
||||||
|
image: const AssetImage(
|
||||||
|
'assets/graphics/icon.png'),
|
||||||
|
color: Colors.white.withOpacity(0.1),
|
||||||
|
colorBlendMode: BlendMode.modulate,
|
||||||
|
gaplessPlayback: true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]),
|
||||||
title: Text(
|
title: Text(
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
listedApps[index].installedInfo?.name ??
|
listedApps[index].installedInfo?.name ??
|
||||||
@@ -278,21 +318,33 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
),
|
),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
tr('byX', args: [listedApps[index].app.author]),
|
tr('byX', args: [listedApps[index].app.author]),
|
||||||
|
maxLines: 1,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
fontWeight: listedApps[index].app.pinned
|
fontWeight: listedApps[index].app.pinned
|
||||||
? FontWeight.bold
|
? FontWeight.bold
|
||||||
: FontWeight.normal)),
|
: FontWeight.normal)),
|
||||||
trailing: SingleChildScrollView(
|
trailing: listedApps[index].downloadProgress != null
|
||||||
reverse: true,
|
? Text(tr('percentProgress', args: [
|
||||||
child: listedApps[index].downloadProgress != null
|
listedApps[index]
|
||||||
? Text(tr('percentProgress', args: [
|
.downloadProgress
|
||||||
listedApps[index]
|
?.toInt()
|
||||||
.downloadProgress
|
.toString() ??
|
||||||
?.toInt()
|
'100'
|
||||||
.toString() ??
|
]))
|
||||||
'100'
|
: (Row(
|
||||||
]))
|
mainAxisSize: MainAxisSize.min,
|
||||||
: (Column(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
hasUpdate
|
||||||
|
? updateButton
|
||||||
|
: const SizedBox.shrink(),
|
||||||
|
hasUpdate
|
||||||
|
? const SizedBox(
|
||||||
|
width: 10,
|
||||||
|
)
|
||||||
|
: const SizedBox.shrink(),
|
||||||
|
Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
children: [
|
children: [
|
||||||
@@ -306,80 +358,38 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
'${listedApps[index].app.installedVersion ?? tr('notInstalled')}${listedApps[index].app.additionalSettings['trackOnly'] == true ? ' ${tr('estimateInBrackets')}' : ''}',
|
'${listedApps[index].app.installedVersion ?? tr('notInstalled')}${listedApps[index].app.additionalSettings['trackOnly'] == true ? ' ${tr('estimateInBrackets')}' : ''}',
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
textAlign: TextAlign.end,
|
textAlign: TextAlign.end,
|
||||||
))
|
)),
|
||||||
]),
|
]),
|
||||||
GestureDetector(
|
Row(
|
||||||
onTap: changesUrl == null
|
mainAxisSize: MainAxisSize.min,
|
||||||
? null
|
children: [
|
||||||
: () {
|
GestureDetector(
|
||||||
launchUrlString(changesUrl,
|
onTap: changesUrl == null
|
||||||
mode: LaunchMode
|
? null
|
||||||
.externalApplication);
|
: () {
|
||||||
},
|
launchUrlString(changesUrl,
|
||||||
child: Text(
|
mode: LaunchMode
|
||||||
listedApps[index].app.releaseDate ==
|
.externalApplication);
|
||||||
null
|
},
|
||||||
? tr('changes')
|
child: Text(
|
||||||
: DateFormat('yyyy-MM-dd').format(
|
listedApps[index].app.releaseDate ==
|
||||||
listedApps[index]
|
null
|
||||||
.app
|
? tr('changes')
|
||||||
.releaseDate!),
|
: DateFormat('yyyy-MM-dd')
|
||||||
style: const TextStyle(
|
.format(listedApps[index]
|
||||||
fontStyle: FontStyle.italic,
|
.app
|
||||||
decoration:
|
.releaseDate!),
|
||||||
TextDecoration.underline),
|
style: const TextStyle(
|
||||||
)),
|
fontStyle: FontStyle.italic,
|
||||||
listedApps[index].app.installedVersion !=
|
decoration:
|
||||||
null &&
|
TextDecoration.underline),
|
||||||
listedApps[index]
|
))
|
||||||
.app
|
],
|
||||||
.installedVersion !=
|
),
|
||||||
listedApps[index]
|
|
||||||
.app
|
|
||||||
.latestVersion
|
|
||||||
? appsProvider.areDownloadsRunning()
|
|
||||||
? Text(tr('pleaseWait'))
|
|
||||||
: Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
mainAxisAlignment:
|
|
||||||
MainAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
appsProvider
|
|
||||||
.downloadAndInstallLatestApps(
|
|
||||||
[
|
|
||||||
listedApps[index]
|
|
||||||
.app
|
|
||||||
.id
|
|
||||||
],
|
|
||||||
globalNavigatorKey
|
|
||||||
.currentContext).catchError(
|
|
||||||
(e) {
|
|
||||||
showError(e, context);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
listedApps[index]
|
|
||||||
.app
|
|
||||||
.additionalSettings[
|
|
||||||
'trackOnly'] ==
|
|
||||||
true
|
|
||||||
? tr('markUpdated')
|
|
||||||
: tr('update'),
|
|
||||||
style: TextStyle(
|
|
||||||
color:
|
|
||||||
Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.primary,
|
|
||||||
fontWeight:
|
|
||||||
FontWeight.bold),
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
: const SizedBox.shrink(),
|
|
||||||
],
|
],
|
||||||
))),
|
)
|
||||||
|
],
|
||||||
|
)),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (selectedApps.isNotEmpty) {
|
if (selectedApps.isNotEmpty) {
|
||||||
toggleAppSelected(listedApps[index].app);
|
toggleAppSelected(listedApps[index].app);
|
||||||
|
@@ -152,7 +152,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
|||||||
if (value != null) {
|
if (value != null) {
|
||||||
context.setLocale(Locale(value));
|
context.setLocale(Locale(value));
|
||||||
} else {
|
} else {
|
||||||
context.resetLocale();
|
settingsProvider.resetLocaleSafe(context);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -178,4 +178,15 @@ class SettingsProvider with ChangeNotifier {
|
|||||||
|
|
||||||
bool setEqual(Set<String> a, Set<String> b) =>
|
bool setEqual(Set<String> a, Set<String> b) =>
|
||||||
a.length == b.length && a.union(b).length == a.length;
|
a.length == b.length && a.union(b).length == a.length;
|
||||||
|
|
||||||
|
void resetLocaleSafe(BuildContext context) {
|
||||||
|
if (context.supportedLocales
|
||||||
|
.map((e) => e.languageCode)
|
||||||
|
.contains(context.deviceLocale.languageCode)) {
|
||||||
|
context.resetLocale();
|
||||||
|
} else {
|
||||||
|
context.setLocale(context.fallbackLocale!);
|
||||||
|
context.deleteSaveLocale();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -670,10 +670,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
sha256: "78324387dc81df14f78df06019175a86a2ee0437624166c382e145d0a7fd9a4f"
|
sha256: "851d5040552cf911f4cabda08d003eca76b27da3ed0002978272e27c8fbf8ecc"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.4+1"
|
version: "2.2.5"
|
||||||
sqflite_common:
|
sqflite_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@@ -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.11.4+123 # When changing this, update the tag in main() accordingly
|
version: 0.11.6+125 # 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'
|
||||||
@@ -97,6 +97,7 @@ flutter:
|
|||||||
|
|
||||||
assets:
|
assets:
|
||||||
- assets/translations/
|
- assets/translations/
|
||||||
|
- assets/graphics/
|
||||||
|
|
||||||
# An image asset can refer to one or more resolution-specific "variants", see
|
# An image asset can refer to one or more resolution-specific "variants", see
|
||||||
# https://flutter.dev/assets-and-images/#resolution-aware
|
# https://flutter.dev/assets-and-images/#resolution-aware
|
||||||
|
Reference in New Issue
Block a user