Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fast start #2185

Merged
merged 4 commits into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 7 additions & 37 deletions src/Core/FlatpakBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,6 @@ public class AppCenterCore.FlatpakBackend : Object {
case Job.Type.GET_INSTALLED_PACKAGES:
get_installed_packages_internal (job);
break;
case Job.Type.IS_PACKAGE_INSTALLED:
is_package_installed_internal (job);
break;
case Job.Type.REPAIR:
repair_internal (job);
break;
Expand Down Expand Up @@ -888,25 +885,16 @@ public class AppCenterCore.FlatpakBackend : Object {
}
}

private void is_package_installed_internal (Job job) {
var args = (IsPackageInstalledArgs)job.args;
unowned var package = args.package;

public bool is_package_installed (Package package) throws GLib.Error {
unowned var fp_package = package as FlatpakPackage;
if (fp_package == null || fp_package.installation == null) {
critical ("Could not check installed state of package due to no flatpak installation");
job.result = Value (typeof (bool));
job.result = false;
job.results_ready ();
return;
return false;
}

unowned var bundle = package.component.get_bundle (AppStream.BundleKind.FLATPAK);
if (bundle == null) {
job.result = Value (typeof (bool));
job.result = false;
job.results_ready ();
return;
return false;
}

bool system = fp_package.installation == system_installation;
Expand All @@ -915,35 +903,17 @@ public class AppCenterCore.FlatpakBackend : Object {

try {
var installed_refs = fp_package.installation.list_installed_refs ();
for (int j = 0; j < installed_refs.length; j++) {
unowned Flatpak.InstalledRef installed_ref = installed_refs[j];

foreach (unowned var installed_ref in installed_refs) {
var bundle_id = generate_package_list_key (system, installed_ref.origin, installed_ref.format_ref ());
if (key == bundle_id) {
job.result = Value (typeof (bool));
job.result = true;
job.results_ready ();
return;
return true;
}
}
} catch (Error e) {
job.error = e;
job.results_ready ();
return;
warning ("Failed to check if package is installed: %s", e.message);
}

job.result = Value (typeof (bool));
job.result = false;
job.results_ready ();
}

public async bool is_package_installed (Package package) throws GLib.Error {
var job_args = new IsPackageInstalledArgs ();
job_args.package = package;

var job = yield launch_job (Job.Type.IS_PACKAGE_INSTALLED, job_args);

return job.result.get_boolean ();
return false;
}

private void refresh_cache_internal (Job job) {
Expand Down
6 changes: 0 additions & 6 deletions src/Core/Job.vala
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ public class AppCenterCore.Job : Object {
INSTALL_PACKAGE,
UPDATE_PACKAGE,
REMOVE_PACKAGE,
IS_PACKAGE_INSTALLED,
GET_PACKAGE_DETAILS,
GET_PACKAGE_DEPENDENCIES,
GET_PREPARED_PACKAGES,
Expand All @@ -46,7 +45,6 @@ public class AppCenterCore.Job : Object {
case GET_DETAILS_FOR_PACKAGE_IDS:
case GET_PACKAGE_DEPENDENCIES:
case GET_PACKAGE_DETAILS:
case IS_PACKAGE_INSTALLED:
return _("Getting app information…");
case GET_DOWNLOAD_SIZE:
return _("Getting download size…");
Expand Down Expand Up @@ -126,10 +124,6 @@ public class AppCenterCore.RefreshCacheArgs : JobArgs {
public Cancellable? cancellable;
}

public class AppCenterCore.IsPackageInstalledArgs : JobArgs {
public Package package;
}

public class AppCenterCore.GetPackageDetailsArgs : JobArgs {
public Package package;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Core/Package.vala
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ public class AppCenterCore.Package : Object {

public async bool uninstall () throws Error {
// We possibly don't know if this package is installed or not yet, so trigger that check first
_installed = yield AppCenterCore.FlatpakBackend.get_default ().is_package_installed (this);
_installed = AppCenterCore.FlatpakBackend.get_default ().is_package_installed (this);

update_state ();

Expand Down
4 changes: 2 additions & 2 deletions src/Views/Homepage.vala
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ public class AppCenter.Homepage : Adw.NavigationPage {
var installed = false;
foreach (var origin_package in package.origin_packages) {
try {
if (yield AppCenterCore.FlatpakBackend.get_default ().is_package_installed (origin_package)) {
if (AppCenterCore.FlatpakBackend.get_default ().is_package_installed (origin_package)) {
installed = true;
break;
}
Expand Down Expand Up @@ -367,7 +367,7 @@ public class AppCenter.Homepage : Adw.NavigationPage {
var installed = false;
foreach (var origin_package in package.origin_packages) {
try {
if (yield AppCenterCore.FlatpakBackend.get_default ().is_package_installed (origin_package)) {
if (AppCenterCore.FlatpakBackend.get_default ().is_package_installed (origin_package)) {
installed = true;
break;
}
Expand Down
Loading