Skip to content

Commit

Permalink
fix: add missing model fields for android
Browse files Browse the repository at this point in the history
Signed-off-by: Lachezar Lechev <[email protected]>
  • Loading branch information
elpiel committed Sep 13, 2024
1 parent cf337c5 commit 0b1f3cc
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 30 deletions.
14 changes: 10 additions & 4 deletions src/commonMain/rust/bridge/android_model_field.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,17 @@ impl FromProtobuf<AndroidModelField> for Field {
match self {
Field::Ctx => AndroidModelField::Ctx,
Field::AuthLink => AndroidModelField::AuthLink,
Field::DataExport => AndroidModelField::DataExport,
Field::ContinueWatchingPreview => AndroidModelField::ContinueWatchingPreview,
Field::Board => AndroidModelField::Board,
Field::Discover => AndroidModelField::Discover,
Field::Library => AndroidModelField::Library,
Field::LibraryByType => AndroidModelField::LibraryByType,
Field::Board => AndroidModelField::Board,
Field::ContinueWatching => AndroidModelField::ContinueWatching,
Field::Search => AndroidModelField::Search,
Field::MetaDetails => AndroidModelField::MetaDetails,
Field::LocalSearch => AndroidModelField::LocalSearch,
Field::Addons => AndroidModelField::Addons,
Field::MetaDetails => AndroidModelField::MetaDetails,
Field::AddonDetails => AndroidModelField::AddonDetails,
Field::StreamingServer => AndroidModelField::StreamingServer,
Field::Player => AndroidModelField::Player,
Expand All @@ -42,14 +45,17 @@ impl ToProtobuf<Field, ()> for AndroidModelField {
match self {
AndroidModelField::Ctx => Field::Ctx,
AndroidModelField::AuthLink => Field::AuthLink,
AndroidModelField::DataExport => Field::DataExport,
AndroidModelField::ContinueWatchingPreview => Field::ContinueWatchingPreview,
AndroidModelField::Board => Field::Board,
AndroidModelField::Discover => Field::Discover,
AndroidModelField::Library => Field::Library,
AndroidModelField::LibraryByType => Field::LibraryByType,
AndroidModelField::Board => Field::Board,
AndroidModelField::ContinueWatching => Field::ContinueWatching,
AndroidModelField::Search => Field::Search,
AndroidModelField::MetaDetails => Field::MetaDetails,
AndroidModelField::LocalSearch => Field::LocalSearch,
AndroidModelField::Addons => Field::Addons,
AndroidModelField::MetaDetails => Field::MetaDetails,
AndroidModelField::AddonDetails => Field::AddonDetails,
AndroidModelField::StreamingServer => Field::StreamingServer,
AndroidModelField::Player => Field::Player,
Expand Down
85 changes: 59 additions & 26 deletions src/commonMain/rust/model/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ use stremio_core::{
catalogs_with_extra::CatalogsWithExtra,
continue_watching_preview::ContinueWatchingPreview,
ctx::Ctx,
data_export::DataExport,
library_by_type::LibraryByType,
library_with_filters::{LibraryWithFilters, NotRemovedFilter},
library_with_filters::{ContinueWatchingFilter, LibraryWithFilters, NotRemovedFilter},
link::Link,
local_search::LocalSearch,
meta_details::MetaDetails,
player::Player,
streaming_server::StreamingServer,
Expand All @@ -31,14 +33,19 @@ use crate::{bridge::ToProtobuf, env::AndroidEnv};
pub struct AndroidModel {
pub ctx: Ctx,
pub auth_link: Link<LinkAuthKey>,
pub data_export: DataExport,
pub continue_watching_preview: ContinueWatchingPreview,
pub board: CatalogsWithExtra,
pub discover: CatalogWithFilters<MetaItemPreview>,
pub library: LibraryWithFilters<NotRemovedFilter>,
pub library_by_type: LibraryByType<NotRemovedFilter>,
pub board: CatalogsWithExtra,
pub continue_watching: LibraryWithFilters<ContinueWatchingFilter>,
pub search: CatalogsWithExtra,
pub meta_details: MetaDetails,
/// Pre-loaded results for local search
pub local_search: LocalSearch,
/// contains the remote and installed addons
pub addons: AddonsWithFilters,
pub meta_details: MetaDetails,
pub addon_details: AddonDetails,
pub streaming_server: StreamingServer,
pub player: Player,
Expand All @@ -56,29 +63,34 @@ impl AndroidModel {
let (continue_watching_preview, continue_watching_preview_effects) =
ContinueWatchingPreview::new(&library, &notifications);

let ctx = Ctx::new(
profile,
library,
streams,
notifications,
search_history,
dismissed_events,
);

let (discover, discover_effects) = CatalogWithFilters::<MetaItemPreview>::new(&ctx.profile);
let (discover, discover_effects) = CatalogWithFilters::<MetaItemPreview>::new(&profile);
let (library_, library_effects) =
LibraryWithFilters::<NotRemovedFilter>::new(&ctx.library, &ctx.notifications);
LibraryWithFilters::<NotRemovedFilter>::new(&library, &notifications);
let (library_by_type, library_by_type_effects) = LibraryByType::<NotRemovedFilter>::new();
let (addons, addons_effects) = AddonsWithFilters::new(&ctx.profile);
let (continue_watching, continue_watching_effects) =
LibraryWithFilters::<ContinueWatchingFilter>::new(&library, &notifications);
let (addons, addons_effects) = AddonsWithFilters::new(&profile);
let (streaming_server, streaming_server_effects) =
StreamingServer::new::<AndroidEnv>(&ctx.profile);
StreamingServer::new::<AndroidEnv>(&profile);
let (local_search, local_search_effects) = LocalSearch::new::<AndroidEnv>();

let model = AndroidModel {
ctx,
ctx: Ctx::new(
profile,
library,
streams,
notifications,
search_history,
dismissed_events,
),
auth_link: Default::default(),
data_export: Default::default(),
local_search,
continue_watching_preview,
discover,
library: library_,
library_by_type,
continue_watching,
board: Default::default(),
search: Default::default(),
meta_details: Default::default(),
Expand All @@ -93,8 +105,10 @@ impl AndroidModel {
.join(discover_effects)
.join(library_effects)
.join(library_by_type_effects)
.join(continue_watching_effects)
.join(addons_effects)
.join(streaming_server_effects),
.join(streaming_server_effects)
.join(local_search_effects),
)
}

Expand All @@ -105,10 +119,22 @@ impl AndroidModel {
.auth_link
.to_protobuf::<AndroidEnv>(&())
.encode_to_vec(),
AndroidModelField::DataExport => {
unimplemented!("You've requested unimplemented field: DataExport")
// self.data_export.to_protobuf::<AndroidEnv>(&()).encode_to_vec()
}
AndroidModelField::ContinueWatchingPreview => self
.continue_watching_preview
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Board => self
.board
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Discover => self
.discover
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Library => self
.library
.to_protobuf::<AndroidEnv>(&self.ctx)
Expand All @@ -117,26 +143,29 @@ impl AndroidModel {
.library_by_type
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Board => self
.board
AndroidModelField::ContinueWatching => self
.continue_watching
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Search => self
.search
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Discover => self
.discover
AndroidModelField::LocalSearch => {
unimplemented!("You've requested unimplemented field: LocalSearch")
// self
// .local_search
// .to_protobuf::<AndroidEnv>(&self.ctx)
// .encode_to_vec()
}
AndroidModelField::Addons => self
.addons
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::MetaDetails => self
.meta_details
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::Addons => self
.addons
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),
AndroidModelField::AddonDetails => self
.addon_details
.to_protobuf::<AndroidEnv>(&self.ctx)
Expand All @@ -149,6 +178,10 @@ impl AndroidModel {
.player
.to_protobuf::<AndroidEnv>(&self.ctx)
.encode_to_vec(),

// guard against new fields being added to the CSharp model
#[allow(unreachable_patterns)]
_ => unimplemented!("You've requested unimplemented field"),
}
}
}

0 comments on commit 0b1f3cc

Please sign in to comment.