Proto commits in jakepurple13/OtakuWorld

These 26 commits are when the Protocol Buffers files have changed:

Commit:3d46622
Author:jacobrein

feat: Add option to include insets in reader and update dependencies This commit introduces a new setting to include system insets in the reader view, improving the user experience, and updates the Ackpine dependency. - **Reader View:** - Added a new setting to include insets in the reader view. - Added a new `includeInsetsForReader` field to the `MangaSettings` data class. - Updated the `ReaderCompose` composable to respect the `includeInsetsForReader` setting. - Added a switch to the reader settings to toggle the `includeInsetsForReader` option. - Added a switch to the onboarding to toggle the `includeInsetsForReader` option. - - Updated `MangaSettings` to set `includeInsetsForReader` to true when migrating. +- **Manga Settings Migration:** + - Updated `MangaSettings` to set `includeInsetsForReader` to `true` when migrating. - **Dependencies:** - Updated Ackpine to version 0.11.2. + - Update `manga_settings.proto` to include the `includeInsetsForReader` option.

The documentation is generated from this commit.

Commit:4538a23
Author:jacobrein

feat: Add Multiplatform Manga Settings and Migrate Old Settings This commit introduces a new multiplatform library for handling manga-specific settings and migrates the existing settings to this new system. - **Multiplatform Manga Settings Library:** - Added a new `mangasettings` library under the `datastore` module. - This library uses `protobuf` for data serialization and is designed to be multiplatform. - Created `MangaNewSettingsHandling.kt` to manage settings in a multiplatform way. - Created `manga_settings.proto` to define the structure of the settings data. - Added `MangaNewSettingsSerializer` for the new `MangaSettings` class. - - Added `gitignore`, `build.gradle.kts` and `AndroidManifest.xml` for the new `mangasettings` library. + - Added `gitignore`, `build.gradle.kts` and `AndroidManifest.xml` for the new `mangasettings` library. + - Changed `getDataStore` and `createDataStore` to use generics. - Updated `Platform.android.kt`, `Platform.jvm.kt`, and `Platform.ios.kt` to support the new data store. - Updated `Platform.kt` to support the new generic data store functions. - Created `proguard-rules.pro` and `consumer-rules.pro` for the new library. - **Settings Migration:** - Created a migration function that moves old settings to the new ones. + - Created `MangaApp.kt` to run the migration. - `MangaSettingsHandling` now uses `MangaNewSettingsHandling` + - added `hasMigrated` field to keep track of if the migration has happened. - **Code Changes:** - Updated `GenericManga.kt` to use `MangaNewSettingsHandling`. - Updated `ReadActivity.kt` to use `MangaNewSettingsHandling`. - - **UI Changes** + - Updated `ImageLoaderSettings.kt` to use `MangaNewSettingsHandling`. + - Updated `ReaderOnboarding.kt` to use `MangaNewSettingsHandling`. + - Updated `MangaWorldSettings.kt` to use `MangaNewSettingsHandling`. + - Updated `ReaderSettings.kt` to use `MangaNewSettingsHandling`. + - Updated `Sheets.kt` to use `MangaNewSettingsHandling`. + - Removed `UNRECOGNIZED` from the `ReaderType` when getting the settings. + - **UI Changes:** - Added an `Image` default to the Image settings so that there is something if none are found. - added `leadingIcon` to more settings options. - Fixed an issue with `SystemThemeMode` - - removed `UNRECOGNIZED` from the `ReaderType` list. - - updated `SettingsHandling.kt` - - **UI Changes** + - removed `UNRECOGNIZED` from the `ReaderType` list in `Sheets.kt` and `ReaderSettings.kt` + - **Multiplatform Roadmap:** + - Updated `Multiplatform Roadmap.md` to reflect completed tasks. - removed `UNRECOGNIZED` from the `ReaderType` list. - **Misc:** - Updated `build.gradle.kts` and `settings.gradle.kts` to use the new `mangasettings` library. - Updated `build.gradle.kts` to use the new `mangasettings` library. + - Removed extra `.`s in file names.

Commit:5276882
Author:jacobrein

feat: Migrate Old Settings to New Settings Datastore This commit migrates the old settings to the new settings data store, ensuring a seamless transition for users. - **Settings Migration:** - Implemented a settings migration process to transfer settings from the old `SettingsHandling` to the new `NewSettingsHandling`. - Added `hasMigrated` to the `Settings` and `Preferences` models to indicate if the migration has already been done. - Added `hasMigrated` to `DataStoreHandling` to store the status. - Updated the `migrateSettings` function to handle the migration. - Added a check to make sure that settings are migrated only once. - Migrates `Settings` to the new `Settings` protocol model. - Added the ability to migrate the old `Preferences` datastore to the new `Settings` datastore. - - Migrated `SystemThemeMode`, `GridChoice`, `ThemeColor`, `MiddleNavigationAction`, `MiddleMultipleActions`, and `NotificationSortBy` - - Migrates `SystemThemeMode`, `GridChoice`, `ThemeColor`, `MiddleNavigationAction`, `MiddleMultipleActions`, and `NotificationSortBy` to their new version in the proto model. - - Migrates the old `Settings` to the new `Settings` protocol model. - - Added `hasMigrated` to the `Settings` and `Preferences` models to indicate if the migration has already been done. - - Added `hasMigrated` to `DataStoreHandling` to store the status. - - Added the ability to migrate the old `Preferences` datastore to the new `Settings` datastore. + - Migrates `SystemThemeMode`, `GridChoice`, `ThemeColor`, `MiddleNavigationAction`, `MiddleMultipleActions`, and `NotificationSortBy` to their new version in the proto model. - Added `hasMigrated` to `DataStoreHandling` to store the status. - - Migrates the old `Preferences` datastore to the new `Settings` datastore. - - Added a check to make sure that settings are migrated only once. - - Updates UI to now allow for null `MiddleMultipleActions`. - - Removed `UNRECOGNIZED` from `ThemeColor` enum. - - Removed the need for the `GlobalScope` on the `dataStore` migration by only running it if the `hasMigrated` is false. - - Updated `ThemeContent` to now use the `NewSettingsHandling` instead of `SettingsHandling`. - - Updated `GeneralContent` to now use the `NewSettingsHandling` instead of `SettingsHandling`. - - Fixed a bug with `multipleActions` in `MultipleActions` not allowing for null. + - Removed `UNRECOGNIZED` from `ThemeColor` enum. + - Updated `ThemeContent` to now use the `NewSettingsHandling` instead of `SettingsHandling`. + - Updated `GeneralContent` to now use the `NewSettingsHandling` instead of `SettingsHandling`. + - Fixed a bug with `multipleActions` in `MultipleActions` not allowing for null. + - Removed the need for the `GlobalScope` on the `dataStore` migration by only running it if the `hasMigrated` is false. + - Updates UI to now allow for null `MiddleMultipleActions`.

Commit:2fe8e1a
Author:jacobrein

feat: Add Multiplatform Settings and Migrate Existing Settings This commit introduces a new multiplatform settings system using `DataStore` and migrates existing settings to the new format. - **Multiplatform Settings:** - Added a new `Settings` proto file to define the structure of the settings data. - Implemented a new `NewSettingsHandling` class to manage the new settings using `DataStore`. - Added platform-specific implementations for Android, JVM, and iOS to handle data storage. - Added `getDataStore` function to get a `DataStore` instance. - Added a `SettingsSerializer` to handle the serialization and deserialization of the settings data. - Added `createDataStore` function to create a data store instance. - - Updated `SettingsHandling` to use `Okio` + - Added `createProtobuf` to make getting the data store easier for android. - **Settings Migration:** - Added a migration process to transfer existing settings from the old `SettingsHandling` to the new `NewSettingsHandling`. - - Added `migrateSettings` function to migrate old settings. - - Added `dataStore.data.onEach` to migrate old settings to new settings. - Removed the `UNRECOGNIZED` enum from `GridChoice`, `ThemeColor`, `SystemThemeMode`, `MiddleNavigationAction`, and `NotificationSortBy` - - Added `dataStore.data.onEach` to migrate old settings to new settings. +- Added `migrateSettings` function to migrate old settings. +- Added `dataStore.data.onEach` to migrate old settings to new settings. - **Proto:** - Added a `settings.proto` file to define the structure of the `Settings` message. - - Added `SettingsSerializer` to read and write to the `proto` file. + - Added `SettingsSerializer` to read and write from the `proto` file. + - Updated the build.gradle to use wire. - Added `GenericSerializer` to handle serialization of `proto` files. + - Changed `MiddleNavigationAction.UNRECOGNIZED` to just `MiddleNavigationAction.Multiple` + - Changed `MiddleMultipleActions` to use `MiddleNavigationAction` + - Updated `settings.proto` to use `MiddleMultipleActions` +- **Custom Settings:** + - Removed the `UNRECOGNIZED` enum from `MiddleNavigationAction`. + - Updated `visibleName` to use the name instead of having extra logic. - **UI/UX Improvements:** - Updated the settings UI to use the new settings management system. - Updated the settings UI to use the new settings management system. - Updated `rememberMiddleNavigationAction` to use `multipleActions`. - - Added `MiddleMultipleActions` to hold two different actions. - - Added a method to get the proper seedColor. + - Added a method to get the proper `seedColor`. + - **Minor Changes:** + - Removed gson from the project. + - Added wire to the project. + - Updated `MiddleNavigationAction` to use `Multiple` instead of `UNRECOGNIZED`. + - Removed unnecessary comments. +- Updated `MiddleNavigationItem` to use `MiddleNavigationAction` +- Updated `getDataStore` to have a `producePath` lambda. +- Added `BatteryPercent` to the new settings. +- Added `NotificationSortBy` to the new settings. +- Added `customUrls` to the new settings. +- Added `showAll` to the new settings. +- Added `shareChapter` to the new settings. +- Added `historySave` to the new settings. +- Added `showBlur` to the new settings. +- Added `usePalette` to the new settings. +- Added `amoledMode` to the new settings. +- Updated `ThemeColor` to not include `UNRECOGNIZED`. +- Added `rememberGridChoice`, `rememberThemeColor`, `rememberShowExpressiveness`, and `rememberMiddleMultipleActions` +- Added `notifyOnReboot` to the new settings. - **Remote Config:** - Updated `RemoteConfigKeys` to reflect the changes in settings. - **Misc:** - Updated `Multiplatform Roadmap.md` - - Fixed a crash when removing custom urls. - - Removed gson from the project. - - Added `MiddleMultipleActions` to hold two different actions. - - Updated `MiddleNavigationAction` to use `Multiple` instead of `UNRECOGNIZED`. + - Fixed a crash when removing custom urls. - Cleaned up code. - Refactored `SettingsHandling` to use `ProtoStoreHandler` - Updated `ProtoStoreHandler` to have a `set` and `get` function. - Updated `OtakuApp` to migrate the old settings to new settings. - Updated `OtakuApp` to create a protobuf data store. - Updated `settingsHandling` to use a lambda. - Updated `settingsHandling` to use the new protobuf data store. -- Updated `getDataStore` to have a `producePath` lambda. -Added `BatteryPercent` to the new settings. -- Added `NotificationSortBy` to the new settings. -Added `customUrls` to the new settings. -- Added `showAll` to the new settings. -- Added `shareChapter` to the new settings. -- Added `historySave` to the new settings. -- Added `showBlur` to the new settings. -- Added `usePalette` to the new settings. -- Added `amoledMode` to the new settings. -- Updated `ThemeColor` to not include `UNRECOGNIZED`. -- Added `rememberGridChoice`, `rememberThemeColor`, `rememberShowExpressiveness`, and `rememberMiddleMultipleActions` -Changed `MiddleNavigationAction.UNRECOGNIZED` to just `MiddleNavigationAction.Multiple` -- Updated `MiddleMultipleActions` to use `MiddleNavigationAction` -Removed unnecessary comments. -Updated `MiddleNavigationItem` to use `MiddleNavigationAction` -Added `notifyOnReboot` to the new settings. -Updated `settings.proto` to use `MiddleMultipleActions` -Updated `settings.proto` to use `MiddleNavigationAction`

Commit:b15b559
Author:jacobrein

Refactor: Improve Reader Settings and UI Components This commit refactors the reader settings and improves UI components for better user experience and code organization. - **Reader Settings Overhaul:** - Removed `PlayingStartAction` and `PlayingMiddleAction` from `MangaSettings`. - Removed `playingStartAction`, `onStartOptionChange`, `middleAction`, `onMiddleActionChange`, `batteryValue`, and `onBatteryChange` parameters from the `ReaderSettings` composable. - Removed `batteryPercent` state variable. - Removed `startOption` and `middleAction` from `ReaderCompose`. - Removed `startAction`, `onStartActionChange`, `middleAction`, and `onMiddleActionChange` parameters from the `SettingsPopup` composable. - Removed the ability to have `startAction` and `middleAction`. - **Reader UI Updates:** + - Updated `FloatingBottomBar` to remove the `onSettingsClick` + - Updated `ReaderTopBar` to have an `onSettingsClick` instead of `playingStartAction` and `playingMiddleAction` - Removed the `ReaderTopBar` from the `ReaderSettings` Screen. - Updated `ReaderTopBar` to only show the chapter number and have a settings button. - Updated `ReaderTopBar` to use normal `TopAppBar` instead of `CenterAlignedTopAppBar` - Updated the page counter in `FloatingBottomBar` to animate to the new number. - **Dependency Updates:** - Updated `ackpineVersion` to "0.11.0". - Updated `jsoup` to 1.19.1 - **Other Changes:** - Updated `DownloadAndInstaller` to immediately ask the user if they want to install. - Cleaned up code.

Commit:4729fff
Author:jacobrein

Refactor: Update notification handling and add notify on boot option This commit refactors the notification handling in the settings and adds a new option to notify on boot. - Updates the `SettingsFragment` to always show the notifications option. - Updates the `NotificationViewModel` to include a `notifyOnBoot` property. - Adds a `notifyOnReboot` preference to the `SettingsHandling` data store. - Adds `notifyOnReboot` in `settings.proto`. - Updates `InfoSettings` to remove the APK file removal check when updating the app. - Adds a `Notify on Boot` switch in `NotificationSettings`. - Updates the `BootReceived` class to conditionally view notifications based on the `notifyOnBoot` setting. - Refactors the `NotificationFragment` to use a `ModalBottomSheetDelete` component for deleting notifications. - Updates `ModalBottomSheetDelete` to allow deletion of multiple notifications. - Updates `ModalBottomSheetDelete` to show clear all button. - Updates `ModalBottomSheetDelete` to show a delete all option. - Removes `cancelNotification` from `NotificationFragment`. - Updates `NotificationFragment` to show delete icon and sort. - Removes `BottomSheetDeleteGridScaffold` and `BottomSheetDeleteScaffold` - Updates `ModalBottomSheetDelete` to show a cancel and remove button. - Update `ModalBottomSheetDelete` to show the clear all button and delete all option. - Updates `NotificationFragment` to not use a grid. - Updates `NotificationFragment` to use `Scaffold`. - Updates `NotificationFragment` to show a delete icon. - Updates `NotificationFragment` to show current notification count in the top bar. - Minor update to use `nestedScroll` in `ModalBottomSheetDelete`. - Update `BaseMainActivity` to stop collecting data on close.

Commit:81d107f
Author:jacobrein

- Update Dependencies & UI Refinements This commit updates several dependencies, including: - Haze to 1.0.0 - Landscapist to 2.4.2 - Firebase KTX to 0.2.1 - Core Library Desugaring to 2.1.3 It also introduces a new UI setting for animation expressiveness and adjust the General Settings layout with spacing between elements for improved visual appeal.

Commit:6c93b6a
Author:jacobrein

- Feat: Add Floating Reader Bottom Bar Option This commit adds a new setting to enable a floating bottom bar in the reader. - A new setting is added to the reader settings and global settings to toggle the floating bottom bar. - The bottom bar is now displayed as a floating bar when the setting is enabled. - The floating bar is hidden by default and can be expanded by tapping on a small icon. - The bar contains buttons for page selection, settings, chapter change, and chapter list.

Commit:97af2d2
Author:jacobrein

- Feat: Add User Gesture Setting for Reader Chapter List This commit introduces a new setting that allows users to enable or disable user gestures for navigating the chapter list within the reader. - A toggle switch is added to the Reader Settings menu to control this setting. - When enabled, users can swipe to navigate the chapter list. - When disabled, swipe gestures are ignored, and users must tap on a chapter to change it.

Commit:720cc9d
Author:jacobrein

- Refactor: Reorganize General Settings and Bottom Navigation Bar This commit refactors the general settings screen and bottom navigation bar: - Reorganizes the general settings screen for better readability and consistency. - Adds the option to configure the middle navigation action for multiple actions. - Refactors the navigation bar to be bottom or rail-style depending on screen size. - Adds support for a middle action button for navigation with multiple actions. - Improves handling of screen transition animations for the bottom navigation bar.

Commit:51827da
Author:jacobrein

- Feat: Add Middle Navigation Action Setting This commit adds a new setting to configure the middle navigation action for compact width devices. The setting allows users to choose between: - All - Notifications - Lists - Favorites - Search This setting is only visible on compact width devices and replaces the "Show All Screen" setting in those cases.

Commit:a38c221
Author:jacobrein

feat: Add theme color setting Adds a new setting to allow users to select a theme color. The setting includes options for dynamic, blue, red, green, yellow, cyan, magenta, and custom colors. This allows for greater customization of the app's appearance. Also updates several dependencies to their latest versions.

Commit:aaffb53
Author:jacobrein

- Update dependencies Update Compose to 1.7.0-beta07, Room to 2.7.0-alpha06, Navigation to 2.8.0-beta07, Paging to 3.3.2, and WorkManager to 2.9.1. Also add a setting to change the grid type.

Commit:ae02713
Author:jacobrein

- Adding Telephoto image loader as an option - Added Telephoto as an option to the ImageLoaderType enum in manga_settings.proto. - Implemented Telephoto image loading in ReaderComposeImage.kt. - Included Telephoto in the ImageLoaderSettings screen. - Trying Telephoto out.

Commit:97542ad
Author:jacobrein

- adding page curl!

Commit:bce6b61
Author:jacobrein

- updating lib - adding a flip pager to look like you are turning/flipping the page!

Commit:23d5ad0
Author:jacobrein

- adding option to use blur or not. There will probably be other things I need to fix but this is a good start - replacing some dependencies with the androidx version catalog!

Commit:6cc2ad0
Author:jacobrein

- updating to kotlin 2.0.0 stable! - Adding option to choose what Image Loader the user wants to use so I can see what works best

Commit:077a0f1
Author:jacobrein

- Adding option to use palette or not

Commit:9d9996b
Author:jacobrein

Adding amoled mode!

Commit:f39259c
Author:Jacob Rein

Adding proto settings to MangaWorld That includes settings for the start and middle actions for the reader top bar

Commit:7d812d9
Author:Jacob Rein

Cleaning up Adding a custom url addition only if custom bridge is installed

Commit:9452a51
Author:Jacob Rein

Adding a new setting Adding a bottom bar to the details screen so we can show and hide the header at the press of a button

Commit:ab8265b
Author:Jacob Rein

Adding a ListDetailPaneScaffold to the List screens. I want to play around with it and see if it's worth continuing with them

Commit:1b71e07
Author:Jacob Rein

Adding a grouped by source option to NotificationFragment.kt

Commit:875050c
Author:Jacob Rein

Starting to make use of protobuf