mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 01:14:15 +02:00
fix: update notifications are not being displayed
This commit is contained in:
@@ -196,8 +196,9 @@ class SoftwareManager(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def list_updates(self) -> List[PackageUpdate]:
|
||||
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
||||
"""
|
||||
:param internet_available
|
||||
:return: available package updates
|
||||
"""
|
||||
pass
|
||||
|
||||
@@ -689,8 +689,9 @@ class ArchManager(SoftwareManager):
|
||||
self.comp_optimizer.start()
|
||||
self.aur_index_updater.start()
|
||||
|
||||
def list_updates(self) -> List[PackageUpdate]:
|
||||
return [PackageUpdate(app.id, app.latest_version, 'aur') for app in self.read_installed(disk_loader=None).installed if app.update]
|
||||
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
||||
installed = self.read_installed(disk_loader=None, internet_available=internet_available).installed
|
||||
return [PackageUpdate(p.id, p.latest_version, 'aur') for p in installed if p.update]
|
||||
|
||||
def list_warnings(self) -> List[str]:
|
||||
warnings = []
|
||||
|
||||
@@ -184,26 +184,28 @@ class FlatpakManager(SoftwareManager):
|
||||
def prepare(self):
|
||||
pass
|
||||
|
||||
def list_updates(self) -> List[PackageUpdate]:
|
||||
to_update = [app for app in self.read_installed(None).installed if app.update]
|
||||
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
||||
updates = []
|
||||
installed = self.read_installed(None, internet_available=internet_available).installed
|
||||
|
||||
to_update = [p for p in installed if p.update]
|
||||
|
||||
if to_update:
|
||||
loaders = []
|
||||
loaders = []
|
||||
|
||||
for app in to_update:
|
||||
if app.is_application():
|
||||
loader = FlatpakUpdateLoader(app=app, http_client=self.context.http_client)
|
||||
loader.start()
|
||||
loaders.append(loader)
|
||||
for app in to_update:
|
||||
if app.is_application():
|
||||
loader = FlatpakUpdateLoader(app=app, http_client=self.context.http_client)
|
||||
loader.start()
|
||||
loaders.append(loader)
|
||||
|
||||
for loader in loaders:
|
||||
loader.join()
|
||||
for loader in loaders:
|
||||
loader.join()
|
||||
|
||||
for app in to_update:
|
||||
updates.append(PackageUpdate(pkg_id='{}:{}'.format(app.id, app.branch),
|
||||
pkg_type='flatpak',
|
||||
version=app.version))
|
||||
for app in to_update:
|
||||
updates.append(PackageUpdate(pkg_id='{}:{}'.format(app.id, app.branch),
|
||||
pkg_type='flatpak',
|
||||
version=app.version))
|
||||
|
||||
return updates
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ class SnapManager(SoftwareManager):
|
||||
def prepare(self):
|
||||
pass
|
||||
|
||||
def list_updates(self) -> List[PackageUpdate]:
|
||||
def list_updates(self, internet_available: bool) -> List[PackageUpdate]:
|
||||
pass
|
||||
|
||||
def list_warnings(self) -> List[str]:
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user