v0.1.0-Z (vc=14): VideoDetail to YT-standard order
Under the thumbnail: title → uploader → chips → buttons → description → Recommended → More from <uploader>. The Z2/W2 inverted layout shipped in Y put discovery cards before the title — bad UX, fixed back to standard. Inline player coming next.
This commit is contained in:
parent
94ef84f1ac
commit
75329867e9
2 changed files with 38 additions and 37 deletions
|
|
@ -15,6 +15,6 @@ const val NEWPIPE_APPLICATION_ID_OLD = "org.schabi.newpipe"
|
|||
const val NEWPIPE_APPLICATION_ID_NEW = "net.newpipe.app"
|
||||
|
||||
// Sulkta fork — Straw
|
||||
const val STRAW_VERSION_CODE = 13
|
||||
const val STRAW_VERSION_NAME = "0.1.0-Y"
|
||||
const val STRAW_VERSION_CODE = 14
|
||||
const val STRAW_VERSION_NAME = "0.1.0-Z"
|
||||
const val STRAW_APPLICATION_ID = "com.sulkta.straw"
|
||||
|
|
|
|||
|
|
@ -123,40 +123,9 @@ fun VideoDetailScreen(
|
|||
)
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(20.dp))
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
|
||||
// ── Recommended ──────────────────────────────────────────
|
||||
if (d.related.isNotEmpty()) {
|
||||
Text(
|
||||
"Recommended",
|
||||
style = MaterialTheme.typography.titleSmall,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
d.related.take(20).forEach { rel ->
|
||||
RelatedRow(rel) { onOpenVideo(rel.url, rel.title) }
|
||||
androidx.compose.material3.HorizontalDivider()
|
||||
}
|
||||
Spacer(modifier = Modifier.height(20.dp))
|
||||
}
|
||||
|
||||
// ── More from <uploader> ─────────────────────────────────
|
||||
if (d.moreFromChannel.isNotEmpty()) {
|
||||
Text(
|
||||
if (d.uploader.isBlank()) "More from this channel"
|
||||
else "More from ${d.uploader}",
|
||||
style = MaterialTheme.typography.titleSmall,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
d.moreFromChannel.take(20).forEach { item ->
|
||||
RelatedRow(item) { onOpenVideo(item.url, item.title) }
|
||||
androidx.compose.material3.HorizontalDivider()
|
||||
}
|
||||
Spacer(modifier = Modifier.height(20.dp))
|
||||
}
|
||||
|
||||
// ── Video details ────────────────────────────────────────
|
||||
// ── Title + uploader ─────────────────────────────────────
|
||||
Text(
|
||||
text = d.title,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
|
|
@ -174,7 +143,7 @@ fun VideoDetailScreen(
|
|||
)
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
|
||||
// Engagement row: views + RYD likes/dislikes
|
||||
// ── Engagement row: views + RYD likes/dislikes ───────────
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
|
|
@ -222,8 +191,9 @@ fun VideoDetailScreen(
|
|||
Text("Download")
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
Spacer(modifier = Modifier.height(20.dp))
|
||||
|
||||
// ── Description ──────────────────────────────────────────
|
||||
Text("Description", style = MaterialTheme.typography.titleSmall, fontWeight = FontWeight.SemiBold)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
// AUD-MED: cap input length before regex passes — defends
|
||||
|
|
@ -233,6 +203,37 @@ fun VideoDetailScreen(
|
|||
style = MaterialTheme.typography.bodySmall,
|
||||
)
|
||||
|
||||
// ── Recommended ──────────────────────────────────────────
|
||||
if (d.related.isNotEmpty()) {
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Text(
|
||||
"Recommended",
|
||||
style = MaterialTheme.typography.titleSmall,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
d.related.take(20).forEach { rel ->
|
||||
RelatedRow(rel) { onOpenVideo(rel.url, rel.title) }
|
||||
androidx.compose.material3.HorizontalDivider()
|
||||
}
|
||||
}
|
||||
|
||||
// ── More from <uploader> ─────────────────────────────────
|
||||
if (d.moreFromChannel.isNotEmpty()) {
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Text(
|
||||
if (d.uploader.isBlank()) "More from this channel"
|
||||
else "More from ${d.uploader}",
|
||||
style = MaterialTheme.typography.titleSmall,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
d.moreFromChannel.take(20).forEach { item ->
|
||||
RelatedRow(item) { onOpenVideo(item.url, item.title) }
|
||||
androidx.compose.material3.HorizontalDivider()
|
||||
}
|
||||
}
|
||||
|
||||
if (showDownloadDialog) {
|
||||
val info = state.streamInfo
|
||||
AlertDialog(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue