메시지 추가 로딩 되지 않는 버그 수정
This commit is contained in:
		| @@ -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() | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung