mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-04 16:57:00 +01:00
feat(core,app,android,ios): more like this and browse by genre, studio, person
pstr_core::discover scores every title against another by shared director, studio, genres, leading tags and format, leaves out its own franchise and keeps one title per other franchise. It drives a "More like this" row under a title's episodes and, seeded by the title most recently watched to the end, a "Because you watched" row on the library of titles not yet started. Genre chips on the title page now open a page of every title with that genre, and the studios and director move from the line of facts onto chips of their own that do the same. The desktop has a Browse page whose back link returns to the title; Android and iOS show it over the library pane. The bridge exposes more_like, browse and facet_kind. Also moves a doc comment the My List commit left on the wrong function.
This commit is contained in:
1 parent
f66faf6b75
commit
fafe0c3087
23 files changed
+1139
-92
No files matched your search
@@ -420,19 +420,33 @@ struct StatusChip: View {
|
||||
}
|
||||
}
|
||||
|
||||
/// Something the title is filed under — a genre — as a small rounded label.
|
||||
/// Android's `GenreChip`.
|
||||
/// Something the title is filed under — a genre, a studio — as a small rounded
|
||||
/// label, which opens every title sharing it when given an action. Android's
|
||||
/// `GenreChip`.
|
||||
struct GenreChip: View {
|
||||
@Environment(\.scheme) private var scheme
|
||||
let text: String
|
||||
var action: (() -> Void)?
|
||||
|
||||
init(text: String, action: (() -> Void)? = nil) {
|
||||
self.text = text
|
||||
self.action = action
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
Text(text)
|
||||
let label = Text(text)
|
||||
.textStyle(.labelMedium)
|
||||
.foregroundStyle(scheme.onSurface)
|
||||
.padding(.horizontal, 10)
|
||||
.padding(.vertical, 4)
|
||||
.background(scheme.surfaceVariant, in: RoundedRectangle(cornerRadius: 12))
|
||||
if let action {
|
||||
Button(action: action) { label }
|
||||
.buttonStyle(.plain)
|
||||
.accessibilityHint("Browse \(text)")
|
||||
} else {
|
||||
label
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user