[ui] improvement -> checking if internet connection is available before trying to upgrade the selected packages

This commit is contained in:
Vinicius Moreira
2021-02-12 14:57:48 -03:00
parent 8c0c4d4546
commit 2d552316db
3 changed files with 14 additions and 2 deletions

View File

@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.9.15] 2021 ## [0.9.15] 2021
### Improvements
- UI
- checking if internet connection is available before trying to upgrade the selected packages
### Fixes ### Fixes
- AppImage - AppImage
- crashing when trying to upgrade and the internet connection is off - crashing when trying to upgrade and the internet connection is off

View File

@@ -22,6 +22,7 @@ from bauh.api.abstract.view import MessageType, MultipleSelectComponent, InputOp
from bauh.api.exception import NoInternetException from bauh.api.exception import NoInternetException
from bauh.commons import user from bauh.commons import user
from bauh.commons.html import bold from bauh.commons.html import bold
from bauh.commons.internet import InternetChecker
from bauh.commons.system import get_human_size_str, ProcessHandler, SimpleProcess from bauh.commons.system import get_human_size_str, ProcessHandler, SimpleProcess
from bauh.view.core import timeshift from bauh.view.core import timeshift
from bauh.view.core.config import CoreConfigManager from bauh.view.core.config import CoreConfigManager
@@ -202,11 +203,12 @@ class UpgradeSelected(AsyncAction):
LOGS_DIR = '{}/upgrade'.format(LOGS_PATH) LOGS_DIR = '{}/upgrade'.format(LOGS_PATH)
SUMMARY_FILE = LOGS_DIR + '/{}_summary.txt' SUMMARY_FILE = LOGS_DIR + '/{}_summary.txt'
def __init__(self, manager: SoftwareManager, i18n: I18n, pkgs: List[PackageView] = None): def __init__(self, manager: SoftwareManager, internet_checker: InternetChecker, i18n: I18n, pkgs: List[PackageView] = None):
super(UpgradeSelected, self).__init__() super(UpgradeSelected, self).__init__()
self.pkgs = pkgs self.pkgs = pkgs
self.manager = manager self.manager = manager
self.i18n = i18n self.i18n = i18n
self.internet_checker = internet_checker
def _req_as_option(self, req: UpgradeRequirement, tooltip: bool = True, custom_tooltip: str = None, required_size: bool = True, display_sizes: bool = True) -> InputOption: def _req_as_option(self, req: UpgradeRequirement, tooltip: bool = True, custom_tooltip: str = None, required_size: bool = True, display_sizes: bool = True) -> InputOption:
if req.pkg.installed: if req.pkg.installed:
@@ -387,6 +389,12 @@ class UpgradeSelected(AsyncAction):
traceback.print_exc() traceback.print_exc()
def run(self): def run(self):
if not self.internet_checker.is_available():
self.pkgs = None
self.print(self.i18n['internet.required'])
self.notify_finished({'success': False, 'updated': 0, 'types': set(), 'id': None})
return
root_user = user.is_root() root_user = user.is_root()
to_update, upgrade_requires_root, bkp_supported = [], False, False to_update, upgrade_requires_root, bkp_supported = [], False, False

View File

@@ -316,7 +316,7 @@ class ManageWindow(QWidget):
self.layout.addWidget(self.toolbar_substatus) self.layout.addWidget(self.toolbar_substatus)
self._change_label_substatus('') self._change_label_substatus('')
self.thread_update = self._bind_async_action(UpgradeSelected(self.manager, self.i18n), finished_call=self._finish_upgrade_selected) self.thread_update = self._bind_async_action(UpgradeSelected(self.manager, context.internet_checker, self.i18n), finished_call=self._finish_upgrade_selected)
self.thread_refresh = self._bind_async_action(RefreshApps(self.manager), finished_call=self._finish_refresh_packages, only_finished=True) self.thread_refresh = self._bind_async_action(RefreshApps(self.manager), finished_call=self._finish_refresh_packages, only_finished=True)
self.thread_uninstall = self._bind_async_action(UninstallPackage(self.manager, self.icon_cache, self.i18n), finished_call=self._finish_uninstall) self.thread_uninstall = self._bind_async_action(UninstallPackage(self.manager, self.icon_cache, self.i18n), finished_call=self._finish_uninstall)
self.thread_show_info = self._bind_async_action(ShowPackageInfo(self.manager), finished_call=self._finish_show_info) self.thread_show_info = self._bind_async_action(ShowPackageInfo(self.manager), finished_call=self._finish_show_info)