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

Draft: Unified Extensions Subsystem #517

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from
Draft

Draft: Unified Extensions Subsystem #517

wants to merge 12 commits into from

Conversation

mjakeman
Copy link
Owner

@mjakeman mjakeman commented Nov 16, 2023

Unify the local and web representations of Extensions

This allows us to use online data and fallback to local data when it is not available.

Practically speaking, it unblocks:

Currently, this removes the dropdown in the local extensions view as requested in the Circle review. However, I won't merge this until we make it instant otherwise it's a huge regression (and annoyance). We can do this by:

  1. using local data
  2. starting an async resolve
  3. updating fields in-place with resolved data
  4. caching this with a TTL of 1 hour

TODO for this PR:

  • Implement functionality for browse page to open settings/etc
  • Fix the offline details regression above^
  • Find a way to still show error details without it being cumbersome
  • Add Oscar to DOAP file
  • Add Oscar to about dialog
  • Remove commented out code
  • Add license headers to various files
  • Fix homepage link
  • Fix merge conflicts
  • Fix crash when opening non-EGO extensions (i.e. Fedora's Background Logo)
  • Deduplicate code between Extensions Row and Details Page
  • Add selection mode to bulk-uninstall extensions

What this looks like:

image

@mjakeman mjakeman marked this pull request as draft November 16, 2023 12:36
@mjakeman mjakeman mentioned this pull request Nov 16, 2023
src/exm-unified-data.c Outdated Show resolved Hide resolved
@mjakeman
Copy link
Owner Author

Rebased on master (with some breakages). Time to tackle that to do list... 🔨

@mjakeman
Copy link
Owner Author

Rebased again - now using property bindings for populating the details view.

It's still pretty broken, but we can bind the ExmUnifiedData directly to the Gtk widgets now. I'm thinking it'll be nice to have the ability to display local, fetch web in the background, then emit a property change notification once web returns and update the display. Will have to see what this looks like in practice.

Further steps could be finding a way to load the screenshot, icon, comments, etc via property binding and blueprint. It would be nice to e.g. declare an ExmImageResolver in the blueprint code and set the URL there and have everything magically work in the background.

image

@mjakeman
Copy link
Owner Author

And now supports remove/prefs on the details page:

image

Lots of duplicated code here, so will need some tidying up - but it works well!

@oscfdezdz
Copy link
Collaborator

Lots of duplicated code here, so will need some tidying up - but it works well!

I guess changing the type of ExtExtensionRow from AdwExpanderRow will also help to get rid of a part of it 🤔

README.md Outdated Show resolved Hide resolved
@oscfdezdz
Copy link
Collaborator

More related issues that this PR unblocks: #379 and #260

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants