From 005bf2e993b75954933d39729e5f299c66d61edc Mon Sep 17 00:00:00 2001 From: sumin305 Date: Mon, 8 May 2023 23:29:37 +0900 Subject: [PATCH 1/2] =?UTF-8?q?class=EC=95=9E=EC=97=90=20final=20=ED=82=A4?= =?UTF-8?q?=EC=9B=8C=EB=93=9C=20=EB=B6=99=EC=97=AC=20=EC=84=B1=EB=8A=A5=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OrderMate.xcodeproj/project.pbxproj | 20 +++++++++---------- OrderMate/View/BoardView/BoardEditView.swift | 2 +- OrderMate/View/BoardView/BoardListView.swift | 3 +++ OrderMate/View/ChatView/ChatListView.swift | 14 +++++++------ .../BoardViewModel/BoardViewModel.swift | 2 +- .../ChatViewModel/ChatViewModel.swift | 9 ++------- .../UserViewModel/LoginViewModel.swift | 2 +- .../UserViewModel/UserViewModel.swift | 2 +- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/OrderMate.xcodeproj/project.pbxproj b/OrderMate.xcodeproj/project.pbxproj index 155b244..d21f07a 100644 --- a/OrderMate.xcodeproj/project.pbxproj +++ b/OrderMate.xcodeproj/project.pbxproj @@ -19,7 +19,6 @@ E40FB24029B625E400A1A4C2 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40FB23F29B625E400A1A4C2 /* MainView.swift */; }; E40FB24229B625F200A1A4C2 /* StartPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40FB24129B625F200A1A4C2 /* StartPageView.swift */; }; E40FB24429B6260200A1A4C2 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40FB24329B6260200A1A4C2 /* LoginView.swift */; }; - E41FA2D029F27D5100E2DB31 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E41FA2CE29F27D5100E2DB31 /* GoogleService-Info.plist */; }; E4470CF129DD5BF10078C59F /* PostStatusModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4470CF029DD5BF10078C59F /* PostStatusModel.swift */; }; E464802629C95352004616D2 /* CreateBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E464802529C95352004616D2 /* CreateBoardView.swift */; }; E46ED81E29FD49A500B24FBF /* BoardEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E46ED81D29FD49A500B24FBF /* BoardEditView.swift */; }; @@ -38,6 +37,7 @@ EDD4F7AD29CC87A600E578AF /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDD4F7AC29CC87A600E578AF /* LoginViewModel.swift */; }; EDD4F7AF29CC87C700E578AF /* APIModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDD4F7AE29CC87C700E578AF /* APIModel.swift */; }; EDF682BF29EF921900F2F37E /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDF682BE29EF921900F2F37E /* ChatListView.swift */; }; + EDF9B6982A09332900BBECD9 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = EDF9B6972A09332900BBECD9 /* GoogleService-Info.plist */; }; F37C7D0029B98489004B011C /* MakeAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37C7CFF29B98489004B011C /* MakeAccountView.swift */; }; /* End PBXBuildFile section */ @@ -55,7 +55,6 @@ E40FB23F29B625E400A1A4C2 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; E40FB24129B625F200A1A4C2 /* StartPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartPageView.swift; sourceTree = ""; }; E40FB24329B6260200A1A4C2 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; - E41FA2CE29F27D5100E2DB31 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; E4470CF029DD5BF10078C59F /* PostStatusModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PostStatusModel.swift; path = OrderMate/Model/PostStatusModel.swift; sourceTree = SOURCE_ROOT; }; E464802529C95352004616D2 /* CreateBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateBoardView.swift; sourceTree = ""; }; E46ED81D29FD49A500B24FBF /* BoardEditView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoardEditView.swift; sourceTree = ""; }; @@ -63,7 +62,6 @@ E4A8C8DC2A02CB6500CB28C1 /* FiraSansCompressed-Heavy.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "FiraSansCompressed-Heavy.otf"; sourceTree = ""; }; E4DAF7D329DFBC1E009015DE /* UserViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserViewModel.swift; sourceTree = ""; }; ED40967229BCAF5300B030A9 /* UserModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserModel.swift; sourceTree = ""; }; - ED7286B529E038EF00FC9E42 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; ED7286B729E0392E00FC9E42 /* ChatView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatView.swift; sourceTree = ""; }; ED7286BC29E03B1800FC9E42 /* ChatViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatViewModel.swift; sourceTree = ""; }; ED7286BE29E03B3900FC9E42 /* MessageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageModel.swift; sourceTree = ""; }; @@ -71,6 +69,8 @@ EDD4F7AC29CC87A600E578AF /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; EDD4F7AE29CC87C700E578AF /* APIModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIModel.swift; sourceTree = ""; }; EDF682BE29EF921900F2F37E /* ChatListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListView.swift; sourceTree = ""; }; + EDF9B6952A0932BE00BBECD9 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EDF9B6972A09332900BBECD9 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; F37C7CFF29B98489004B011C /* MakeAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MakeAccountView.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -109,8 +109,8 @@ BAF470A229B21C0C00F242EF /* OrderMate */ = { isa = PBXGroup; children = ( - E41FA2CE29F27D5100E2DB31 /* GoogleService-Info.plist */, - ED7286B529E038EF00FC9E42 /* Info.plist */, + EDF9B6972A09332900BBECD9 /* GoogleService-Info.plist */, + EDF9B6952A0932BE00BBECD9 /* Info.plist */, BAF470A329B21C0C00F242EF /* OrderMateApp.swift */, EDD4F7A929CC86D000E578AF /* Model */, EDD4F7AA29CC86D900E578AF /* View */, @@ -293,7 +293,7 @@ BAF470AB29B21C0D00F242EF /* Preview Assets.xcassets in Resources */, BAF470A829B21C0D00F242EF /* Assets.xcassets in Resources */, E4A8C8DD2A02CB6500CB28C1 /* FiraSansCompressed-Heavy.otf in Resources */, - E41FA2D029F27D5100E2DB31 /* GoogleService-Info.plist in Resources */, + EDF9B6982A09332900BBECD9 /* GoogleService-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -477,7 +477,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"OrderMate/Preview Content\""; - DEVELOPMENT_TEAM = 33DNUM53Q8; + DEVELOPMENT_TEAM = F7THTSRVL7; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = OrderMate/Info.plist; @@ -492,7 +492,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.CNUOrderMate.App; + PRODUCT_BUNDLE_IDENTIFIER = com.OrderMate.App; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -511,7 +511,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"OrderMate/Preview Content\""; - DEVELOPMENT_TEAM = 33DNUM53Q8; + DEVELOPMENT_TEAM = F7THTSRVL7; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = OrderMate/Info.plist; @@ -526,7 +526,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.CNUOrderMate.App; + PRODUCT_BUNDLE_IDENTIFIER = com.OrderMate.App; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; diff --git a/OrderMate/View/BoardView/BoardEditView.swift b/OrderMate/View/BoardView/BoardEditView.swift index c5aa581..94fed32 100644 --- a/OrderMate/View/BoardView/BoardEditView.swift +++ b/OrderMate/View/BoardView/BoardEditView.swift @@ -159,7 +159,7 @@ struct BoardEditView: View { print(boardInfo) self.presentationMode.wrappedValue.dismiss() } label: { - Text("방 편집") + Text("편집 하기") .padding() .frame(width: 200) .background(Color("green 0")) diff --git a/OrderMate/View/BoardView/BoardListView.swift b/OrderMate/View/BoardView/BoardListView.swift index a8c5c40..1c3358e 100644 --- a/OrderMate/View/BoardView/BoardListView.swift +++ b/OrderMate/View/BoardView/BoardListView.swift @@ -179,6 +179,9 @@ struct RoomListView: View { .refreshable { roomListreFreash() } + .onAppear { + roomListreFreash() + } .onAppear (perform : UIApplication.shared.hideKeyboard) } } diff --git a/OrderMate/View/ChatView/ChatListView.swift b/OrderMate/View/ChatView/ChatListView.swift index 849f482..da717af 100644 --- a/OrderMate/View/ChatView/ChatListView.swift +++ b/OrderMate/View/ChatView/ChatListView.swift @@ -15,19 +15,21 @@ struct ChatListView: View { userManager.getAuthority() DispatchQueue.main.async { roomList.getParticipatedBoard { success, data in + // room list data 받아오기 성공 if success { + // data를 [RoomInfoPreview] 타입으로 변경 if var list = data as? [RoomInfoPreview] { list = list.reversed() if list.count > 0 { - if list.contains(where: { $0.postStatus != "END_OF_ROOM" }) { - if let idx = list.firstIndex(where: { $0.postStatus != "END_OF_ROOM" }) { - currentChat = list[idx] - chatList = list.filter {$0.postStatus == "END_OF_ROOM" } - } + if list[0].postStatus != "END_OF_ROOM" { + currentChat = list[0] + chatList = Array(list[1...]) } else { chatList = list } - } else { + } + // 속해있거나 속했던 방이 없을 경우 + else { chatList = [] currentChat = nil } diff --git a/OrderMate/ViewModel/BoardViewModel/BoardViewModel.swift b/OrderMate/ViewModel/BoardViewModel/BoardViewModel.swift index ded862d..92f4713 100644 --- a/OrderMate/ViewModel/BoardViewModel/BoardViewModel.swift +++ b/OrderMate/ViewModel/BoardViewModel/BoardViewModel.swift @@ -1,6 +1,6 @@ import Foundation -class BoardViewModel: ObservableObject { +final class BoardViewModel: ObservableObject { static let shared = BoardViewModel() @Published var board: BoardStructModel? diff --git a/OrderMate/ViewModel/ChatViewModel/ChatViewModel.swift b/OrderMate/ViewModel/ChatViewModel/ChatViewModel.swift index 5e7ad58..8fcdb0f 100644 --- a/OrderMate/ViewModel/ChatViewModel/ChatViewModel.swift +++ b/OrderMate/ViewModel/ChatViewModel/ChatViewModel.swift @@ -3,7 +3,7 @@ import FirebaseFirestore import FirebaseFirestoreSwift // firebase를 이용한 채팅 뷰, 채팅 리스트 구현 View Model -class ChatViewModel: ObservableObject { +final class ChatViewModel: ObservableObject { static let shared = ChatViewModel() @Published var msgList: [Message] = [] @Published var chatList: [BoardStructModel] = [] @@ -13,11 +13,6 @@ class ChatViewModel: ObservableObject { let roomManager = RoomList.shared let db = Firestore.firestore() - - init() { - } - - var listIDArray: [Int] = [] // 내가 속한 boardID들 // postid 입력시 firebase의 board 정보 반환 @@ -40,7 +35,7 @@ class ChatViewModel: ObservableObject { return } } - + // 방 생성 시 채팅방 생성 func createChat(board: RoomInfoPreview, completion: @escaping (Bool) -> Void) { diff --git a/OrderMate/ViewModel/UserViewModel/LoginViewModel.swift b/OrderMate/ViewModel/UserViewModel/LoginViewModel.swift index 356e8e5..945cdb9 100644 --- a/OrderMate/ViewModel/UserViewModel/LoginViewModel.swift +++ b/OrderMate/ViewModel/UserViewModel/LoginViewModel.swift @@ -1,6 +1,6 @@ import Foundation -class LoginViewModel: ObservableObject { +final class LoginViewModel: ObservableObject { func postNewUserInfo(user: UserModel, completion: @escaping (Bool) -> Void) { guard let uploadData = try? JSONEncoder().encode(user) diff --git a/OrderMate/ViewModel/UserViewModel/UserViewModel.swift b/OrderMate/ViewModel/UserViewModel/UserViewModel.swift index d87aeb1..33383fd 100644 --- a/OrderMate/ViewModel/UserViewModel/UserViewModel.swift +++ b/OrderMate/ViewModel/UserViewModel/UserViewModel.swift @@ -1,6 +1,6 @@ import Foundation -class UserViewModel: ObservableObject { +final class UserViewModel: ObservableObject { static let shared = UserViewModel() @Published var userModel = UserInfoModel() @Published var authorityModel = Authority(authority: false) From 049a7227fcb824abd2e8dde4c372fa12dc9009b8 Mon Sep 17 00:00:00 2001 From: sumin305 Date: Tue, 9 May 2023 00:18:06 +0900 Subject: [PATCH 2/2] =?UTF-8?q?board=20=EC=88=98=EC=A0=95=20=EC=8B=9C=20?= =?UTF-8?q?=EC=B1=84=ED=8C=85=EB=B0=A9=EC=97=90=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OrderMate/View/BoardView/BoardEditView.swift | 40 +++++++++++++++++++- OrderMate/View/BoardView/BoardView.swift | 2 +- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/OrderMate/View/BoardView/BoardEditView.swift b/OrderMate/View/BoardView/BoardEditView.swift index 94fed32..72b8c5e 100644 --- a/OrderMate/View/BoardView/BoardEditView.swift +++ b/OrderMate/View/BoardView/BoardEditView.swift @@ -9,7 +9,7 @@ import SwiftUI struct BoardEditView: View { @Environment(\.presentationMode) var presentationMode - + @EnvironmentObject var userManager: UserViewModel var postId: Int @State var boardList = RoomList() var formattedDateBinding: Binding? @@ -27,6 +27,21 @@ struct BoardEditView: View { spaceType: "DORMITORY", accountNum: "", estimatedOrderTime: Date()) + @State var boardInfo2 = RoomInfoPreview(postId: 0, + title: "", + createdAt: Date(), + postStatus: PostStatusEnum.endOfRoom.rawValue, + maxPeopleNum: 5, + currentPeopleNum: 5, + isAnonymous: false, + content: "", + withOrderLink: "", + pickupSpace: "", + spaceType: "", + accountNum: "", + estimatedOrderTime: Date(), + ownerId: 0, + ownerName: "") let spaces = ["DORMITORY", "STUDIO_APARTMENT", "ALL"] let numbers = Array(1...10) @@ -47,6 +62,9 @@ struct BoardEditView: View { spaceType: "DORMITORY", accountNum: "", estimatedOrderTime: Date())) + + print(boardInfo2.postId) + } // String 옵셔널을 String으로 바꾸기 위한 함수 func convertBinding(_ optionalBinding: Binding) -> Binding { @@ -152,6 +170,26 @@ struct BoardEditView: View { boardList.editData(post: boardInfo, postId: postId) { success in if success { print("방 편집 완료") + self.boardInfo2 = RoomInfoPreview(postId: postId, + title: self.boardInfo.title, + createdAt: self.boardInfo.createdAt, + postStatus: self.boardInfo.postStatus?.rawValue, + maxPeopleNum: self.boardInfo.maxPeopleNum, + currentPeopleNum: self.boardInfo.currentPeopleNum, + isAnonymous: self.boardInfo.isAnonymous, + content: self.boardInfo.content, + withOrderLink: self.boardInfo.withOrderLink, + pickupSpace: self.boardInfo.pickupSpace, + spaceType: self.boardInfo.spaceType, + accountNum: self.boardInfo.accountNum, + estimatedOrderTime: self.boardInfo.estimatedOrderTime, + ownerId: 0, + ownerName: self.boardInfo.ownerName) + ChatViewModel.shared.createChat(board: boardInfo2) { success in + if success { + print("파이어베이스 편집 성공") + } + } } else { print("오류 발생으로 방 편집 실패") } diff --git a/OrderMate/View/BoardView/BoardView.swift b/OrderMate/View/BoardView/BoardView.swift index 27ebdca..9ecb1d3 100644 --- a/OrderMate/View/BoardView/BoardView.swift +++ b/OrderMate/View/BoardView/BoardView.swift @@ -321,7 +321,7 @@ struct BoardView: View { .foregroundColor(Color("green 2")) } } - } + }.padding() } }