- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 12
Add extensible bookmark import interface with UI for multiple import formats #239
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
Conversation
…ations Co-authored-by: yogeshpaliyal <[email protected]>
Co-authored-by: yogeshpaliyal <[email protected]>
| @copilot fox lint issues. | 
Co-authored-by: yogeshpaliyal <[email protected]>
| 
 Fixed all ktlint issues in commit c233964. Changes include: 
 All files now pass ktlint validation. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
 If you need me to access, download, or install something from one of these locations, you can either: 
 | 
| @copilot Add options to import from different places in settings page | 
Co-authored-by: yogeshpaliyal <[email protected]>
| 
 Added import options in Settings page (commit fac20c5). The Settings screen now displays dynamic import options for all available importers: Import & Export section now includes: 
 Each option opens a file picker with the appropriate MIME type filters. The UI dynamically generates options based on registered importers, making it easy to add new import formats in the future. | 
Creates a pluggable import system for bookmarks from various sources (CSV, Chrome, Firefox) with a dynamic Settings UI that allows users to import from different formats.
Interface Design
BookmarkImporter - Base interface all importers implement:
import(uri: Uri): RequestResult<ImportResult>- Parse and import bookmarksgetDisplayName(): String- UI display namegetSupportedMimeTypes(): Array<String>- File type filtersImplementations
Repository & ViewModel Updates
ImportRepositoryImpluses composition pattern with individual importers, delegating CSV import toCsvBookmarkImporter.import().Added
importBookmarks()andgetAvailableImporters()methods toAccountViewModelto support the UI integration.Settings UI Updates
The Settings screen now dynamically displays import options for all available importers:
Import & Export section includes:
Each import option:
The UI automatically generates options based on registered importers, making it extensible for future import formats.
Extension Pattern
Adding new formats requires implementing the interface and registering in
ImportRepositoryImpl:Future candidates: Safari, Edge, JSON formats, Pocket/Instapaper integration.
Code Quality
Fixes #228
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.