Skip to content

Conversation

@lollipopkit
Copy link
Owner

@lollipopkit lollipopkit commented Sep 1, 2025

Fixes #881

Summary by Sourcery

Replace direct singleton stores with GetIt-based dependency injection, register lazy singletons at startup, add get_it dependency, and assign unique IDs to SSH-config imported servers to prevent duplicates.

Bug Fixes:

  • Generate a unique ShortId for each server imported from SSH config to avoid duplicate entries.

Enhancements:

  • Use GetIt to manage and retrieve store instances via getters and lazy singleton registration.
  • Convert the backup store list into a getter that relies on the GetIt-managed store instances.

Build:

  • Add get_it 8.2.0 as a project dependency.

@sourcery-ai
Copy link

sourcery-ai bot commented Sep 1, 2025

Reviewer's Guide

This PR integrates the GetIt service locator for managing store instances and adds unique ID generation for servers imported from SSH config, fixing duplicate server entries.

Class diagram for updated Stores management with GetIt

classDiagram
    class Stores {
        +SettingStore setting
        +ServerStore server
        +ContainerStore container
        +PrivateKeyStore key
        +SnippetStore snippet
        +HistoryStore history
        +List<HiveStore> _allBackup
        +Future<void> init()
    }
    class GetIt {
        +registerLazySingleton<T>(T Function())
        +T call<T>()
    }
    Stores ..> GetIt : uses
    Stores ..> SettingStore
    Stores ..> ServerStore
    Stores ..> ContainerStore
    Stores ..> PrivateKeyStore
    Stores ..> SnippetStore
    Stores ..> HistoryStore
    SettingStore --|> HiveStore
    ServerStore --|> HiveStore
    ContainerStore --|> HiveStore
    PrivateKeyStore --|> HiveStore
    SnippetStore --|> HiveStore
    HistoryStore --|> HiveStore
Loading

Class diagram for Spi with unique ID generation

classDiagram
    class Spi {
        +String id
        +String name
        +String ip
        +int port
    }
    class ShortId {
        +static String generate()
    }
    Spi ..> ShortId : uses
Loading

File-Level Changes

Change Details Files
Integrate GetIt service locator for store instances
  • Add get_it dependency and import in pubspec.yaml
  • Instantiate GetIt and register all store singletons in init()
  • Refactor Stores class to expose stores via getIt getters instead of direct instances
  • Convert _allBackup to a computed getter using stores from getIt
lib/data/res/store.dart
pubspec.yaml
Ensure unique IDs for imported SSH config servers
  • Generate a new ShortId for Spi.id when adding a server in SSHConfig.addServer
lib/core/utils/ssh_config.dart

Assessment against linked issues

Issue Objective Addressed Explanation
#881 Fix the bug where imported servers from ssh config are assigned the same identity (i.e., they are not unique).

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@lollipopkit lollipopkit merged commit 4ec7f58 into main Sep 1, 2025
2 checks passed
@lollipopkit lollipopkit deleted the lollipopkit/issue881 branch September 1, 2025 15:07
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.

bug: imported servers from ssh config are the same

2 participants