stream_info(url) UniFFI suspend fn replaces NewPipeExtractor's StreamInfo.getInfo() for both VideoDetailViewModel and PlayerViewModel. One Rust round-trip drives the detail screen render AND the player's resolve(). The VideoDetailUiState.info field cached on detail load is reused by the Download dialog so we don't refetch. Deferred to U-3.5: - like_count (rustypipe's player() doesn't surface engagement data; a separate query is needed) - related (player() doesn't include 'up next'; comes from a separate endpoint). Kotlin gets empty list for now — RelatedRow handles it. Type quirks vs my initial guesses (caught by cargo check): - details.duration is u32, not Option<u32> - channel is split into channel_id + channel_name, not a struct - like_count doesn't exist at this query depth - VideoFormat::Webm (lowercase mb), VideoCodec::Avc1 (not H264) - video_only is a separate vec (video_only_streams), not a bool flag
34 lines
943 B
TOML
34 lines
943 B
TOML
# Straw Rust core — workspace.
|
|
# Hosts the JNI/UniFFI-exported library that replaces NewPipeExtractor.
|
|
#
|
|
# Builds via cargo-ndk for the four Android ABIs (arm64-v8a, armeabi-v7a,
|
|
# x86, x86_64). The Mozilla rust-android-gradle plugin wires this into the
|
|
# strawApp Gradle build so `./gradlew assembleDebug` produces a single APK
|
|
# with the .so files packed inside.
|
|
|
|
[workspace]
|
|
resolver = "2"
|
|
members = ["strawcore"]
|
|
|
|
[workspace.package]
|
|
edition = "2021"
|
|
license = "GPL-3.0-or-later"
|
|
authors = ["Sulkta-Coop"]
|
|
repository = "http://192.168.0.5:3001/Sulkta-Coop/straw"
|
|
|
|
[profile.release]
|
|
# Strip debug info, run thin LTO. APK size matters more than build time here.
|
|
strip = true
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
opt-level = "z"
|
|
|
|
# `url` crate for video-id extraction in stream.rs.
|
|
[workspace.dependencies]
|
|
url = "2"
|
|
|
|
[profile.dev]
|
|
# Keep debug builds fast — we're rebuilding constantly during U-1..U-5.
|
|
opt-level = 0
|
|
debug = 1
|