mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-29 12:33:28 +01:00 
			
		
		
		
	Finished switch to new download/install process
This commit is contained in:
		| @@ -1,6 +1,5 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:obtainium/services/apps_provider.dart'; | ||||
| import 'package:obtainium/services/source_service.dart'; | ||||
| import 'package:webview_flutter/webview_flutter.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
|  | ||||
| @@ -23,77 +22,82 @@ class _AppPageState extends State<AppPage> { | ||||
|     } | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: Text('${app!.app.author}/${app.app.name}'), | ||||
|         title: Text('${app?.app.author}/${app?.app.name}'), | ||||
|       ), | ||||
|       body: WebView( | ||||
|         initialUrl: app.app.url, | ||||
|       ), | ||||
|       bottomSheet: Column( | ||||
|         mainAxisSize: MainAxisSize.min, | ||||
|         children: [ | ||||
|           Padding( | ||||
|               padding: | ||||
|                   const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0), | ||||
|               child: Row( | ||||
|                   mainAxisAlignment: MainAxisAlignment.spaceEvenly, | ||||
|                   children: [ | ||||
|                     Expanded( | ||||
|                         child: ElevatedButton( | ||||
|                             onPressed: (app.app.installedVersion == null || | ||||
|                                         appsProvider.checkAppObjectForUpdate( | ||||
|                                             app.app)) && | ||||
|                                     app.downloadProgress == null | ||||
|                                 ? () { | ||||
|                                     appsProvider.downloadAndInstallLatestApp( | ||||
|                                         app.app.id); | ||||
|                                   } | ||||
|                                 : null, | ||||
|                             child: Text(app.app.installedVersion == null | ||||
|                                 ? 'Install' | ||||
|                                 : 'Update'))), | ||||
|                     const SizedBox(width: 16.0), | ||||
|                     ElevatedButton( | ||||
|                       onPressed: app.downloadProgress != null | ||||
|                           ? null | ||||
|                           : () { | ||||
|                               showDialog( | ||||
|                                   context: context, | ||||
|                                   builder: (BuildContext ctx) { | ||||
|                                     return AlertDialog( | ||||
|                                       title: const Text('Remove App?'), | ||||
|                                       content: Text( | ||||
|                                           'This will remove \'${app.app.name}\' from Obtainium.${app.app.installedVersion != null ? '\n\nNote that while Obtainium will no longer track its updates, the App will remain installed.' : ''}'), | ||||
|                                       actions: [ | ||||
|                                         TextButton( | ||||
|                                             onPressed: () { | ||||
|                                               appsProvider | ||||
|                                                   .removeApp(app.app.id) | ||||
|                                                   .then((_) { | ||||
|                                                 int count = 0; | ||||
|                                                 Navigator.of(context).popUntil( | ||||
|                                                     (_) => count++ >= 2); | ||||
|                                               }); | ||||
|                                             }, | ||||
|                                             child: const Text('Remove')), | ||||
|                                         TextButton( | ||||
|                                             onPressed: () { | ||||
|                                               Navigator.of(context).pop(); | ||||
|                                             }, | ||||
|                                             child: const Text('Cancel')) | ||||
|                                       ], | ||||
|                                     ); | ||||
|                                   }); | ||||
|                             }, | ||||
|                       style: TextButton.styleFrom( | ||||
|                           foregroundColor: Theme.of(context).errorColor, | ||||
|                           surfaceTintColor: Theme.of(context).errorColor), | ||||
|                       child: const Text('Remove'), | ||||
|                     ), | ||||
|                   ])), | ||||
|           if (app.downloadProgress != null) | ||||
|             LinearProgressIndicator(value: app.downloadProgress) | ||||
|         ], | ||||
|         initialUrl: app?.app.url, | ||||
|       ), | ||||
|       bottomSheet: Padding( | ||||
|           padding: EdgeInsets.fromLTRB( | ||||
|               0, 0, 0, MediaQuery.of(context).padding.bottom), | ||||
|           child: Column( | ||||
|             mainAxisSize: MainAxisSize.min, | ||||
|             children: [ | ||||
|               Padding( | ||||
|                   padding: const EdgeInsets.fromLTRB(16, 8, 16, 0), | ||||
|                   child: Row( | ||||
|                       mainAxisAlignment: MainAxisAlignment.spaceEvenly, | ||||
|                       children: [ | ||||
|                         Expanded( | ||||
|                             child: ElevatedButton( | ||||
|                                 onPressed: (app?.app.installedVersion == null || | ||||
|                                             appsProvider | ||||
|                                                 .checkAppObjectForUpdate( | ||||
|                                                     app!.app)) && | ||||
|                                         app?.downloadProgress == null | ||||
|                                     ? () { | ||||
|                                         appsProvider | ||||
|                                             .downloadAndInstallLatestApp( | ||||
|                                                 app!.app.id); | ||||
|                                       } | ||||
|                                     : null, | ||||
|                                 child: Text(app?.app.installedVersion == null | ||||
|                                     ? 'Install' | ||||
|                                     : 'Update'))), | ||||
|                         const SizedBox(width: 16.0), | ||||
|                         ElevatedButton( | ||||
|                           onPressed: app?.downloadProgress != null | ||||
|                               ? null | ||||
|                               : () { | ||||
|                                   showDialog( | ||||
|                                       context: context, | ||||
|                                       builder: (BuildContext ctx) { | ||||
|                                         return AlertDialog( | ||||
|                                           title: const Text('Remove App?'), | ||||
|                                           content: Text( | ||||
|                                               'This will remove \'${app?.app.name}\' from Obtainium.${app?.app.installedVersion != null ? '\n\nNote that while Obtainium will no longer track its updates, the App will remain installed.' : ''}'), | ||||
|                                           actions: [ | ||||
|                                             TextButton( | ||||
|                                                 onPressed: () { | ||||
|                                                   appsProvider | ||||
|                                                       .removeApp(app!.app.id) | ||||
|                                                       .then((_) { | ||||
|                                                     int count = 0; | ||||
|                                                     Navigator.of(context) | ||||
|                                                         .popUntil((_) => | ||||
|                                                             count++ >= 2); | ||||
|                                                   }); | ||||
|                                                 }, | ||||
|                                                 child: const Text('Remove')), | ||||
|                                             TextButton( | ||||
|                                                 onPressed: () { | ||||
|                                                   Navigator.of(context).pop(); | ||||
|                                                 }, | ||||
|                                                 child: const Text('Cancel')) | ||||
|                                           ], | ||||
|                                         ); | ||||
|                                       }); | ||||
|                                 }, | ||||
|                           style: TextButton.styleFrom( | ||||
|                               foregroundColor: Theme.of(context).errorColor, | ||||
|                               surfaceTintColor: Theme.of(context).errorColor), | ||||
|                           child: const Text('Remove'), | ||||
|                         ), | ||||
|                       ])), | ||||
|               if (app?.downloadProgress != null) | ||||
|                 LinearProgressIndicator(value: app!.downloadProgress! / 100) | ||||
|             ], | ||||
|           )), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -21,21 +21,21 @@ class _HomePageState extends State<HomePage> { | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|         appBar: AppBar(title: const Text('Obtainium')), | ||||
|         body: pages.elementAt(selectedIndex), | ||||
|         bottomNavigationBar: NavigationBar( | ||||
|           destinations: const [ | ||||
|             NavigationDestination( | ||||
|                 icon: Icon(Icons.settings), label: 'Settings'), | ||||
|             NavigationDestination(icon: Icon(Icons.apps), label: 'Apps'), | ||||
|             NavigationDestination(icon: Icon(Icons.add), label: 'Add App'), | ||||
|           ], | ||||
|           onDestinationSelected: (int index) { | ||||
|             setState(() { | ||||
|               selectedIndex = index; | ||||
|             }); | ||||
|           }, | ||||
|           selectedIndex: selectedIndex, | ||||
|         )); | ||||
|       appBar: AppBar(title: const Text('Obtainium')), | ||||
|       body: pages.elementAt(selectedIndex), | ||||
|       bottomNavigationBar: NavigationBar( | ||||
|         destinations: const [ | ||||
|           NavigationDestination(icon: Icon(Icons.settings), label: 'Settings'), | ||||
|           NavigationDestination(icon: Icon(Icons.apps), label: 'Apps'), | ||||
|           NavigationDestination(icon: Icon(Icons.add), label: 'Add App'), | ||||
|         ], | ||||
|         onDestinationSelected: (int index) { | ||||
|           setState(() { | ||||
|             selectedIndex = index; | ||||
|           }); | ||||
|         }, | ||||
|         selectedIndex: selectedIndex, | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user