mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-05-19 00:38:10 +00:00
Status detail animation finally right
This commit is contained in:
parent
c4e4339d4a
commit
1e5e1e864e
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -97,7 +97,7 @@ public struct StatusRowView: View {
|
|||
}
|
||||
}
|
||||
|
||||
if isFocused, isStatusDetailLoaded {
|
||||
if isFocused {
|
||||
StatusRowDetailView(viewModel: viewModel)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ struct StatusRowDetailView: View {
|
|||
AvatarView(url: account.avatar, size: .list)
|
||||
.padding(.leading, -4)
|
||||
}
|
||||
.transition(.scale)
|
||||
.transition(.opacity)
|
||||
}
|
||||
.padding(.leading, .layoutPadding)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue