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