diff --git a/Packages/Features/Sources/Recording/RecordingView.swift b/Packages/Features/Sources/Recording/RecordingView.swift index 89292b3..8aa5839 100644 --- a/Packages/Features/Sources/Recording/RecordingView.swift +++ b/Packages/Features/Sources/Recording/RecordingView.swift @@ -29,7 +29,15 @@ public struct RecordingView: View { spacing: Constant.Spacing.stack ) { if model.shouldShowTimer { - Text(model.timerText) + Text(model.textTimer) + .font(.largeTitle) + .fontWeight(.bold) + .monospacedDigit() + .contentTransition(.numericText()) + .animation( + .easeInOut, + value: model.textTimer + ) } HStack( @@ -80,7 +88,7 @@ private enum Constant { /// The spacing constants. enum Spacing { /// The spacing between the elements of a stack. - static let stack: CGFloat = 16 + static let stack: CGFloat = 8 } } diff --git a/Packages/Features/Sources/Recording/RecordingViewModel.swift b/Packages/Features/Sources/Recording/RecordingViewModel.swift index 498022b..e5cf0dd 100644 --- a/Packages/Features/Sources/Recording/RecordingViewModel.swift +++ b/Packages/Features/Sources/Recording/RecordingViewModel.swift @@ -63,7 +63,7 @@ extension RecordingView { } /// The elapsed recording time, formatted as `mm:ss` for the timer label. - var timerText: String { + var textTimer: String { Duration .seconds(secondsElapsed) .formatted(.time(pattern: .minuteSecond(padMinuteToLength: 2))) diff --git a/Packages/Features/Tests/Recording/RecordingViewModelTests.swift b/Packages/Features/Tests/Recording/RecordingViewModelTests.swift index df7b431..610c1c3 100644 --- a/Packages/Features/Tests/Recording/RecordingViewModelTests.swift +++ b/Packages/Features/Tests/Recording/RecordingViewModelTests.swift @@ -19,7 +19,7 @@ struct RecordingViewModelTests { #expect(model.state == .notRecording) #expect(model.secondsElapsed == 0) - #expect(model.timerText == "00:00") + #expect(model.textTimer == "00:00") } } @@ -179,7 +179,7 @@ struct RecordingViewModelTests { try await Task.sleep(for: .seconds(1.2)) #expect(model.secondsElapsed >= 1) - #expect(model.timerText == "00:01") + #expect(model.textTimer == "00:01") model.state = .notRecording model.updatedState(shouldRestartTimer: false)