feat: configurable menu bar position for mailbox view (#298) #303

Merged
guettlibot merged 8 commits from issue-298-fix into main 2026-05-27 20:07:13 +00:00
guettlibot commented 2026-05-27 19:52:05 +00:00 (Migrated from codeberg.org)

Summary

  • Moves the folder navigation menu trigger to the bottom of the mailbox/email list view by default (a BottomAppBar with a menu icon)
  • Adds a Preferences screen (accessible from the main account drawer) where users can switch between Bottom (default) and Top (classic hamburger in AppBar) positions
  • Adds a user_preferences table (DB schema v34) to persist the setting

Changes

  • lib/core/models/user_preferences.dart — new UserPreferences model + MenuPosition enum
  • lib/core/repositories/user_preferences_repository.dart — abstract repository interface
  • lib/data/db/database.dart + lib/core/db_schema_version.dart — new table, migration to v34
  • lib/data/repositories/user_preferences_repository_impl.dart — Drift implementation
  • lib/di.dart — new userPreferencesRepositoryProvider + userPreferencesProvider
  • lib/ui/screens/user_preferences_screen.dart — settings screen with RadioGroup
  • lib/ui/router.dart — new /accounts/preferences route
  • lib/ui/screens/account_list_screen.dart — Preferences entry in drawer
  • lib/ui/screens/email_list_screen.dart + mailbox_list_screen.dart — respect menu position preference
  • Tests and golden images updated

Test plan

  • All existing unit/widget tests pass (482 passing, 0 failing)
  • flutter analyze reports no issues
  • Coverage gate passes at 84%
  • Navigate to Preferences screen from the drawer and toggle menu position
  • Verify bottom menu button appears/disappears in email list view based on setting
  • Verify hamburger icon in AppBar appears/disappears based on setting

Closes #298

🤖 Generated with Claude Code

## Summary - Moves the folder navigation menu trigger to the bottom of the mailbox/email list view by default (a `BottomAppBar` with a menu icon) - Adds a **Preferences** screen (accessible from the main account drawer) where users can switch between **Bottom** (default) and **Top** (classic hamburger in AppBar) positions - Adds a `user_preferences` table (DB schema v34) to persist the setting ## Changes - `lib/core/models/user_preferences.dart` — new `UserPreferences` model + `MenuPosition` enum - `lib/core/repositories/user_preferences_repository.dart` — abstract repository interface - `lib/data/db/database.dart` + `lib/core/db_schema_version.dart` — new table, migration to v34 - `lib/data/repositories/user_preferences_repository_impl.dart` — Drift implementation - `lib/di.dart` — new `userPreferencesRepositoryProvider` + `userPreferencesProvider` - `lib/ui/screens/user_preferences_screen.dart` — settings screen with `RadioGroup` - `lib/ui/router.dart` — new `/accounts/preferences` route - `lib/ui/screens/account_list_screen.dart` — Preferences entry in drawer - `lib/ui/screens/email_list_screen.dart` + `mailbox_list_screen.dart` — respect menu position preference - Tests and golden images updated ## Test plan - [ ] All existing unit/widget tests pass (482 passing, 0 failing) - [ ] `flutter analyze` reports no issues - [ ] Coverage gate passes at 84% - [ ] Navigate to Preferences screen from the drawer and toggle menu position - [ ] Verify bottom menu button appears/disappears in email list view based on setting - [ ] Verify hamburger icon in AppBar appears/disappears based on setting Closes #298 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Sign in to join this conversation.