Skip to content

Multi-device sync/recover capability #2013

Open
@Fmstrat

Description

@Fmstrat

Describe the feature
If open to it, considering authoring a PR for full-sync and recover. This is similar to previous sync requests like backing up to cloud providers, but would handle the sync the same way applications like Steam or Google Play do.

UI additions:

  • Toggle for sync
  • Sync server URL selection
  • Device name (defaults based on similar name pattern to Firefox)
  • Sync credentials
  • Additional dropdown on restore screen for "Install to match /none
  • In each app details, a list of "Installed on" devices

Backend additions:

  • Current backup format in JSON is used, but
    • Each installed app gets an Installed On array of devices
  • When opening Obtainium and/or adding a new app, a sync occurs
  • Adding apps is not allowed if sync fails
  • When installing/uninstalling/removing, a date time flag to indicate action is added in an Actions array
  • Removing an app keeps the app in the configuration, but hides it from the UI

Sync method:

  • For each app, whichever Action has the latest date (device or server) is used
    • If server has newer action than device, and server says installed for the current device but device says it is not, an Action of ResolveUninstalled is added to the array and saved in both locations
      • This is ignored if "restore" is in progress
      • Potential v2 revision to this to allow for "install on another device"

Still debating on the sync server infrastructure. I could pretty easily make a docker-based service with a postgres DB, but users may prefer a selection of cloud providers like Drive and Nextcloud. The advantage of the former is you (or anyone) could run a multi-user sync service, which could be a pathway to revenue if you so desired (I would only submit a PR under the current license, though).

Describe alternatives you've considered (if applicable)

Current export/import

Additional context

I want to be able to use Obtainium across multiple devices fully de-googled. This would be a lot easier if Obtainium supported a centralized account structure.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions