diff --git a/Packages/Status/Sources/Status/Detail/StatusDetailView.swift b/Packages/Status/Sources/Status/Detail/StatusDetailView.swift index 7a5f62a6..00d35cf1 100644 --- a/Packages/Status/Sources/Status/Detail/StatusDetailView.swift +++ b/Packages/Status/Sources/Status/Detail/StatusDetailView.swift @@ -45,9 +45,8 @@ public struct StatusDetailView: View { case .loading: loadingDetailView - case let .display(statuses, date): - makeStatusesListView(statuses: statuses, date: date) - .id(date) + case let .display(statuses): + makeStatusesListView(statuses: statuses) if !isLoaded { loadingContextView @@ -101,7 +100,7 @@ public struct StatusDetailView: View { .navigationBarTitleDisplayMode(.inline) } - private func makeStatusesListView(statuses: [Status], date _: Date) -> some View { + private func makeStatusesListView(statuses: [Status]) -> some View { ForEach(statuses) { status in let isReplyToPrevious = viewModel.isReplyToPreviousCache[status.id] ?? false let viewModel: StatusRowViewModel = .init(status: status, diff --git a/Packages/Status/Sources/Status/Detail/StatusDetailViewModel.swift b/Packages/Status/Sources/Status/Detail/StatusDetailViewModel.swift index a104ad50..5ec0a4fe 100644 --- a/Packages/Status/Sources/Status/Detail/StatusDetailViewModel.swift +++ b/Packages/Status/Sources/Status/Detail/StatusDetailViewModel.swift @@ -13,7 +13,7 @@ import SwiftUI var routerPath: RouterPath? enum State { - case loading, display(statuses: [Status], date: Date), error(error: Error) + case loading, display(statuses: [Status]), error(error: Error) } var state: State = .loading @@ -29,7 +29,7 @@ import SwiftUI } init(status: Status) { - state = .display(statuses: [status], date: Date()) + state = .display(statuses: [status]) title = "status.post-from-\(status.account.displayNameWithoutEmojis)" statusId = status.id remoteStatusURL = nil @@ -86,11 +86,11 @@ import SwiftUI if animate { withAnimation { - state = .display(statuses: statuses, date: Date()) + state = .display(statuses: statuses) isLoadingContext = false } } else { - state = .display(statuses: statuses, date: Date()) + state = .display(statuses: statuses) isLoadingContext = false scrollToId = statusId } diff --git a/Packages/Status/Sources/Status/Row/StatusRowView.swift b/Packages/Status/Sources/Status/Row/StatusRowView.swift index 22e52e2f..61c89672 100644 --- a/Packages/Status/Sources/Status/Row/StatusRowView.swift +++ b/Packages/Status/Sources/Status/Row/StatusRowView.swift @@ -97,7 +97,7 @@ public struct StatusRowView: View { } } - if isFocused, isStatusDetailLoaded { + if isFocused { StatusRowDetailView(viewModel: viewModel) } } diff --git a/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift b/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift index ee225e5b..dc940540 100644 --- a/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift +++ b/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift @@ -288,12 +288,12 @@ import SwiftUI func fetchActionsAccounts() async { guard !actionsAccountsFetched else { return } do { - withAnimation(.snappy) { + withAnimation(.smooth) { actionsAccountsFetched = true } let favoriters: [Account] = try await client.get(endpoint: Statuses.favoritedBy(id: status.id, maxId: nil)) let rebloggers: [Account] = try await client.get(endpoint: Statuses.rebloggedBy(id: status.id, maxId: nil)) - withAnimation(.snappy) { + withAnimation(.smooth) { self.favoriters = favoriters self.rebloggers = rebloggers } diff --git a/Packages/Status/Sources/Status/Row/Subviews/StatusRowDetailView.swift b/Packages/Status/Sources/Status/Row/Subviews/StatusRowDetailView.swift index 38a3c11c..7e742943 100644 --- a/Packages/Status/Sources/Status/Row/Subviews/StatusRowDetailView.swift +++ b/Packages/Status/Sources/Status/Row/Subviews/StatusRowDetailView.swift @@ -106,7 +106,7 @@ struct StatusRowDetailView: View { AvatarView(url: account.avatar, size: .list) .padding(.leading, -4) } - .transition(.scale) + .transition(.opacity) } .padding(.leading, .layoutPadding) }