mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-23 01:29:40 +02:00
Compare commits
3 Commits
v0.5.2-bet
...
v0.5.4-bet
Author | SHA1 | Date | |
---|---|---|---|
|
e3e945d13b | ||
|
61f7f171b1 | ||
|
de07583161 |
@@ -14,7 +14,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';
|
||||||
|
|
||||||
const String currentReleaseTag =
|
const String currentReleaseTag =
|
||||||
'v0.5.2-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
'v0.5.4-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
||||||
|
|
||||||
const String bgUpdateCheckTaskName = 'bg-update-check';
|
const String bgUpdateCheckTaskName = 'bg-update-check';
|
||||||
|
|
||||||
@@ -28,8 +28,6 @@ bgUpdateCheck(int? ignoreAfterMicroseconds) async {
|
|||||||
var appsProvider = AppsProvider();
|
var appsProvider = AppsProvider();
|
||||||
await notificationsProvider.cancel(ErrorCheckingUpdatesNotification('').id);
|
await notificationsProvider.cancel(ErrorCheckingUpdatesNotification('').id);
|
||||||
await appsProvider.loadApps();
|
await appsProvider.loadApps();
|
||||||
// List<String> existingUpdateIds = // TODO: Uncomment this and below when it works
|
|
||||||
// appsProvider.getExistingUpdates(installedOnly: true);
|
|
||||||
List<String> existingUpdateIds =
|
List<String> existingUpdateIds =
|
||||||
appsProvider.getExistingUpdates(installedOnly: true);
|
appsProvider.getExistingUpdates(installedOnly: true);
|
||||||
DateTime nextIgnoreAfter = DateTime.now();
|
DateTime nextIgnoreAfter = DateTime.now();
|
||||||
@@ -52,11 +50,13 @@ bgUpdateCheck(int? ignoreAfterMicroseconds) async {
|
|||||||
.where((id) => !existingUpdateIds.contains(id))
|
.where((id) => !existingUpdateIds.contains(id))
|
||||||
.map((e) => appsProvider.apps[e]!.app)
|
.map((e) => appsProvider.apps[e]!.app)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
|
// TODO: This silent update code doesn't work yet
|
||||||
// List<String> silentlyUpdated = await appsProvider
|
// List<String> silentlyUpdated = await appsProvider
|
||||||
// .downloadAndInstallLatestApp(
|
// .downloadAndInstallLatestApp(
|
||||||
// [...newUpdates.map((e) => e.id), ...existingUpdateIds], null);
|
// [...newUpdates.map((e) => e.id), ...existingUpdateIds], null);
|
||||||
// if (silentlyUpdated.isNotEmpty) {
|
// if (silentlyUpdated.isNotEmpty) {
|
||||||
// newUpdates
|
// newUpdates = newUpdates
|
||||||
// .where((element) => !silentlyUpdated.contains(element.id))
|
// .where((element) => !silentlyUpdated.contains(element.id))
|
||||||
// .toList();
|
// .toList();
|
||||||
// notificationsProvider.notify(
|
// notificationsProvider.notify(
|
||||||
@@ -64,6 +64,7 @@ bgUpdateCheck(int? ignoreAfterMicroseconds) async {
|
|||||||
// silentlyUpdated.map((e) => appsProvider.apps[e]!.app).toList()),
|
// silentlyUpdated.map((e) => appsProvider.apps[e]!.app).toList()),
|
||||||
// cancelExisting: true);
|
// cancelExisting: true);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if (newUpdates.isNotEmpty) {
|
if (newUpdates.isNotEmpty) {
|
||||||
notificationsProvider.notify(UpdateNotification(newUpdates),
|
notificationsProvider.notify(UpdateNotification(newUpdates),
|
||||||
cancelExisting: true);
|
cancelExisting: true);
|
||||||
@@ -107,14 +108,21 @@ void main() async {
|
|||||||
ChangeNotifierProvider(create: (context) => SettingsProvider()),
|
ChangeNotifierProvider(create: (context) => SettingsProvider()),
|
||||||
Provider(create: (context) => NotificationsProvider())
|
Provider(create: (context) => NotificationsProvider())
|
||||||
],
|
],
|
||||||
child: const MyApp(),
|
child: const Obtainium(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultThemeColour = Colors.deepPurple;
|
var defaultThemeColour = Colors.deepPurple;
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class Obtainium extends StatefulWidget {
|
||||||
const MyApp({super.key});
|
const Obtainium({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<Obtainium> createState() => _ObtainiumState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ObtainiumState extends State<Obtainium> {
|
||||||
|
var existingUpdateInterval = -1;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -143,20 +151,23 @@ class MyApp extends StatelessWidget {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
// Register the background update task according to the user's setting
|
// Register the background update task according to the user's setting
|
||||||
if (settingsProvider.updateInterval == 0) {
|
if (existingUpdateInterval != settingsProvider.updateInterval) {
|
||||||
|
existingUpdateInterval = settingsProvider.updateInterval;
|
||||||
|
if (existingUpdateInterval == 0) {
|
||||||
Workmanager().cancelByUniqueName(bgUpdateCheckTaskName);
|
Workmanager().cancelByUniqueName(bgUpdateCheckTaskName);
|
||||||
} else {
|
} else {
|
||||||
Workmanager().registerPeriodicTask(
|
Workmanager().registerPeriodicTask(
|
||||||
bgUpdateCheckTaskName, bgUpdateCheckTaskName,
|
bgUpdateCheckTaskName, bgUpdateCheckTaskName,
|
||||||
frequency: Duration(minutes: settingsProvider.updateInterval),
|
frequency: Duration(minutes: existingUpdateInterval),
|
||||||
initialDelay: Duration(minutes: settingsProvider.updateInterval),
|
initialDelay: Duration(minutes: existingUpdateInterval),
|
||||||
constraints: Constraints(networkType: NetworkType.connected),
|
constraints: Constraints(networkType: NetworkType.connected),
|
||||||
existingWorkPolicy: ExistingWorkPolicy.keep,
|
existingWorkPolicy: ExistingWorkPolicy.replace,
|
||||||
backoffPolicy: BackoffPolicy.linear,
|
backoffPolicy: BackoffPolicy.linear,
|
||||||
backoffPolicyDelay:
|
backoffPolicyDelay:
|
||||||
const Duration(minutes: minUpdateIntervalMinutes));
|
const Duration(minutes: minUpdateIntervalMinutes));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return DynamicColorBuilder(
|
return DynamicColorBuilder(
|
||||||
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) {
|
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) {
|
||||||
|
@@ -8,6 +8,7 @@ import 'dart:io';
|
|||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:obtainium/app_sources/github.dart';
|
||||||
import 'package:obtainium/providers/notifications_provider.dart';
|
import 'package:obtainium/providers/notifications_provider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
@@ -194,6 +195,26 @@ class AppsProvider with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If Obtainium is being installed, it should be the last one
|
||||||
|
List<ApkFile> moveObtainiumToEnd(List<ApkFile> items) {
|
||||||
|
String obtainiumId = 'imranr98_obtainium_${GitHub().host}';
|
||||||
|
ApkFile? temp;
|
||||||
|
items.removeWhere((element) {
|
||||||
|
bool res = element.appId == obtainiumId;
|
||||||
|
if (res) {
|
||||||
|
temp = element;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
});
|
||||||
|
if (temp != null) {
|
||||||
|
items.add(temp!);
|
||||||
|
}
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
silentUpdates = moveObtainiumToEnd(silentUpdates);
|
||||||
|
regularInstalls = moveObtainiumToEnd(regularInstalls);
|
||||||
|
|
||||||
for (var u in silentUpdates) {
|
for (var u in silentUpdates) {
|
||||||
await installApk(u);
|
await installApk(u);
|
||||||
}
|
}
|
||||||
|
@@ -129,5 +129,6 @@ class SettingsProvider with ChangeNotifier {
|
|||||||
|
|
||||||
void setSettingString(String settingId, String value) {
|
void setSettingString(String settingId, String value) {
|
||||||
prefs?.setString(settingId, value);
|
prefs?.setString(settingId, value);
|
||||||
|
notifyListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -407,7 +407,7 @@ packages:
|
|||||||
name: permission_handler_android
|
name: permission_handler_android
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.0"
|
version: "10.1.0"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
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.5.2+23 # When changing this, update the tag in main() accordingly
|
version: 0.5.4+25 # When changing this, update the tag in main() accordingly
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.19.0-79.0.dev <3.0.0'
|
sdk: '>=2.19.0-79.0.dev <3.0.0'
|
||||||
|
@@ -13,7 +13,7 @@ import 'package:obtainium/main.dart';
|
|||||||
void main() {
|
void main() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
// Build our app and trigger a frame.
|
||||||
await tester.pumpWidget(const MyApp());
|
await tester.pumpWidget(const Obtainium());
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
// Verify that our counter starts at 0.
|
||||||
expect(find.text('0'), findsOneWidget);
|
expect(find.text('0'), findsOneWidget);
|
||||||
|
Reference in New Issue
Block a user