#19 Fix refreshing comments after publishing new one
This commit is contained in:
parent
67d393c272
commit
ab78314f95
|
@ -47,8 +47,8 @@ import ClientKit
|
|||
/// Amount of new statuses which are not displayed yet to the user.
|
||||
public var amountOfNewStatuses = 0
|
||||
|
||||
/// Model for newly created comment.
|
||||
public var newComment: CommentModel?
|
||||
/// Id of latest published status by the user.
|
||||
public var latestPublishedStatusId: String?
|
||||
|
||||
/// Active icon name.
|
||||
public var activeIcon = "Default"
|
||||
|
|
|
@ -36,10 +36,12 @@ struct CommentsSectionView: View {
|
|||
|
||||
if self.applicationState.showInteractionStatusId == commentViewModel.status.id {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
InteractionRow(statusModel: commentViewModel.status)
|
||||
.foregroundColor(self.getInteractionRowTextColor())
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.vertical, 8)
|
||||
InteractionRow(statusModel: commentViewModel.status) {
|
||||
self.reloadComments()
|
||||
}
|
||||
.foregroundColor(self.getInteractionRowTextColor())
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.vertical, 8)
|
||||
}
|
||||
.background(Color.customGrayColor.opacity(0.5))
|
||||
.transition(AnyTransition.move(edge: .top).combined(with: .opacity))
|
||||
|
@ -54,11 +56,8 @@ struct CommentsSectionView: View {
|
|||
}
|
||||
}
|
||||
}
|
||||
.onChange(of: self.applicationState.newComment) {
|
||||
self.commentViewModels = nil
|
||||
Task {
|
||||
await self.loadComments()
|
||||
}
|
||||
.onChange(of: self.applicationState.latestPublishedStatusId) {
|
||||
self.reloadComments()
|
||||
}
|
||||
.task {
|
||||
await self.loadComments()
|
||||
|
@ -71,9 +70,25 @@ struct CommentsSectionView: View {
|
|||
|
||||
private func loadComments() async {
|
||||
do {
|
||||
self.commentViewModels = try await self.client.statuses?.comments(to: statusId) ?? []
|
||||
let comments = try await self.client.statuses?.comments(to: statusId) ?? []
|
||||
withAnimation {
|
||||
self.commentViewModels = comments
|
||||
}
|
||||
} catch {
|
||||
ErrorService.shared.handle(error, message: "status.error.loadingCommentsFailed", showToastr: !Task.isCancelled)
|
||||
}
|
||||
}
|
||||
|
||||
private func reloadComments() {
|
||||
withAnimation {
|
||||
self.commentViewModels = nil
|
||||
}
|
||||
|
||||
// We have to download status after some time (when we ask strigt away we don't have ne comment in the list).
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
|
||||
Task { @MainActor in
|
||||
await self.loadComments()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -728,7 +728,11 @@ public struct BaseComposeView: View {
|
|||
private func sendToServer() async {
|
||||
do {
|
||||
let status = self.createStatus()
|
||||
if try await self.client.statuses?.new(status: status) != nil {
|
||||
if let status = try await self.client.statuses?.new(status: status) {
|
||||
print("Status: \(status.id)")
|
||||
self.applicationState.latestPublishedStatusId = status.id
|
||||
self.applicationState.showInteractionStatusId = String.empty()
|
||||
|
||||
self.close()
|
||||
}
|
||||
} catch {
|
||||
|
|
Loading…
Reference in New Issue