Handle Session Interaction
Nucleic-Session: B08BD1C3-178D-44BD-827A-331F72A95821 Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -109,10 +109,23 @@ private struct LockScreenView: View {
|
|||||||
// MARK: - Shared pieces
|
// MARK: - Shared pieces
|
||||||
|
|
||||||
/// One session: state glyph + title + "project · Backend" + a right-aligned status/diff.
|
/// One session: state glyph + title + "project · Backend" + a right-aligned status/diff.
|
||||||
|
///
|
||||||
|
/// Each row is its own tap target: wrapped in a `Link` to `nucleic://session/<id>`, so tapping a
|
||||||
|
/// specific session on the lock screen or expanded Dynamic Island opens *that* session — overriding
|
||||||
|
/// the activity-wide `widgetURL` (which still governs the header, churn footer, and empty space, and
|
||||||
|
/// remains the only tap target the compact/minimal presentations can offer).
|
||||||
private struct SessionRow: View {
|
private struct SessionRow: View {
|
||||||
let line: NucleicSessionAttributes.SessionLine
|
let line: NucleicSessionAttributes.SessionLine
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
if let url = NucleicDeepLink.session(line.id) {
|
||||||
|
Link(destination: url) { rowContent }
|
||||||
|
} else {
|
||||||
|
rowContent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private var rowContent: some View {
|
||||||
HStack(spacing: 8) {
|
HStack(spacing: 8) {
|
||||||
Image(systemName: ActivityPalette.glyph(line.kind))
|
Image(systemName: ActivityPalette.glyph(line.kind))
|
||||||
.font(.footnote)
|
.font(.footnote)
|
||||||
|
|||||||
Reference in New Issue
Block a user