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