Add expiration handling in LockScreenLiveActivityView for improved user feedback

This commit is contained in:
2026-03-13 08:11:02 +01:00
parent c301b62d37
commit 0dc6cd915c

View File

@@ -51,6 +51,10 @@ extension Color {
struct LockScreenLiveActivityView: View {
let context: ActivityViewContext<LiveActivitiesAppAttributes>
private var isExpired: Bool {
context.state.endDate <= Date()
}
private var hasNextLesson: Bool {
!context.state.nextSubject.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
}
@@ -124,15 +128,26 @@ struct LockScreenLiveActivityView: View {
Spacer(minLength: 4)
// Visszaszámláló
Text(timerInterval: context.state.date, countsDown: true)
.multilineTextAlignment(.trailing)
.frame(minWidth: 86, maxWidth: 100, alignment: .trailing)
.font(countdownFont)
.monospacedDigit()
.lineLimit(1)
.minimumScaleFactor(0.75)
.layoutPriority(1)
.padding(.trailing, 16)
if isExpired {
Text("Vége")
.multilineTextAlignment(.trailing)
.frame(minWidth: 86, maxWidth: 100, alignment: .trailing)
.font(.headline)
.lineLimit(1)
.minimumScaleFactor(0.75)
.layoutPriority(1)
.padding(.trailing, 16)
} else {
Text(timerInterval: context.state.date, countsDown: true)
.multilineTextAlignment(.trailing)
.frame(minWidth: 86, maxWidth: 100, alignment: .trailing)
.font(countdownFont)
.monospacedDigit()
.lineLimit(1)
.minimumScaleFactor(0.75)
.layoutPriority(1)
.padding(.trailing, 16)
}
}
// .activityBackgroundTint(
// context.state.color != "#676767"
@@ -256,13 +271,22 @@ struct LiveCardWidget: Widget {
Image(systemName: context.state.icon)
}
compactTrailing: {
Text(timerInterval: context.state.date, countsDown: true)
.multilineTextAlignment(.center)
.frame(width: 52)
.font(.caption2)
.monospacedDigit()
.lineLimit(1)
.minimumScaleFactor(0.7)
if context.state.endDate <= Date() {
Text("Vége")
.multilineTextAlignment(.center)
.frame(width: 52)
.font(.caption2)
.lineLimit(1)
.minimumScaleFactor(0.7)
} else {
Text(timerInterval: context.state.date, countsDown: true)
.multilineTextAlignment(.center)
.frame(width: 52)
.font(.caption2)
.monospacedDigit()
.lineLimit(1)
.minimumScaleFactor(0.7)
}
/// Collapsed
} minimal: {