fix: update notifications are not being displayed

This commit is contained in:
Vinicius Moreira
2019-09-28 13:09:37 -03:00
parent e91bd85fa8
commit fd2dbe7dd0
7 changed files with 62 additions and 28 deletions

View File

@@ -143,12 +143,12 @@ class GenericSoftwareManager(SoftwareManager):
t.start()
return t
def read_installed(self, disk_loader: DiskCacheLoader = None, limit: int = -1, only_apps: bool = False, pkg_types: Set[Type[SoftwarePackage]] = None, internet_available: bool = None) -> SearchResult:
def read_installed(self, disk_loader: DiskCacheLoader = None, limit: int = -1, only_apps: bool = False, pkg_types: Set[Type[SoftwarePackage]] = None, net_check: bool = None) -> SearchResult:
ti = time.time()
self._wait_to_be_ready()
internet_available = {}
thread_internet_check = self._get_internet_check(internet_available)
net_check = {}
thread_internet_check = self._get_internet_check(net_check)
res = SearchResult([], None, 0)
@@ -165,7 +165,7 @@ class GenericSoftwareManager(SoftwareManager):
thread_internet_check.join()
mti = time.time()
man_res = man.read_installed(disk_loader=disk_loader, pkg_types=None, internet_available=internet_available['available'])
man_res = man.read_installed(disk_loader=disk_loader, pkg_types=None, internet_available=net_check['available'])
mtf = time.time()
self.logger.info(man.__class__.__name__ + " took {0:.2f} seconds".format(mtf - mti))
@@ -184,7 +184,7 @@ class GenericSoftwareManager(SoftwareManager):
thread_internet_check.join()
mti = time.time()
man_res = man.read_installed(disk_loader=disk_loader, pkg_types=None, internet_available=internet_available['available'])
man_res = man.read_installed(disk_loader=disk_loader, pkg_types=None, internet_available=net_check['available'])
mtf = time.time()
self.logger.info(man.__class__.__name__ + " took {0:.2f} seconds".format(mtf - mti))
@@ -286,15 +286,22 @@ class GenericSoftwareManager(SoftwareManager):
self.thread_prepare = Thread(target=self._prepare)
self.thread_prepare.start()
def list_updates(self) -> List[PackageUpdate]:
def list_updates(self, net_check: bool = None) -> List[PackageUpdate]:
self._wait_to_be_ready()
updates = []
if self.managers:
net_check = {}
thread_internet_check = self._get_internet_check(net_check)
for man in self.managers:
if self._can_work(man):
man_updates = man.list_updates()
if thread_internet_check.is_alive():
thread_internet_check.join()
man_updates = man.list_updates(internet_available=net_check['available'])
if man_updates:
updates.extend(man_updates)

View File

@@ -1,4 +1,5 @@
import time
from io import StringIO
from threading import Lock, Thread
from typing import List
@@ -96,7 +97,22 @@ class TrayIcon(QSystemTrayIcon):
if update_keys.difference(self.last_updates):
self.last_updates = update_keys
n_updates = len(updates)
msg = self.i18n['notification.update{}'.format('' if n_updates == 1 else 's')].format(n_updates)
ups_by_type = {}
for key in update_keys:
ptype = key.split(':')[0]
count = ups_by_type.get(ptype)
count = 1 if count is None else count + 1
ups_by_type[ptype] = count
msg = StringIO()
msg.write(self.i18n['notification.update{}'.format('' if n_updates == 1 else 's')].format(n_updates))
for ptype, count in ups_by_type.items():
msg.write('\n * {} ( {} )'.format(ptype.capitalize(), count))
msg.seek(0)
msg = msg.read()
self.setToolTip(msg)
if self.update_notification and notify_user: