wolfskin/app/src/main/proto/WholphinDataStore.proto
Damontecres f01c5d367c
Updates to session restoration (#1905)
## Description
This PR reworks some of the internal handling of changing users and auto
sign in.

1. Most recently used server/user is migrated from `AppPreferences` to
`MostRecentServerProvider`
2. Checking if a user profile is protected occurs at a lower level in
`ServerRepository` so fewer services need to check for this
3. Now always defaults to the most recent server's user list in cases
where the most recent user can't be switched to such as if the profile
is protected, auto signin is disabled, or and error occurred

The default implementation for `MostRecentServerProvider` uses Android's
`SharedPreferences`. `SharedPreferences` was already was being used to
track the most recent server for crash reporting (the crash reporting
process cannot use the Hilt DI). This PR enhances this and adds a better
API for saving/retrieving.

This also removes the last bit of "user specific" data from
`AppPreferences`.

### Related issues
None specific, but there have been a few related to auto sign-in &
intents that were recently fixed. This PR is a more detailed approach to
those same problems.

### Testing
Manually via the emulator. There are also unit tests for most (all?) of
the different settings and state combinations.

## Screenshots
N/A

## AI or LLM usage
None
2026-10-11 20:11:09 -04:00

252 lines
5.5 KiB
Protocol Buffer

syntax = "proto3";
option java_package = "com.github.damontecres.wholphin.preferences";
option java_multiple_files = true;
enum ShowNextUpWhen{
END_OF_PLAYBACK = 0;
DURING_CREDITS = 1;
NEXT_UP_NEVER = 2;
}
enum SkipSegmentBehavior{
IGNORE = 0;
AUTO_SKIP = 1;
ASK_TO_SKIP = 2;
}
enum PrefContentScale{
FIT = 0;
NONE = 1;
CROP = 2;
FILL = 3;
Fill_WIDTH = 4;
FILL_HEIGHT = 5;
}
enum MediaExtensionStatus{
MES_FALLBACK = 0;
MES_PREFERRED = 1;
MES_DISABLED = 2;
}
enum PlayerBackend{
EXO_PLAYER = 0;
MPV = 1;
PREFER_MPV = 2;
EXTERNAL_PLAYER = 3;
}
message MpvOptions{
bool enable_hardware_decoding = 1;
bool use_gpu_next = 2;
}
enum AssPlaybackMode{
ASS_LIBASS = 0;
ASS_EXO_PLAYER = 1;
ASS_TRANSCODE = 2;
}
message PlaybackOverrides{
bool ac3_supported = 1;
bool downmix_stereo = 2;
bool direct_play_ass = 3 [deprecated = true];
bool direct_play_pgs = 4;
MediaExtensionStatus media_extensions_enabled = 5;
bool direct_play_dolby_vision_e_l = 6;
bool decode_av1 = 7;
AssPlaybackMode ass_playback_mode = 8;
int32 max_resolution = 9;
}
message PlaybackPreferences {
int64 skip_forward_ms = 1;
int64 skip_back_ms = 2;
int64 controller_timeout_ms = 3;
int32 seek_bar_steps = 4;
bool show_debug_info = 5;
bool auto_play_next = 6;
int64 auto_play_next_delay_seconds = 7;
int64 skip_back_on_resume_seconds = 8;
int64 max_bitrate = 9;
SkipSegmentBehavior skip_intros = 10;
SkipSegmentBehavior skip_outros = 11;
SkipSegmentBehavior skip_commercials = 12;
SkipSegmentBehavior skip_recaps = 13;
SkipSegmentBehavior skip_previews = 14;
PlaybackOverrides overrides = 15;
int64 pass_out_protection_ms = 16;
PrefContentScale global_content_scale = 17;
ShowNextUpWhen show_next_up_when = 18;
bool one_click_pause = 19;
PlayerBackend player_backend = 20;
MpvOptions mpv_options = 21;
bool refresh_rate_switching = 22;
bool resolution_switching = 23;
string external_player = 24;
bool cinema_mode = 25;
DpadSeekMode dpad_seek_mode = 26;
}
enum DpadSeekMode {
SEEKBAR_MINIMAL = 0;
SEEKBAR_TRICKPLAY = 1;
SEEKBAR_NONE = 2;
}
message HomePagePreferences{
int32 max_items_per_row = 1;
bool enable_rewatching_next_up = 2;
bool combine_continue_next = 3 [deprecated = true];
int32 max_days_next_up = 4;
bool click_to_play = 5;
}
enum ThemeSongVolume {
DISABLED = 0;
LOWEST = 1;
LOW = 2;
MEDIUM = 3;
HIGH = 4;
HIGHEST = 5;
}
enum AppThemeColors {
PURPLE = 0;
BLUE = 1;
GREEN = 2;
ORANGE = 3;
BOLD_BLUE = 4;
OLED_BLACK = 5;
RED = 6;
BROWN = 7;
}
enum EdgeStyle{
EDGE_NONE = 0;
EDGE_SOLID = 1;
EDGE_SHADOW = 2;
}
enum BackgroundStyle{
BG_NONE = 0;
BG_WRAP = 1;
BG_BOXED = 2;
}
message SubtitlePreferences{
int32 font_size = 1;
int32 font_color = 2;
int32 font_opacity = 3;
int32 edge_color = 4;
EdgeStyle edge_style = 5;
int32 background_color = 6;
int32 background_opacity = 7;
BackgroundStyle background_style = 8;
bool font_bold = 9;
bool font_italic = 10;
int32 margin = 11;
int32 edge_thickness = 12;
int32 image_subtitle_opacity = 13;
bool use_separate_hdr = 14;
}
message LiveTvPreferences {
bool show_header = 1;
bool favorite_channels_at_beginning = 2;
bool sort_by_recently_watched = 3;
bool color_code_programs = 4;
}
enum BackdropStyle{
BACKDROP_DYNAMIC_COLOR = 0;
BACKDROP_IMAGE_ONLY = 1;
BACKDROP_NONE = 2;
}
message ScreensaverPreferences{
int64 start_delay = 1;
int64 duration = 2;
bool animate = 3;
int32 max_age_filter = 4;
bool enabled = 5;
repeated string item_types = 6;
bool show_clock = 7;
bool dim_enabled = 8;
int32 dim_percent = 9;
}
message SearchPreferences {
bool combined_search_results = 1;
bool show_voice_search_button = 2;
}
enum DisplayToggle{
OFFICIAL_RATING = 0;
CRITIC_RATING = 1;
COMMUNITY_RATING = 2;
}
message InterfacePreferences {
ThemeSongVolume play_theme_songs = 1;
bool remember_selected_tab = 2;
map<string, int32> remembered_tabs = 3 [deprecated = true];
AppThemeColors app_theme_colors = 4;
bool nav_drawer_switch_on_focus = 5;
bool show_clock = 6;
SubtitlePreferences subtitles_preferences = 7;
LiveTvPreferences live_tv_preferences = 8;
BackdropStyle backdrop_style = 9;
SubtitlePreferences hdr_subtitles_preferences = 10;
ScreensaverPreferences screensaver_preference = 11;
bool enable_media_management = 12;
bool show_logos = 13;
SearchPreferences search_preferences = 14;
repeated DisplayToggle display_toggles = 15;
}
message AdvancedPreferences {
int64 image_disk_cache_size_bytes = 1;
}
message PhotoPreferences{
int64 slideshow_duration = 1;
bool slideshow_play_videos = 2;
}
message MusicPreferences {
bool show_lyrics = 1;
bool show_visualizer = 2;
bool show_album_Art = 3;
bool show_backdrop = 4;
}
message ExperimentalPreferences {
bool enabled = 1;
bool video_tunneling_enabled = 2;
bool prefer_ac3_surround = 3;
bool disable_audio_offload = 4;
bool prefer_dolby_vision_over_hdr10_plus = 5;
}
message AppPreferences {
string current_server_id = 1 [deprecated = true];
string current_user_id = 2 [deprecated = true];
PlaybackPreferences playback_preferences = 3;
HomePagePreferences home_page_preferences = 4;
InterfacePreferences interface_preferences = 5;
bool auto_check_for_updates = 6;
string update_url = 7;
bool send_crash_reports = 8;
bool debug_logging = 9;
AdvancedPreferences advanced_preferences = 10;
bool sign_in_automatically = 11;
PhotoPreferences photo_preferences = 12;
MusicPreferences music_preferences = 13;
ExperimentalPreferences experimental_preferences = 14;
}