메시지 추가 로딩 되지 않는 버그 수정
This commit is contained in:
parent
9863fc66de
commit
3bcd2b7dba
|
@ -22,7 +22,8 @@ struct TextMessageView: View {
|
|||
ScrollView(.vertical, showsIndicators: false) {
|
||||
if viewModel.items.count > 0 {
|
||||
LazyVStack(spacing: 26.7) {
|
||||
ForEach(viewModel.items, id: \.self) { item in
|
||||
ForEach(0..<viewModel.items.count, id: \.self) { index in
|
||||
let item = viewModel.items[index]
|
||||
TextMessageItemView(item: item)
|
||||
.frame(width: screenSize().width - 26.7)
|
||||
.contentShape(Rectangle())
|
||||
|
@ -33,6 +34,7 @@ struct TextMessageView: View {
|
|||
messageBox: viewModel.currentFilter,
|
||||
refresh: {
|
||||
viewModel.page = 1
|
||||
viewModel.isLast = false
|
||||
switch viewModel.currentFilter {
|
||||
case .receive:
|
||||
viewModel.getReceivedTextMessage()
|
||||
|
@ -45,6 +47,18 @@ struct TextMessageView: View {
|
|||
)
|
||||
)
|
||||
}
|
||||
.onAppear {
|
||||
if index == viewModel.items.count - 1 && !viewModel.isLast {
|
||||
switch viewModel.currentFilter {
|
||||
case .receive:
|
||||
viewModel.getReceivedTextMessage()
|
||||
case .sent:
|
||||
viewModel.getSentTextMessage()
|
||||
case .keep:
|
||||
viewModel.getKeepTextMessage()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.top, 26.7)
|
||||
|
|
|
@ -21,6 +21,7 @@ final class TextMessageViewModel: ObservableObject {
|
|||
@Published var currentFilter: MessageFilterTab = .receive {
|
||||
willSet(newVal) {
|
||||
page = 1
|
||||
isLast = false
|
||||
|
||||
switch newVal {
|
||||
case .receive:
|
||||
|
@ -43,6 +44,7 @@ final class TextMessageViewModel: ObservableObject {
|
|||
|
||||
let placeholder = "내용을 입력해 주세요."
|
||||
|
||||
var isLast = false
|
||||
var page = 1
|
||||
private let size = 10
|
||||
|
||||
|
@ -128,7 +130,12 @@ final class TextMessageViewModel: ObservableObject {
|
|||
let decoded = try jsonDecoder.decode(ApiResponse<GetTextMessageResponse>.self, from: responseData)
|
||||
|
||||
if let data = decoded.data, decoded.success {
|
||||
self.items.append(contentsOf: data.items)
|
||||
if data.items.count <= 0 {
|
||||
self.isLast = true
|
||||
} else {
|
||||
self.items.append(contentsOf: data.items)
|
||||
self.page += 1
|
||||
}
|
||||
} else {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
|
@ -171,7 +178,12 @@ final class TextMessageViewModel: ObservableObject {
|
|||
let decoded = try jsonDecoder.decode(ApiResponse<GetTextMessageResponse>.self, from: responseData)
|
||||
|
||||
if let data = decoded.data, decoded.success {
|
||||
self.items.append(contentsOf: data.items)
|
||||
if data.items.count <= 0 {
|
||||
self.isLast = true
|
||||
} else {
|
||||
self.items.append(contentsOf: data.items)
|
||||
self.page += 1
|
||||
}
|
||||
} else {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
|
@ -214,7 +226,12 @@ final class TextMessageViewModel: ObservableObject {
|
|||
let decoded = try jsonDecoder.decode(ApiResponse<GetTextMessageResponse>.self, from: responseData)
|
||||
|
||||
if let data = decoded.data, decoded.success {
|
||||
self.items.append(contentsOf: data.items)
|
||||
if data.items.count <= 0 {
|
||||
self.isLast = true
|
||||
} else {
|
||||
self.items.append(contentsOf: data.items)
|
||||
self.page += 1
|
||||
}
|
||||
} else {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
|
|
|
@ -57,15 +57,17 @@ final class VoiceMessageViewModel: ObservableObject {
|
|||
}
|
||||
|
||||
func loadMessage() {
|
||||
switch currentFilter {
|
||||
case .receive:
|
||||
getReceivedVoiceMessage()
|
||||
|
||||
case .sent:
|
||||
getSentVoiceMessage()
|
||||
|
||||
case .keep:
|
||||
getKeepVoiceMessage()
|
||||
if !isLast {
|
||||
switch currentFilter {
|
||||
case .receive:
|
||||
getReceivedVoiceMessage()
|
||||
|
||||
case .sent:
|
||||
getSentVoiceMessage()
|
||||
|
||||
case .keep:
|
||||
getKeepVoiceMessage()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue