[flatpak] fix: not all selected runtime partials to upgrade are actually requested to be upgraded

This commit is contained in:
Vinicius Moreira
2022-05-10 18:39:35 -03:00
parent 3f525bbb3b
commit 17b5a48254
3 changed files with 26 additions and 20 deletions

View File

@@ -3,6 +3,7 @@ import re
import traceback
from datetime import datetime
from math import floor
from operator import attrgetter
from pathlib import Path
from threading import Thread
from typing import List, Set, Type, Tuple, Optional, Generator, Dict
@@ -707,31 +708,22 @@ class FlatpakManager(SoftwareManager, SettingsController):
return UpgradeRequirements(None, None, to_update, [])
def sort_update_order(self, pkgs: List[FlatpakApplication]) -> List[FlatpakApplication]:
partials, runtimes, apps = [], [], []
runtimes, apps = set(), set()
for p in pkgs:
if p.runtime:
if p.partial:
partials.append(p)
else:
runtimes.append(p)
runtimes.add(p)
else:
apps.append(p)
apps.add(p)
if not runtimes:
return [*partials, *apps]
elif partials:
all_runtimes = []
for runtime in runtimes:
for partial in partials:
if partial.installation == runtime.installation and partial.base_id == runtime.id:
all_runtimes.append(partial)
break
sorted_list = []
for comps in (runtimes, apps):
if comps:
comp_list = list(comps)
comp_list.sort(key=attrgetter('installation', 'name'))
sorted_list.extend(comp_list)
all_runtimes.append(runtime)
return [*all_runtimes, *apps]
else:
return [*runtimes, *apps]
return sorted_list
def _read_ignored_updates(self) -> Set[str]:
ignored = set()

View File

@@ -125,7 +125,16 @@ class FlatpakApplication(SoftwarePackage):
def __eq__(self, other):
if isinstance(other, FlatpakApplication):
return self.id == other.id and self.installation == other.installation and self.branch == other.branch
return self.id == other.id and self.installation == other.installation and self.branch == other.branch \
and self.runtime == other.runtime and self.partial == other.partial and \
self.update_component == other.update_component
def __hash__(self) -> int:
hash_sum = 0
for attr in ('id', 'installation', 'branch', 'runtime', 'partial', 'update_component'):
hash_sum += hash(getattr(self, attr))
return hash_sum
def get_disk_icon_path(self) -> str:
if not self.runtime: