Strawcore — new channel_feed_rss(channel_url) and subscription_feed (bulk fan-out 50x via tokio buffer_unordered). Fetches the YouTube Atom RSS at /feeds/videos.xml?channel_id=UCxxx. Each call is ~50-150ms vs ~500ms for the InnerTube channel_info page-scrape. Deps added to strawcore wrapper Cargo.toml: reqwest (rustls-tls), quick-xml, futures. reqwest dedupes against strawcore-core's existing reqwest dep. App — SubscriptionFeedViewModel.fetchChannelInto swapped to channel_feed_rss. Parallelism cranked 12 -> 50 since each fetch is lightweight now. perChannelMax dropped 30 -> 15 (the RSS upstream cap is 15). RSS doesn't carry duration / viewCount / avatar — those backfill on tap-through via the existing streamInfo path. Avatar opportunistic-refresh dropped from this path (lazy-load on ChannelScreen open is enough). Hide-shorts content filter — new util/ContentFilter.kt with looksLikeShort() (URL /shorts/ match OR title contains '#shorts'/'#short'). Settings toggle defaults off. Filter applies at row-emit in SubsPane, SearchScreen, ChannelScreen. Paid + age-restricted stubs in place for vc=57 when strawcore-core gets the flags. Expected refresh time on 50 subs: ~30s sequential -> ~1s parallel-50 RSS. |
||
|---|---|---|
| .. | ||
| kotlin/com/sulkta/straw | ||
| res | ||
| AndroidManifest.xml | ||