diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer.xcodeproj/project.pbxproj b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer.xcodeproj/project.pbxproj index fe79c97a..14d70f4b 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer.xcodeproj/project.pbxproj +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer.xcodeproj/project.pbxproj @@ -66,11 +66,7 @@ 9B35B27C2A94595900AD72D7 /* TitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B35B27B2A94595900AD72D7 /* TitleView.swift */; }; 9B35B2802A94598400AD72D7 /* IdStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B35B27F2A94598400AD72D7 /* IdStore.swift */; }; 9B35B2822A947C7100AD72D7 /* FollowBtnView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B35B2812A947C7100AD72D7 /* FollowBtnView.swift */; }; - 9B6B9B2E2A949F15004609AF /* IdData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B2D2A949F15004609AF /* IdData.swift */; }; 9B6B9B302A94A2AA004609AF /* FeedStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B2F2A94A2AA004609AF /* FeedStore.swift */; }; - 9B6B9B322A94A3F2004609AF /* PostCommentStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B312A94A3F2004609AF /* PostCommentStore.swift */; }; - 9B6B9B362A94A746004609AF /* PostData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B352A94A746004609AF /* PostData.swift */; }; - 9E99CCEE2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E99CCED2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift */; }; 9E99CCF22A944A5A00699B6A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9E99CCF12A944A5A00699B6A /* Assets.xcassets */; }; 9E99CCF52A944A5A00699B6A /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9E99CCF42A944A5A00699B6A /* Preview Assets.xcassets */; }; A09ED4BB2A9490D200E6A626 /* MyMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09ED4BA2A9490D200E6A626 /* MyMainView.swift */; }; @@ -87,18 +83,30 @@ A0CE323D2A952C110019300F /* StudyCommentReportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0CE323C2A952C110019300F /* StudyCommentReportView.swift */; }; B0F67D5A2A948B3400B2A138 /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0F67D592A948B3300B2A138 /* TestView.swift */; }; B7610BA72A951A6E0074F78C /* FeedRecruitViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7610BA62A951A6E0074F78C /* FeedRecruitViewModel.swift */; }; + B7780E4B2A977F7C00A0B9F6 /* PersonnelSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7780E482A977F7C00A0B9F6 /* PersonnelSheet.swift */; }; + B7780E4C2A977F7C00A0B9F6 /* DatePickerSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7780E492A977F7C00A0B9F6 /* DatePickerSheet.swift */; }; + B7780E4D2A977F7C00A0B9F6 /* ButtonMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7780E4A2A977F7C00A0B9F6 /* ButtonMainView.swift */; }; + B7780E542A9783B200A0B9F6 /* AuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7780E532A9783B100A0B9F6 /* AuthViewModel.swift */; }; + B7780E5B2A97857100A0B9F6 /* DateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7780E592A97857100A0B9F6 /* DateModel.swift */; }; + B7780E5C2A97857100A0B9F6 /* DateStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7780E5A2A97857100A0B9F6 /* DateStore.swift */; }; + B786FC022A978FC200E3C1E9 /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAA6FC212A949FF2005E31DC /* Extension.swift */; }; + B786FC032A978FE500E3C1E9 /* project02_teamB_OUR_consumerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E99CCED2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift */; }; + B786FC042A978FFA00E3C1E9 /* IdData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B2D2A949F15004609AF /* IdData.swift */; }; + B786FC052A97900C00E3C1E9 /* PostCommentStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B312A94A3F2004609AF /* PostCommentStore.swift */; }; + B786FC062A97901B00E3C1E9 /* PostData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B9B352A94A746004609AF /* PostData.swift */; }; B7C4A51C2A95C10A00CB05C8 /* FeedRecruitModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7C4A51B2A95C10A00CB05C8 /* FeedRecruitModel.swift */; }; B7C4A51E2A95C3DB00CB05C8 /* FeedRecruitStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7C4A51D2A95C3DB00CB05C8 /* FeedRecruitStore.swift */; }; D55D36612A95E16200A7BE14 /* AddStudyMain.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55D36602A95E16200A7BE14 /* AddStudyMain.swift */; }; - D55D36632A95E17100A7BE14 /* MeetingFormView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55D36622A95E17100A7BE14 /* MeetingFormView.swift */; }; + D55D36632A95E17100A7BE14 /* StudyMeetingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55D36622A95E17100A7BE14 /* StudyMeetingView.swift */; }; D55D36652A95E17800A7BE14 /* StudyImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55D36642A95E17800A7BE14 /* StudyImageView.swift */; }; D55D36692A95E19200A7BE14 /* StudyMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55D36682A95E19200A7BE14 /* StudyMapView.swift */; }; D55D366D2A95E1CD00A7BE14 /* StudyLocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55D366C2A95E1CD00A7BE14 /* StudyLocationManager.swift */; }; - FA504D552A9755F4002ECF0D /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = FA504D542A9755F4002ECF0D /* GoogleService-Info.plist */; }; + D5755B0F2A9716E5000BC8E2 /* StudyRecruitModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5755B0E2A9716E5000BC8E2 /* StudyRecruitModel.swift */; }; + D5755B112A9716FB000BC8E2 /* StudyRecruitStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5755B102A9716FB000BC8E2 /* StudyRecruitStore.swift */; }; + D5755B172A974E8B000BC8E2 /* SharedViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5755B162A974E8B000BC8E2 /* SharedViewModel.swift */; }; FA63F0412A9513550010B0FE /* FeedRecruitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA63F03F2A9513550010B0FE /* FeedRecruitView.swift */; }; FA63F0422A9513550010B0FE /* FeedRecruitPhotoAddView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA63F0402A9513550010B0FE /* FeedRecruitPhotoAddView.swift */; }; FA63F0442A9513610010B0FE /* FeedRecruitPHPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA63F0432A9513610010B0FE /* FeedRecruitPHPicker.swift */; }; - FAA6FC222A949FF2005E31DC /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAA6FC212A949FF2005E31DC /* Extension.swift */; }; FAB51C132A9655590047A725 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C102A9655590047A725 /* LoginView.swift */; }; FAB51C142A9655590047A725 /* AgreeTermView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C112A9655590047A725 /* AgreeTermView.swift */; }; FAB51C152A9655590047A725 /* LoginSecondView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C122A9655590047A725 /* LoginSecondView.swift */; }; @@ -113,18 +121,12 @@ FAB51C692A9661800047A725 /* GoogleSignInSwift in Frameworks */ = {isa = PBXBuildFile; productRef = FAB51C682A9661800047A725 /* GoogleSignInSwift */; }; FAB51C762A96755C0047A725 /* RecruitImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C752A96755C0047A725 /* RecruitImagePicker.swift */; }; FAB51C792A96771F0047A725 /* IdClassStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C782A96771F0047A725 /* IdClassStore.swift */; }; - FAB51C7C2A9677E40047A725 /* DateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C7A2A9677E40047A725 /* DateModel.swift */; }; - FAB51C7D2A9677E40047A725 /* DateStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C7B2A9677E40047A725 /* DateStore.swift */; }; - FAB51C812A9677F00047A725 /* ButtonMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C7E2A9677F00047A725 /* ButtonMainView.swift */; }; - FAB51C822A9677F00047A725 /* DatePickerSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C7F2A9677F00047A725 /* DatePickerSheet.swift */; }; - FAB51C832A9677F00047A725 /* PersonnelSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C802A9677F00047A725 /* PersonnelSheet.swift */; }; FAB51C892A9678870047A725 /* Encodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C842A9678870047A725 /* Encodable.swift */; }; FAB51C8A2A9678870047A725 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C852A9678870047A725 /* UIImage.swift */; }; FAB51C8B2A9678870047A725 /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C862A9678870047A725 /* Date.swift */; }; FAB51C8C2A9678870047A725 /* AnyViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C872A9678870047A725 /* AnyViewExtension.swift */; }; FAB51C8D2A9678870047A725 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C882A9678870047A725 /* String.swift */; }; FAB51C8F2A9679090047A725 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C8E2A9679090047A725 /* ContentView.swift */; }; - FAB51C952A96794B0047A725 /* AuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C942A96794B0047A725 /* AuthViewModel.swift */; }; FAB51C972A9679A50047A725 /* SampleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB51C962A9679A50047A725 /* SampleModel.swift */; }; /* End PBXBuildFile section */ @@ -186,10 +188,10 @@ 965086912A95D29B00CDA0FC /* AlarmFireService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmFireService.swift; sourceTree = ""; }; 9B35B2752A94590F00AD72D7 /* FeedTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedTabView.swift; sourceTree = ""; }; 9B35B2772A94593E00AD72D7 /* FeedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedView.swift; sourceTree = ""; }; - 9B35B2792A94594C00AD72D7 /* SheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SheetView.swift; path = ../SheetView.swift; sourceTree = ""; }; - 9B35B27B2A94595900AD72D7 /* TitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TitleView.swift; path = ../TitleView.swift; sourceTree = ""; }; + 9B35B2792A94594C00AD72D7 /* SheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SheetView.swift; sourceTree = ""; }; + 9B35B27B2A94595900AD72D7 /* TitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleView.swift; sourceTree = ""; }; 9B35B27F2A94598400AD72D7 /* IdStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdStore.swift; sourceTree = ""; }; - 9B35B2812A947C7100AD72D7 /* FollowBtnView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FollowBtnView.swift; path = ../FollowBtnView.swift; sourceTree = ""; }; + 9B35B2812A947C7100AD72D7 /* FollowBtnView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowBtnView.swift; sourceTree = ""; }; 9B6B9B2D2A949F15004609AF /* IdData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdData.swift; sourceTree = ""; }; 9B6B9B2F2A94A2AA004609AF /* FeedStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedStore.swift; sourceTree = ""; }; 9B6B9B312A94A3F2004609AF /* PostCommentStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostCommentStore.swift; sourceTree = ""; }; @@ -212,14 +214,22 @@ A0CE323C2A952C110019300F /* StudyCommentReportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyCommentReportView.swift; sourceTree = ""; }; B0F67D592A948B3300B2A138 /* TestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestView.swift; sourceTree = ""; }; B7610BA62A951A6E0074F78C /* FeedRecruitViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedRecruitViewModel.swift; sourceTree = ""; }; + B7780E482A977F7C00A0B9F6 /* PersonnelSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PersonnelSheet.swift; path = "../../../../../../../../Desktop/OUR/feature:#2-RecruitFeedView1/project02-teamB-OUR-consumer/Views/FeedRecruitView/PersonnelSheet.swift"; sourceTree = ""; }; + B7780E492A977F7C00A0B9F6 /* DatePickerSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DatePickerSheet.swift; path = "../../../../../../../../Desktop/OUR/feature:#2-RecruitFeedView1/project02-teamB-OUR-consumer/Views/FeedRecruitView/DatePickerSheet.swift"; sourceTree = ""; }; + B7780E4A2A977F7C00A0B9F6 /* ButtonMainView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ButtonMainView.swift; path = "../../../../../../../../Desktop/OUR/feature:#2-RecruitFeedView1/project02-teamB-OUR-consumer/Views/FeedRecruitView/ButtonMainView.swift"; sourceTree = ""; }; + B7780E532A9783B100A0B9F6 /* AuthViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AuthViewModel.swift; path = "../../../../../../../Desktop/OUR/feature:#2-RecruitFeedView1/project02-teamB-OUR-consumer/Model/AuthViewModel.swift"; sourceTree = ""; }; + B7780E592A97857100A0B9F6 /* DateModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateModel.swift; path = "../../../../../../../../Desktop/OUR/feature:#2-RecruitFeedView1/project02-teamB-OUR-consumer/Model/DateModel.swift"; sourceTree = ""; }; + B7780E5A2A97857100A0B9F6 /* DateStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateStore.swift; path = "../../../../../../../../Desktop/OUR/feature:#2-RecruitFeedView1/project02-teamB-OUR-consumer/Model/DateStore.swift"; sourceTree = ""; }; B7C4A51B2A95C10A00CB05C8 /* FeedRecruitModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedRecruitModel.swift; sourceTree = ""; }; B7C4A51D2A95C3DB00CB05C8 /* FeedRecruitStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedRecruitStore.swift; sourceTree = ""; }; D55D36602A95E16200A7BE14 /* AddStudyMain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddStudyMain.swift; sourceTree = ""; }; - D55D36622A95E17100A7BE14 /* MeetingFormView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingFormView.swift; sourceTree = ""; }; + D55D36622A95E17100A7BE14 /* StudyMeetingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyMeetingView.swift; sourceTree = ""; }; D55D36642A95E17800A7BE14 /* StudyImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyImageView.swift; sourceTree = ""; }; D55D36682A95E19200A7BE14 /* StudyMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyMapView.swift; sourceTree = ""; }; D55D366C2A95E1CD00A7BE14 /* StudyLocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyLocationManager.swift; sourceTree = ""; }; - FA504D542A9755F4002ECF0D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../../../Downloads/GoogleService-Info.plist"; sourceTree = ""; }; + D5755B0E2A9716E5000BC8E2 /* StudyRecruitModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyRecruitModel.swift; sourceTree = ""; }; + D5755B102A9716FB000BC8E2 /* StudyRecruitStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyRecruitStore.swift; sourceTree = ""; }; + D5755B162A974E8B000BC8E2 /* SharedViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedViewModel.swift; sourceTree = ""; }; FA63F03F2A9513550010B0FE /* FeedRecruitView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedRecruitView.swift; sourceTree = ""; }; FA63F0402A9513550010B0FE /* FeedRecruitPhotoAddView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedRecruitPhotoAddView.swift; sourceTree = ""; }; FA63F0432A9513610010B0FE /* FeedRecruitPHPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedRecruitPHPicker.swift; sourceTree = ""; }; @@ -229,19 +239,13 @@ FAB51C122A9655590047A725 /* LoginSecondView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginSecondView.swift; sourceTree = ""; }; FAB51C752A96755C0047A725 /* RecruitImagePicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecruitImagePicker.swift; sourceTree = ""; }; FAB51C782A96771F0047A725 /* IdClassStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdClassStore.swift; sourceTree = ""; }; - FAB51C7A2A9677E40047A725 /* DateModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateModel.swift; path = "project02-teamB-OUR-consumer/Model/DateModel.swift"; sourceTree = SOURCE_ROOT; }; - FAB51C7B2A9677E40047A725 /* DateStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateStore.swift; path = "project02-teamB-OUR-consumer/Model/DateStore.swift"; sourceTree = SOURCE_ROOT; }; - FAB51C7E2A9677F00047A725 /* ButtonMainView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ButtonMainView.swift; path = "project02-teamB-OUR-consumer/Views/FeedRecruitView/ButtonMainView.swift"; sourceTree = SOURCE_ROOT; }; - FAB51C7F2A9677F00047A725 /* DatePickerSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DatePickerSheet.swift; path = "project02-teamB-OUR-consumer/Views/FeedRecruitView/DatePickerSheet.swift"; sourceTree = SOURCE_ROOT; }; - FAB51C802A9677F00047A725 /* PersonnelSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PersonnelSheet.swift; path = "project02-teamB-OUR-consumer/Views/FeedRecruitView/PersonnelSheet.swift"; sourceTree = SOURCE_ROOT; }; FAB51C842A9678870047A725 /* Encodable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Encodable.swift; sourceTree = ""; }; FAB51C852A9678870047A725 /* UIImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; FAB51C862A9678870047A725 /* Date.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = ""; }; FAB51C872A9678870047A725 /* AnyViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnyViewExtension.swift; sourceTree = ""; }; FAB51C882A9678870047A725 /* String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = ""; }; FAB51C8E2A9679090047A725 /* ContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContentView.swift; path = "project02-teamB-OUR-consumer/ContentView.swift"; sourceTree = SOURCE_ROOT; }; - FAB51C942A96794B0047A725 /* AuthViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AuthViewModel.swift; path = "project02-teamB-OUR-consumer/Model/AuthViewModel.swift"; sourceTree = SOURCE_ROOT; }; - FAB51C962A9679A50047A725 /* SampleModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SampleModel.swift; path = "project02-teamB-OUR-consumer/Model/SampleModel.swift"; sourceTree = SOURCE_ROOT; }; + FAB51C962A9679A50047A725 /* SampleModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SampleModel.swift; path = "project02-teamB-OUR-consumer/Model/SecondTapModel/SampleModel.swift"; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -281,9 +285,15 @@ path = Inquiry; sourceTree = ""; }; - 6332A6012A95C5CB0047E2DD /* FeedView */ = { + 6332A6012A95C5CB0047E2DD /* FirstTapView */ = { isa = PBXGroup; children = ( + 9B35B2812A947C7100AD72D7 /* FollowBtnView.swift */, + 649085B52A9604AD00506F46 /* FollowButtonView.swift */, + 649085B92A96068600506F46 /* RecommendDetailView.swift */, + 649085B72A96067A00506F46 /* RecommendFriendView.swift */, + 9B35B27B2A94595900AD72D7 /* TitleView.swift */, + 9B35B2792A94594C00AD72D7 /* SheetView.swift */, 9B35B2752A94590F00AD72D7 /* FeedTabView.swift */, 9B35B2772A94593E00AD72D7 /* FeedView.swift */, 6332A5FD2A95979A0047E2DD /* PostUserView.swift */, @@ -294,32 +304,24 @@ 6332A6022A95D1220047E2DD /* ScrapView.swift */, 6332A6042A95D12C0047E2DD /* ShareView.swift */, ); - path = FeedView; + path = FirstTapView; sourceTree = ""; }; 842192092A95DB3C007224EE /* Views */ = { isa = PBXGroup; children = ( FAB51C8E2A9679090047A725 /* ContentView.swift */, - FAB51C0F2A9655590047A725 /* Login */, - 6332A6012A95C5CB0047E2DD /* FeedView */, - A06ED3492A971514004462EB /* StudyView */, - 9620C5092A95FC86000C21BC /* CustomModalTabView */, - 960EFDDC2A9491B20036CEC1 /* MyPageView */, - 960CCEDE2A9459790044F279 /* AlarmView */, - D55D366E2A95E1D200A7BE14 /* RecruitStudyView */, - B77A48712A95AA93002BA95F /* FeedRecruitView */, - 9B35B2792A94594C00AD72D7 /* SheetView.swift */, - 9B35B2812A947C7100AD72D7 /* FollowBtnView.swift */, - 649085B52A9604AD00506F46 /* FollowButtonView.swift */, - 649085B92A96068600506F46 /* RecommendDetailView.swift */, - 649085B72A96067A00506F46 /* RecommendFriendView.swift */, - 9B35B27B2A94595900AD72D7 /* TitleView.swift */, + 6332A6012A95C5CB0047E2DD /* FirstTapView */, + B7780E4E2A977FFF00A0B9F6 /* SecondTapView */, + B77A48712A95AA93002BA95F /* ThirdTapView */, + 960CCEDE2A9459790044F279 /* FourthTapView */, + 960EFDDC2A9491B20036CEC1 /* FifthTapView */, + FAB51C0F2A9655590047A725 /* LoginView+Model */, ); path = Views; sourceTree = ""; }; - 960CCEDE2A9459790044F279 /* AlarmView */ = { + 960CCEDE2A9459790044F279 /* FourthTapView */ = { isa = PBXGroup; children = ( 960CCEED2A945A7C0044F279 /* AlarmContainer.swift */, @@ -328,16 +330,15 @@ 960CCEDF2A9459840044F279 /* NotificationsListView.swift */, B0F67D592A948B3300B2A138 /* TestView.swift */, ); - path = AlarmView; + path = FourthTapView; sourceTree = ""; }; - 960EFDDC2A9491B20036CEC1 /* MyPageView */ = { + 960EFDDC2A9491B20036CEC1 /* FifthTapView */ = { isa = PBXGroup; children = ( 54FEB2792A9693810083A33F /* Inquiry */, A09ED4BA2A9490D200E6A626 /* MyMainView.swift */, A09ED4C72A95F45900E6A626 /* MyBookMarkView.swift */, - A09ED4C32A95BDDC00E6A626 /* ImagePicker.swift */, A09ED4C02A94C24B00E6A626 /* MyMainProfileEditView.swift */, A09ED4C52A95D5B100E6A626 /* CameraORImageModalView.swift */, A09ED4BE2A949C2000E6A626 /* MyMainTabBar.swift */, @@ -360,7 +361,7 @@ A09ED4CB2A95F63700E6A626 /* MyStudyView.swift */, 118AA9692A95099F006946C3 /* SettingView.swift */, ); - path = MyPageView; + path = FifthTapView; sourceTree = ""; }; 9620C5092A95FC86000C21BC /* CustomModalTabView */ = { @@ -390,26 +391,27 @@ path = Screen; sourceTree = ""; }; - 962B7E192A95901600083790 /* MyPageViewModel */ = { + 962B7E192A95901600083790 /* FifthTapModel */ = { isa = PBXGroup; children = ( 960EFDE92A94A9C40036CEC1 /* ResumeData.swift */, 960EFDEB2A94FEAC0036CEC1 /* ResumeStore.swift */, + A09ED4C32A95BDDC00E6A626 /* ImagePicker.swift */, ); - path = MyPageViewModel; + path = FifthTapModel; sourceTree = ""; }; - 965086972A95F5F700CDA0FC /* AlarmViewModel */ = { + 965086972A95F5F700CDA0FC /* FourthTapAlarmModel */ = { isa = PBXGroup; children = ( 965086912A95D29B00CDA0FC /* AlarmFireService.swift */, 9650867E2A948A9200CDA0FC /* AlarmViewModel.swift */, 9650868C2A95A86800CDA0FC /* UNNotificationCenter.swift */, ); - path = AlarmViewModel; + path = FourthTapAlarmModel; sourceTree = ""; }; - 965086982A95F65800CDA0FC /* NotificationModel */ = { + 965086982A95F65800CDA0FC /* FourthTapNotificationModel */ = { isa = PBXGroup; children = ( 965086882A94D34600CDA0FC /* NotificationType.swift */, @@ -417,7 +419,7 @@ 9650868A2A94D35900CDA0FC /* NotificationDTO.swift */, 965086862A94C86A00CDA0FC /* Color.swift */, ); - path = NotificationModel; + path = FourthTapNotificationModel; sourceTree = ""; }; 9B35B26A2A94576600AD72D7 /* Data */ = { @@ -433,20 +435,11 @@ 9B6B9B2C2A949ED9004609AF /* Model */ = { isa = PBXGroup; children = ( - 8422C5BD2A97414E000F46D5 /* StudyViewModel.swift */, - 8421920C2A95E9B4007224EE /* StudyGroupStore.swift */, - 3AF70F542A96DEAF008E9CAB /* StudyViewModel.swift */, - 9B35B27F2A94598400AD72D7 /* IdStore.swift */, - FAB51C942A96794B0047A725 /* AuthViewModel.swift */, - 9B6B9B2F2A94A2AA004609AF /* FeedStore.swift */, - FAB51C962A9679A50047A725 /* SampleModel.swift */, - 9B6B9B312A94A3F2004609AF /* PostCommentStore.swift */, - FAB51C752A96755C0047A725 /* RecruitImagePicker.swift */, - FAB51C7A2A9677E40047A725 /* DateModel.swift */, - FAB51C7B2A9677E40047A725 /* DateStore.swift */, - 962B7E192A95901600083790 /* MyPageViewModel */, - 965086982A95F65800CDA0FC /* NotificationModel */, - 965086972A95F5F700CDA0FC /* AlarmViewModel */, + B7780E512A97826700A0B9F6 /* FirstTapModel */, + B7780E502A97812900A0B9F6 /* SecondTapModel */, + B7780E522A97829F00A0B9F6 /* ThirdTapModel */, + B7780E4F2A97811700A0B9F6 /* FourthTapModel */, + 962B7E192A95901600083790 /* FifthTapModel */, ); path = Model; sourceTree = ""; @@ -474,12 +467,10 @@ FA504D542A9755F4002ECF0D /* GoogleService-Info.plist */, 3AF70F382A95199B008E9CAB /* Info.plist */, 9E99CCED2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift */, - B77A48722A95AAC9002BA95F /* FeedRecruitModel+Extension */, - FAB51C772A9676720047A725 /* Extension */, 842192092A95DB3C007224EE /* Views */, 9B6B9B2C2A949ED9004609AF /* Model */, + FAB51C772A9676720047A725 /* Extension */, 3AF70F392A951C1D008E9CAB /* Key */, - 9B35B26A2A94576600AD72D7 /* Data */, 9E99CCF12A944A5A00699B6A /* Assets.xcassets */, 9E99CCF32A944A5A00699B6A /* Preview Content */, ); @@ -494,7 +485,17 @@ path = "Preview Content"; sourceTree = ""; }; - A06ED3492A971514004462EB /* StudyView */ = { + B7780E3F2A977E9500A0B9F6 /* RecruitFeedView */ = { + + isa = PBXGroup; + children = ( + FA63F03F2A9513550010B0FE /* FeedRecruitView.swift */, + FA63F0402A9513550010B0FE /* FeedRecruitPhotoAddView.swift */, + ); + path = RecruitFeedView; + sourceTree = ""; + }; + B7780E4E2A977FFF00A0B9F6 /* SecondTapView */ = { isa = PBXGroup; children = ( 84BC2B362A94910900B0E270 /* StudyListView.swift */, @@ -506,19 +507,56 @@ A0CE323C2A952C110019300F /* StudyCommentReportView.swift */, A0BCB8DF2A9495BF00A47841 /* LocationSheetView.swift */, ); - path = StudyView; + path = SecondTapView; sourceTree = ""; }; - B77A48712A95AA93002BA95F /* FeedRecruitView */ = { + B7780E4F2A97811700A0B9F6 /* FourthTapModel */ = { isa = PBXGroup; children = ( - FAB51C7E2A9677F00047A725 /* ButtonMainView.swift */, - FAB51C7F2A9677F00047A725 /* DatePickerSheet.swift */, - FAB51C802A9677F00047A725 /* PersonnelSheet.swift */, - FA63F03F2A9513550010B0FE /* FeedRecruitView.swift */, - FA63F0402A9513550010B0FE /* FeedRecruitPhotoAddView.swift */, + 965086982A95F65800CDA0FC /* FourthTapNotificationModel */, + 965086972A95F5F700CDA0FC /* FourthTapAlarmModel */, ); - path = FeedRecruitView; + path = FourthTapModel; + sourceTree = ""; + }; + B7780E502A97812900A0B9F6 /* SecondTapModel */ = { + isa = PBXGroup; + children = ( + FAB51C962A9679A50047A725 /* SampleModel.swift */, + 8421920A2A95E11C007224EE /* StudyGroup.swift */, + 8421920C2A95E9B4007224EE /* StudyGroupStore.swift */, + ); + path = SecondTapModel; + sourceTree = ""; + }; + B7780E512A97826700A0B9F6 /* FirstTapModel */ = { + isa = PBXGroup; + children = ( + 9B35B26A2A94576600AD72D7 /* Data */, + 9B35B27F2A94598400AD72D7 /* IdStore.swift */, + 9B6B9B2F2A94A2AA004609AF /* FeedStore.swift */, + 9B6B9B312A94A3F2004609AF /* PostCommentStore.swift */, + ); + path = FirstTapModel; + sourceTree = ""; + }; + B7780E522A97829F00A0B9F6 /* ThirdTapModel */ = { + isa = PBXGroup; + children = ( + D5755B0D2A97165C000BC8E2 /* RecruitStudyModel */, + B77A48722A95AAC9002BA95F /* FeedRecruitModel+Extension */, + ); + path = ThirdTapModel; + sourceTree = ""; + }; + B77A48712A95AA93002BA95F /* ThirdTapView */ = { + isa = PBXGroup; + children = ( + 9620C5092A95FC86000C21BC /* CustomModalTabView */, + D55D366E2A95E1D200A7BE14 /* RecruitStudyView */, + B7780E3F2A977E9500A0B9F6 /* RecruitFeedView */, + ); + path = ThirdTapView; sourceTree = ""; }; B77A48722A95AAC9002BA95F /* FeedRecruitModel+Extension */ = { @@ -536,30 +574,42 @@ isa = PBXGroup; children = ( D55D36602A95E16200A7BE14 /* AddStudyMain.swift */, - D55D36622A95E17100A7BE14 /* MeetingFormView.swift */, + D55D36622A95E17100A7BE14 /* StudyMeetingView.swift */, D55D36642A95E17800A7BE14 /* StudyImageView.swift */, D55D36682A95E19200A7BE14 /* StudyMapView.swift */, - D55D366C2A95E1CD00A7BE14 /* StudyLocationManager.swift */, + B7780E4A2A977F7C00A0B9F6 /* ButtonMainView.swift */, + B7780E492A977F7C00A0B9F6 /* DatePickerSheet.swift */, + B7780E482A977F7C00A0B9F6 /* PersonnelSheet.swift */, ); path = RecruitStudyView; sourceTree = ""; }; - FA435A742A9746C8000A2A11 /* Recovered References */ = { + + D5755B0D2A97165C000BC8E2 /* RecruitStudyModel */ = { isa = PBXGroup; children = ( + D5755B162A974E8B000BC8E2 /* SharedViewModel.swift */, + D55D366C2A95E1CD00A7BE14 /* StudyLocationManager.swift */, + D5755B0E2A9716E5000BC8E2 /* StudyRecruitModel.swift */, + FAB51C752A96755C0047A725 /* RecruitImagePicker.swift */, + D5755B102A9716FB000BC8E2 /* StudyRecruitStore.swift */, + B7780E592A97857100A0B9F6 /* DateModel.swift */, + B7780E5A2A97857100A0B9F6 /* DateStore.swift */, ); - name = "Recovered References"; + path = RecruitStudyModel; sourceTree = ""; }; - FAB51C0F2A9655590047A725 /* Login */ = { + FAB51C0F2A9655590047A725 /* LoginView+Model */ = { + isa = PBXGroup; children = ( FAB51C102A9655590047A725 /* LoginView.swift */, FAB51C112A9655590047A725 /* AgreeTermView.swift */, FAB51C122A9655590047A725 /* LoginSecondView.swift */, + B7780E532A9783B100A0B9F6 /* AuthViewModel.swift */, ); - name = Login; - path = "project02-teamB-OUR-consumer/Views/Login"; + name = "LoginView+Model"; + path = "project02-teamB-OUR-consumer/Views/LoginView+Model"; sourceTree = SOURCE_ROOT; }; FAB51C772A9676720047A725 /* Extension */ = { @@ -661,23 +711,26 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B786FC062A97901B00E3C1E9 /* PostData.swift in Sources */, + B786FC052A97900C00E3C1E9 /* PostCommentStore.swift in Sources */, + B786FC042A978FFA00E3C1E9 /* IdData.swift in Sources */, + B786FC032A978FE500E3C1E9 /* project02_teamB_OUR_consumerApp.swift in Sources */, + B786FC022A978FC200E3C1E9 /* Extension.swift in Sources */, FA63F0412A9513550010B0FE /* FeedRecruitView.swift in Sources */, D55D366D2A95E1CD00A7BE14 /* StudyLocationManager.swift in Sources */, 9620C5102A95FD8F000C21BC /* CustomTabBarView.swift in Sources */, FA63F0422A9513550010B0FE /* FeedRecruitPhotoAddView.swift in Sources */, 54FEB27F2A9694070083A33F /* Inquiry.swift in Sources */, B7610BA72A951A6E0074F78C /* FeedRecruitViewModel.swift in Sources */, - D55D36632A95E17100A7BE14 /* MeetingFormView.swift in Sources */, + D55D36632A95E17100A7BE14 /* StudyMeetingView.swift in Sources */, FAB51C8A2A9678870047A725 /* UIImage.swift in Sources */, B7C4A51C2A95C10A00CB05C8 /* FeedRecruitModel.swift in Sources */, D55D36612A95E16200A7BE14 /* AddStudyMain.swift in Sources */, 9620C50B2A95FD31000C21BC /* PostButton.swift in Sources */, FAB51C8F2A9679090047A725 /* ContentView.swift in Sources */, - 9E99CCEE2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift in Sources */, 9620C5132A95FE05000C21BC /* RecruitMainSheet.swift in Sources */, D55D36652A95E17800A7BE14 /* StudyImageView.swift in Sources */, - FAA6FC222A949FF2005E31DC /* Extension.swift in Sources */, - 8422C5BE2A97414E000F46D5 /* StudyViewModel.swift in Sources */, + B7C4A51E2A95C3DB00CB05C8 /* FeedRecruitStore.swift in Sources */, FA63F0442A9513610010B0FE /* FeedRecruitPHPicker.swift in Sources */, FAB51C892A9678870047A725 /* Encodable.swift in Sources */, @@ -686,10 +739,11 @@ 965086892A94D34600CDA0FC /* NotificationType.swift in Sources */, 960CCEE82A9459910044F279 /* NotificationItem.swift in Sources */, 9650868D2A95A86800CDA0FC /* UNNotificationCenter.swift in Sources */, - 9E99CCEE2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift in Sources */, + B7780E542A9783B200A0B9F6 /* AuthViewModel.swift in Sources */, 1D6169F72A94941200F3A8E9 /* RemoteImageView.swift in Sources */, 960CCEEE2A945A7C0044F279 /* AlarmContainer.swift in Sources */, 960CCEE12A9459840044F279 /* NotificationsListView.swift in Sources */, + B7780E4C2A977F7C00A0B9F6 /* DatePickerSheet.swift in Sources */, 9650867F2A948A9200CDA0FC /* AlarmViewModel.swift in Sources */, 9650868B2A94D35900CDA0FC /* NotificationDTO.swift in Sources */, B0F67D5A2A948B3400B2A138 /* TestView.swift in Sources */, @@ -697,18 +751,20 @@ FAB51C8D2A9678870047A725 /* String.swift in Sources */, 965086922A95D29B00CDA0FC /* AlarmFireService.swift in Sources */, 54FEB27C2A9693940083A33F /* InquiryView.swift in Sources */, + D5755B172A974E8B000BC8E2 /* SharedViewModel.swift in Sources */, 965086872A94C86A00CDA0FC /* Color.swift in Sources */, 649085B62A9604AD00506F46 /* FollowButtonView.swift in Sources */, 960EFDDB2A9491980036CEC1 /* MyResumeView.swift in Sources */, A09ED4C42A95BDDC00E6A626 /* ImagePicker.swift in Sources */, + D5755B112A9716FB000BC8E2 /* StudyRecruitStore.swift in Sources */, 118AA9732A95A24E006946C3 /* MyIntroEditView.swift in Sources */, 960EFDE02A9497040036CEC1 /* MyIntroView.swift in Sources */, + B7780E5B2A97857100A0B9F6 /* DateModel.swift in Sources */, 960EFDE42A9497330036CEC1 /* MyProjectView.swift in Sources */, - FAB51C812A9677F00047A725 /* ButtonMainView.swift in Sources */, FAB51C8C2A9678870047A725 /* AnyViewExtension.swift in Sources */, A09ED4C62A95D5B200E6A626 /* CameraORImageModalView.swift in Sources */, 960EFDEA2A94A9C40036CEC1 /* ResumeData.swift in Sources */, - FAB51C832A9677F00047A725 /* PersonnelSheet.swift in Sources */, + D5755B0F2A9716E5000BC8E2 /* StudyRecruitModel.swift in Sources */, 960EFDE82A9497530036CEC1 /* MySkillView.swift in Sources */, 960EFDEC2A94FEAC0036CEC1 /* ResumeStore.swift in Sources */, A09ED4CC2A95F63700E6A626 /* MyStudyView.swift in Sources */, @@ -726,7 +782,6 @@ 6332A5FE2A95979A0047E2DD /* PostUserView.swift in Sources */, 632883782A94F57C004DC84E /* CommentView.swift in Sources */, 6332A6032A95D1220047E2DD /* ScrapView.swift in Sources */, - FAB51C822A9677F00047A725 /* DatePickerSheet.swift in Sources */, 9B35B2782A94593E00AD72D7 /* FeedView.swift in Sources */, A0BCB8E02A9495BF00A47841 /* LocationSheetView.swift in Sources */, FAB51C132A9655590047A725 /* LoginView.swift in Sources */, @@ -745,24 +800,17 @@ 649085BA2A96068600506F46 /* RecommendDetailView.swift in Sources */, 9B6B9B302A94A2AA004609AF /* FeedStore.swift in Sources */, 9B35B2822A947C7100AD72D7 /* FollowBtnView.swift in Sources */, - 9E99CCEE2A944A5700699B6A /* project02_teamB_OUR_consumerApp.swift in Sources */, - 9B6B9B322A94A3F2004609AF /* PostCommentStore.swift in Sources */, - 9B6B9B2E2A949F15004609AF /* IdData.swift in Sources */, + B7780E5C2A97857100A0B9F6 /* DateStore.swift in Sources */, 6332A6002A95A3640047E2DD /* PostButtonView.swift in Sources */, - 9B6B9B362A94A746004609AF /* PostData.swift in Sources */, - FAB51C7D2A9677E40047A725 /* DateStore.swift in Sources */, - 9B6B9B322A94A3F2004609AF /* PostCommentStore.swift in Sources */, 649085B82A96067A00506F46 /* RecommendFriendView.swift in Sources */, - 9B6B9B2E2A949F15004609AF /* IdData.swift in Sources */, FAB51C762A96755C0047A725 /* RecruitImagePicker.swift in Sources */, - FAB51C7C2A9677E40047A725 /* DateModel.swift in Sources */, 632883742A94DD31004DC84E /* PostView.swift in Sources */, - 9B6B9B362A94A746004609AF /* PostData.swift in Sources */, 9B35B2762A94590F00AD72D7 /* FeedTabView.swift in Sources */, 9B35B27C2A94595900AD72D7 /* TitleView.swift in Sources */, 6332A6052A95D12C0047E2DD /* ShareView.swift in Sources */, 632883762A94F0ED004DC84E /* PostDetailView.swift in Sources */, 9B35B27A2A94594C00AD72D7 /* SheetView.swift in Sources */, + B7780E4D2A977F7C00A0B9F6 /* ButtonMainView.swift in Sources */, 962B7E212A95F06700083790 /* MySkillMoreView.swift in Sources */, A09ED4BF2A949C2000E6A626 /* MyMainTabBar.swift in Sources */, 118AA96E2A95099F006946C3 /* SettingView.swift in Sources */, @@ -770,9 +818,8 @@ A09ED4CA2A95F62E00E6A626 /* MyBoardView.swift in Sources */, 118AA9702A95099F006946C3 /* MySkillEditView.swift in Sources */, 962B7E1D2A95F04800083790 /* MyProjectMoreView.swift in Sources */, - FAB51C952A96794B0047A725 /* AuthViewModel.swift in Sources */, + B7780E4B2A977F7C00A0B9F6 /* PersonnelSheet.swift in Sources */, 118AA9712A95099F006946C3 /* MyWorkEditView.swift in Sources */, - FAA6FC222A949FF2005E31DC /* Extension.swift in Sources */, A09ED4C82A95F45900E6A626 /* MyBookMarkView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -907,7 +954,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"project02-teamB-OUR-consumer/Preview Content\""; - DEVELOPMENT_TEAM = 2JZ8QNS5D4; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "project02-teamB-OUR-consumer/Info.plist"; @@ -938,7 +985,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"project02-teamB-OUR-consumer/Preview Content\""; - DEVELOPMENT_TEAM = 2JZ8QNS5D4; + DEVELOPMENT_TEAM = H996FSG2V2; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "project02-teamB-OUR-consumer/Info.plist"; @@ -953,7 +1000,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "jade.com.project02-teamB-OUR-consumer"; + PRODUCT_BUNDLE_IDENTIFIER = "linda.lionproject.project02-teamB-OUR-consumer"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/ImagePicker.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FifthTapModel/ImagePicker.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/ImagePicker.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FifthTapModel/ImagePicker.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/MyPageViewModel/ResumeData.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FifthTapModel/ResumeData.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/MyPageViewModel/ResumeData.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FifthTapModel/ResumeData.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/MyPageViewModel/ResumeStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FifthTapModel/ResumeStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/MyPageViewModel/ResumeStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FifthTapModel/ResumeStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/IdClassStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/IdClassStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/IdClassStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/IdClassStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/IdData.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/IdData.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/IdData.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/IdData.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/Model.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/Model.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/Model.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/Model.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/PostData.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/PostData.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Data/PostData.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/Data/PostData.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FeedStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/FeedStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FeedStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/FeedStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/IdStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/IdStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/IdStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/IdStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/PostCommentStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/PostCommentStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/PostCommentStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FirstTapModel/PostCommentStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AlarmViewModel/AlarmFireService.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapAlarmModel/AlarmFireService.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AlarmViewModel/AlarmFireService.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapAlarmModel/AlarmFireService.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AlarmViewModel/AlarmViewModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapAlarmModel/AlarmViewModel.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AlarmViewModel/AlarmViewModel.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapAlarmModel/AlarmViewModel.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AlarmViewModel/UNNotificationCenter.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapAlarmModel/UNNotificationCenter.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AlarmViewModel/UNNotificationCenter.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapAlarmModel/UNNotificationCenter.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/Color.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/Color.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/Color.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/Color.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/NotificationDTO.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/NotificationDTO.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/NotificationDTO.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/NotificationDTO.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/NotificationItem.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/NotificationItem.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/NotificationItem.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/NotificationItem.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/NotificationType.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/NotificationType.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/NotificationModel/NotificationType.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/FourthTapModel/FourthTapNotificationModel/NotificationType.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/SampleModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/SecondTapModel/SampleModel.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/SampleModel.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/SecondTapModel/SampleModel.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/StudyGroupStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/SecondTapModel/StudyGroupStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/StudyGroupStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/SecondTapModel/StudyGroupStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitModel.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitModel.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitModel.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitPHPicker.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitPHPicker.swift similarity index 84% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitPHPicker.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitPHPicker.swift index db11caf9..62b8f3eb 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitPHPicker.swift +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitPHPicker.swift @@ -53,6 +53,7 @@ struct FeedRecruitPHPickerViewControllerWrapper: UIViewControllerRepresentable { } } +//UIImage를 String으로 변환(파이어베이스) extension UIImage { func toString() -> String? { @@ -61,3 +62,14 @@ extension UIImage { return pngData?.base64EncodedString(options: .lineLength64Characters) } } + +//String을 UIImage로 변환(파이어베이스) +//yourString.toImage() <- it will convert String to UIImage +extension String { + func toImage() -> UIImage? { + if let data = Data(base64Encoded: self, options: .ignoreUnknownCharacters){ + return UIImage(data: data) + } + return nil + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitViewModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitViewModel.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FeedRecruitModel+Extension/FeedRecruitViewModel.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/FeedRecruitModel+Extension/FeedRecruitViewModel.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/DateModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/DateModel.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/DateModel.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/DateModel.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/DateStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/DateStore.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/DateStore.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/DateStore.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/RecruitImagePicker.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/RecruitImagePicker.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/RecruitImagePicker.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/RecruitImagePicker.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/SharedViewModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/SharedViewModel.swift new file mode 100644 index 00000000..c0982f3f --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/SharedViewModel.swift @@ -0,0 +1,13 @@ +// +// SharedViewModel.swift +// project02-teamB-OUR-consumer +// +// Created by 박서연 on 2023/08/24. +// + +import SwiftUI + +class SharedViewModel: ObservableObject { + @Published var selectedLocality: String = "" +} + diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/StudyLocationManager.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyLocationManager.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/StudyLocationManager.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyLocationManager.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyRecruitModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyRecruitModel.swift new file mode 100644 index 00000000..917a761e --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyRecruitModel.swift @@ -0,0 +1,42 @@ +// +// StudyRecruitModel.swift +// project02-teamB-OUR-consumer +// +// Created by 박서연 on 2023/08/24. +// + +import Foundation +import SwiftUI + +struct StudyRecruitModel { + var id: String = UUID().uuidString + var creator: String + var studyTitle: String + + var startAt: Date + var dueAt: Date + + var description: String + var isOnline: Bool + var isOffline: Bool + + var imageURL: [String] + var locationName: String // 이름 + var reportCount: Int // 신고 횟수 + + + private static let dateFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.dateFormat = "yy년 M월 dd일 HH:mm" + return formatter + }() + + var startDate: String { + return StudyRecruitModel.dateFormatter.string(from: startAt) + } + + var dueDate: String { + return StudyRecruitModel.dateFormatter.string(from: dueAt) + } + +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyRecruitStore.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyRecruitStore.swift new file mode 100644 index 00000000..47f255ec --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/ThirdTapModel/RecruitStudyModel/StudyRecruitStore.swift @@ -0,0 +1,82 @@ +// +// AddRecruitStore.swift +// project02-teamB-OUR-consumer +// +// Created by 박서연 on 2023/08/24. +// + +import Foundation +import FirebaseFirestore +import FirebaseFirestoreSwift + +class StudyRecruitStore: ObservableObject { + + @Published var studyStores: [StudyRecruitModel] = [] + + let dbRef = Firestore.firestore().collection("StudyPosts") + + func fetchFeeds() { + + dbRef.getDocuments { (snapshot, error) in + + self.studyStores.removeAll() + + if let snapshot { + var tempStudys: [StudyRecruitModel] = [] + + for document in snapshot.documents { + + + let id: String = document.documentID + let docData: [String: Any] = document.data() + let creator: String = docData["creator"] as? String ?? "" + let studyTitle: String = docData["studyTitle"] as? String ?? "" + + let description: String = docData["description"] as? String ?? "" + let isOnline: Bool = docData["isOnline"] as? Bool ?? false + let isOffline: Bool = docData["isOffline"] as? Bool ?? false + + let imageURL: [String] = docData["imageURL"] as? [String] ?? [] + let locationName: String = docData["locationName"] as? String ?? "" + let reportCount: Int = docData["reportCount"] as? Int ?? 0 + + let startAt: Date = docData["startAt"] as? Date ?? Date() + let dueAt: Date = docData["dueAt"] as? Date ?? Date() + + let studys = StudyRecruitModel(id: id, creator: creator, studyTitle: studyTitle, startAt: startAt, dueAt: dueAt, description: description, isOnline: isOnline, isOffline: isOffline, imageURL: imageURL, locationName: locationName, reportCount: reportCount) + tempStudys.append(studys) + } + + self.studyStores = tempStudys + } + } + } + + func addFeed(_ study: StudyRecruitModel) { + + dbRef.document(study.id) + .setData(["creator": study.creator, + "description": study.description, + "imageURL": study.imageURL, + "locationName": study.locationName, + "isOnline": study.isOnline, + "isOffline": study.isOffline, + "startAt": study.startAt, + "dueAt": study.dueAt, + "studyTitle": study.studyTitle, + "reportCount": study.reportCount]) + + fetchFeeds() + } + + + func removeFeed(_ study: StudyRecruitModel) { + + dbRef.document(study.id).delete() + + fetchFeeds() + } + + + +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/CameraORImageModalView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/CameraORImageModalView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/CameraORImageModalView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/CameraORImageModalView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/Inquiry/Inquiry.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/Inquiry/Inquiry.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/Inquiry/Inquiry.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/Inquiry/Inquiry.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/Inquiry/InquiryRow.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/Inquiry/InquiryRow.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/Inquiry/InquiryRow.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/Inquiry/InquiryRow.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/Inquiry/InquiryView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/Inquiry/InquiryView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/Inquiry/InquiryView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/Inquiry/InquiryView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyBoardView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyBoardView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyBoardView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyBoardView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyBookMarkView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyBookMarkView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyBookMarkView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyBookMarkView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyEduEditView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyEduEditView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyEduEditView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyEduEditView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyEduMoreView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyEduMoreView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyEduMoreView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyEduMoreView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyEduView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyEduView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyEduView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyEduView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyIntroEditView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyIntroEditView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyIntroEditView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyIntroEditView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyIntroView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyIntroView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyIntroView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyIntroView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyMainProfileEditView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyMainProfileEditView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyMainProfileEditView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyMainProfileEditView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyMainTabBar.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyMainTabBar.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyMainTabBar.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyMainTabBar.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyMainView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyMainView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyMainView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyMainView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyProjectEditView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyProjectEditView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyProjectEditView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyProjectEditView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyProjectMoreView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyProjectMoreView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyProjectMoreView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyProjectMoreView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyProjectView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyProjectView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyProjectView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyProjectView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyResumeView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyResumeView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyResumeView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyResumeView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MySkillEditView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MySkillEditView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MySkillEditView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MySkillEditView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MySkillMoreView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MySkillMoreView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MySkillMoreView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MySkillMoreView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MySkillView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MySkillView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MySkillView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MySkillView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyStudyView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyStudyView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyStudyView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyStudyView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyWorkEditView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyWorkEditView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyWorkEditView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyWorkEditView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyWorkMoreView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyWorkMoreView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyWorkMoreView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyWorkMoreView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyWorkView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyWorkView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/MyWorkView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/MyWorkView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/SettingView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/SettingView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/MyPageView/SettingView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FifthTapView/SettingView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/CommentView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/CommentView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/CommentView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/CommentView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/FeedTabView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FeedTabView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/FeedTabView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FeedTabView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/FeedView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FeedView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/FeedView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FeedView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FollowBtnView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FollowBtnView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FollowBtnView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FollowBtnView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FollowButtonView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FollowButtonView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/FollowButtonView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/FollowButtonView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostButtonView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostButtonView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostButtonView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostButtonView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostDetailView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostDetailView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostDetailView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostDetailView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostUserView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostUserView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostUserView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostUserView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/PostView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/PostView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/RecommendDetailView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/RecommendDetailView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/RecommendDetailView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/RecommendDetailView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/RecommendFriendView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/RecommendFriendView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/RecommendFriendView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/RecommendFriendView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/ScrapView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/ScrapView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/ScrapView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/ScrapView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/ShareView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/ShareView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedView/ShareView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/ShareView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/SheetView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/SheetView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/SheetView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/SheetView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/TitleView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/TitleView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/TitleView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FirstTapView/TitleView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/AlarmContainer.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/AlarmContainer.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/AlarmContainer.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/AlarmContainer.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/CustomTabView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/CustomTabView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/CustomTabView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/CustomTabView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/NotificationsListView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/NotificationsListView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/NotificationsListView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/NotificationsListView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/RemoteImageView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/RemoteImageView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/RemoteImageView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/RemoteImageView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/TestView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/TestView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/AlarmView/TestView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FourthTapView/TestView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/Login/AgreeTermView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/AgreeTermView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/Login/AgreeTermView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/AgreeTermView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AuthViewModel.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/AuthViewModel.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Model/AuthViewModel.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/AuthViewModel.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/Login/LoginSecondView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/LoginSecondView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/Login/LoginSecondView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/LoginSecondView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/Login/LoginView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/LoginView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/Login/LoginView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/LoginView+Model/LoginView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/LocationSheetView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/LocationSheetView.swift new file mode 100644 index 00000000..7b8257dc --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/LocationSheetView.swift @@ -0,0 +1,67 @@ +// +// LocationSheetView.swift +// project02-teamB-OUR-consumer +// +// Created by 여성은 on 2023/08/22. +// + +import SwiftUI +import MapKit + +struct Annotation: Identifiable { + var id: UUID = UUID() + let coordinate: CLLocationCoordinate2D +} + +struct LocationSheetView: View { + + @Binding var isShowingLocationSheet: Bool + + var locationName: String = "광화문역 사거리" + + var locationCoordinate: CLLocationCoordinate2D + + //locationCoordinate 여기서 안받아오면 region에 바로 쓸 수 있으려나!? + @State private var region = MKCoordinateRegion( + center: CLLocationCoordinate2D(latitude: 37.5718, + longitude: 126.9769), + span: MKCoordinateSpan(latitudeDelta: 0.008, longitudeDelta: 0.008)) + + var body: some View { + + NavigationStack { + HStack { + Image(systemName: "mappin.and.ellipse") + Text("\(locationName)") + .fontWeight(.heavy) + Spacer() + } + .navigationTitle("모임 장소 위치") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button { + isShowingLocationSheet = false + } label: { + Image(systemName: "xmark") + } + } + } + + Map(coordinateRegion: $region, + annotationItems: [Annotation(coordinate: locationCoordinate)]) { annotation in + MapMarker(coordinate: annotation.coordinate) + } + .frame(height: 250) + + + } + .padding() + } +} + +struct LocationSheetView_Previews: PreviewProvider { + static var previews: some View { + LocationSheetView(isShowingLocationSheet: .constant(false), locationCoordinate: CLLocationCoordinate2D(latitude: 37.5718, longitude: 126.9769)) + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyCommentReportView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyCommentReportView.swift new file mode 100644 index 00000000..c188e726 --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyCommentReportView.swift @@ -0,0 +1,97 @@ +// +// StudyCommentReportView.swift +// project02-teamB-OUR-consumer +// +// Created by 여성은 on 2023/08/23. +// + +import SwiftUI + +struct StudyCommentReportView: View { + + @Environment(\.dismiss) private var dismiss + @Environment(\.presentationMode) var mode: Binding + + var userId: String + var comment: StudyComment + + //신고유형들 쭈루룩 + let reports: [String] = ["스팸","사기 또는 거짓", "혐오 발언 또는 상징", "계정이 해킹당 했을 수 있음"] + + @State var showAlert: Bool = false + @State var reportCategory: String = "" + + @Binding var isEditing: Bool + + var body: some View { + NavigationStack { + Divider() + VStack(alignment: .leading) { + Text("신고하는 댓글") + .fontWeight(.heavy) + StudyReplyDetailView(isEditing: $isEditing, userId: "성은", comment: comment) + .padding(10) + .overlay( + RoundedRectangle(cornerRadius: 20) + .stroke(Color.gray, lineWidth: 0.5) + ) + + } + + Divider() + + Form { + Text("신고하는 이유") + .fontWeight(.heavy) + .padding([.bottom, .top], 5) + ForEach(reports, id: \.self) { report in + + Button { + reportCategory = report + showAlert = true + } label: { + Text("\(report)") + .padding(.bottom, 5) + + } + .foregroundColor(.black) + Divider() + + } + } + .formStyle(.columns) + + + + + Spacer() + } + .navigationTitle("신고하기") + .navigationBarTitleDisplayMode(.inline) + .navigationBarBackButtonHidden(true) + .navigationBarItems(leading: Button(action : { + self.mode.wrappedValue.dismiss() + }){ + Image(systemName: "chevron.backward") + }) + .padding() + .alert(isPresented: $showAlert) { + Alert(title: Text("신고하시겠습니까?"), + message: Text("\"\(reportCategory)\" 사유로 신고합니다"), + primaryButton: .destructive(Text("신고하기")) { + print(reportCategory) + dismiss()//뷰 닫기 + //신고관련된 함수넣기 + }, + secondaryButton: .cancel(Text("취소"))) + } + } +} + +struct StudyCommentReportView_Previews: PreviewProvider { + static var previews: some View { + NavigationStack{ + StudyCommentReportView(userId: "성은", comment: StudyComment(userId: "성은", content: "최악의 스터디 소개글이네여 ;;"), isEditing: .constant(true)) + } + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyDetailView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyDetailView.swift new file mode 100644 index 00000000..2248848e --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyDetailView.swift @@ -0,0 +1,186 @@ +// +// StudyDetailView.swift +// project02-teamB-OUR-consumer +// +// Created by yuri rho on 2023/08/22. +// + +import SwiftUI +import CoreLocation + +struct StudyDetailView: View { + + @Environment(\.presentationMode) var mode: Binding + + @State private var isShowingStudyMemberSheet: Bool = false + @State var isShowingLocationSheet: Bool = false + + var body: some View { + NavigationStack { + ScrollView(.vertical) { + VStack { + AsyncImage(url: URL(string: "https://imgnews.pstatic.net/image/076/2023/08/22/2023082301001627800208041_20230822162503835.jpg?type=w647")) { image in + image + .resizable() + .scaledToFill() + .frame(height: 200) + .clipped() + } placeholder: { + ProgressView() + } + .frame(maxWidth: .infinity) + .overlay(alignment:.bottom) { + VStack(alignment: .center, spacing: 10) { + Text("여성은") + .font(.system(size: 14, weight: .semibold)) + Text("iOS 개발자 면접 스터디 모집") + .font(.system(size: 16, weight: .bold)) + } + .padding(15) + .frame(maxWidth: .infinity) + .background(Color.white) + .cornerRadius(15) + .shadow(color: Color(red: 215 / 255, green: 215 / 255, blue: 215 / 255), radius: 5) + .padding(.horizontal, 20) + .offset(y:30) + } + + VStack { + + VStack { + Spacer(minLength: 20) + Text(""" + 안녕하세용? + 함께 ios 개발자 면접을 준비하실 분을 찾습니다!! + 같이 손흥민(31)을 향한 걱정은 '기우'였다. + 자신에게 놓인 '위기론'을 직접 해결했다.손흥민은 지난 20일(한국시간) 영국 런던의 토트넘 핫스퍼 스타디움에서 열린 맨체스터 유나이티드와의 '2023~2024시즌 잉글리시 프리미어리그(EPL)' 2라운드 홈 경기에서 풀타임을 뛰며 맹활약했다. + 이날 토트넘은 파페 사르와 벤 데이비스의 연속골로 난적 맨유를 2-0으로 꺾었다. + 경기 후 손흥민을 향한 찬사가 쏟아졌다. + 영국 '90MIN'은 "오랜 시간 스포츠 탈장으로 고생한 손흥민이 회복 후 다른 모습을 보였다. 이전보다 + """) + .font(.system(size: 14)) + .multilineTextAlignment(.leading) + .lineSpacing(3) + } + .padding(.horizontal, 20) + + Divider() + + VStack(alignment: .leading) { + HStack { + Image(systemName: "mappin" ) + .frame(width: 15) + Text("위치 : 종각역 할리스") + .font(.system(size: 14, weight: .semibold)) + .foregroundColor(.black) + Button { + isShowingLocationSheet = true + } label: { + Text("위치보기") + .font(.system(size: 9, weight: .semibold)) + .foregroundColor(.black) + .padding(3) + .border(Color(red: 215 / 255, green: 215 / 255, blue: 215 / 255)) + .background(Color(red: 215 / 255, green: 215 / 255, blue: 215 / 255)) + .cornerRadius(10) + } + } + + HStack { + Image(systemName: "person.3.fill" ) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 15) + Text("인원 : 최대 5명 (3/5)") + .font(.system(size: 14, weight: .semibold)) + .foregroundColor(.black) + Button { + isShowingStudyMemberSheet.toggle() + } label: { + Text("멤버보기") + .font(.system(size: 9, weight: .semibold)) + .foregroundColor(.black) + .padding(3) + .border(Color(red: 215 / 255, green: 215 / 255, blue: 215 / 255)) + .background(Color(red: 215 / 255, green: 215 / 255, blue: 215 / 255)) + .cornerRadius(10) + } + } + .padding(.bottom, 5) + + HStack{ + Image(systemName: "calendar" ) + .frame(width: 15) + Text("9월 1일 ~ 9월 30일 매주 토요일 14:00 ~ 16:00") + .font(.system(size: 14, weight: .semibold)) + .foregroundColor(.black) + } + + HStack { + Button { + print("") + } label: { + Text("참석") + .bold() + .frame(width: 180, height: 40) + .foregroundColor(.white) + .background(Color(red: 9 / 255, green: 5 / 255, blue: 128 / 255)) + .cornerRadius(20) + } + Button { + print("") + } label: { + Text("공유") + .bold() + .frame(width: 180, height: 40) + .foregroundColor(.black) + .background(Color(red: 215 / 255, green: 215 / 255, blue: 215 / 255)) + .cornerRadius(20) + } + } + } + .padding(15) + + Divider() + StudyReplyView() + + } + .padding(.top, 25) + } + } + .navigationBarBackButtonHidden(true) + .navigationBarItems(leading: Button(action : { + self.mode.wrappedValue.dismiss() + }){ + Image(systemName: "chevron.backward") + }) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button { + print("") + } label: { + Image(systemName: "bookmark") + .foregroundColor(Color(red: 251 / 255, green: 55 / 255, blue: 65 / 255)) + } + } + } + .sheet(isPresented: $isShowingStudyMemberSheet) { + StudyMemberSheetView(isShowingStudyMemberSheet: $isShowingStudyMemberSheet) + .presentationDetents([.medium, .large]) + } + .sheet(isPresented: $isShowingLocationSheet) { + LocationSheetView(isShowingLocationSheet: $isShowingLocationSheet, locationCoordinate: CLLocationCoordinate2D(latitude: 37.5718, longitude: 126.9769)) + .presentationDetents([.medium]) + } + } + } +} + +struct StudyDetailView_Previews: PreviewProvider { + static var previews: some View { + NavigationStack{ + StudyDetailView() + } + } + +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyListItemView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyListItemView.swift new file mode 100644 index 00000000..9bbceefe --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyListItemView.swift @@ -0,0 +1,80 @@ +// +// StudyListItemView.swift +// project02-teamB-OUR-consumer +// +// Created by 안지영 on 2023/08/22. +// + +import SwiftUI + +struct StudyListItemView: View { + + var study: Study + + @State var addBookmark: Bool = false + + var body: some View { + HStack(spacing: 20) { + AsyncImage(url: study.imageURL) { image in + image + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: 100, height: 100) + .cornerRadius(10) + } placeholder: { + ProgressView() + } + + + VStack(alignment: .leading) { + Text(study.title) + .font(.system(size: 16)) + .bold() + .foregroundColor(.black) + .lineLimit(2) + VStack(alignment: .leading, spacing: 5) { + Text(study.date) + Label(study.location, systemImage: "mappin.and.ellipse") + } + .font(.system(size: 12)) + .bold() + .foregroundColor(.gray) + + HStack { + HStack { + Image(systemName: "person.3.fill") + Text("\(study.currentMemberCount)/\(study.totalMemberCount)") + } + .font(.system(size: 12)) + .bold() + .foregroundColor(.gray) + + Spacer() + + Button { + addBookmark.toggle() + } label: { + Label("", systemImage: addBookmark ? "bookmark.fill" : "bookmark") + .font(.title2) + .foregroundColor(Color(red: 251 / 255, green: 55 / 255, blue: 65 / 255)) + } + } + } + } + .frame(width: 350, height: 90) + .padding() + .background( + RoundedRectangle(cornerRadius: 20) + .foregroundColor(.white) + .shadow(color: .gray, radius: 3, x: 1, y: 1) + .opacity(0.3) + ) + .padding([.leading, .trailing]) + } +} + +struct StudyListItemView_Previews: PreviewProvider { + static var previews: some View { + StudyListItemView(study: Study(imageURL: URL(string: "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuIT6b%2FbtrpDLcBnAW%2FFX4WsB9SKTiCxZlreaDjM0%2Fimg.png")!, title: "강남역에서 2시간 빡코딩해요!", date: "8월 25일 금 19:00", location: "강남역 스타벅스", isOnline: false, currentMemberCount: 1, totalMemberCount: 10)) + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyListView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyListView.swift new file mode 100644 index 00000000..ef6f0cae --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyListView.swift @@ -0,0 +1,80 @@ +// +// StudyListView.swift +// project02-teamB-OUR-consumer +// +// Created by 안지영 on 2023/08/22. +// + +import SwiftUI + +enum StudyList: String, CaseIterable, Identifiable { + var id: Self { self } + case allList = "전체보기" + case onlineList = "온라인" + case offlineList = "오프라인" +} + +struct StudyListView: View { + + @ObservedObject var studyStore = StudyStore() + + @State var searchText: String = "" + @State var isOnline: Bool = false + @State private var selectedArray: StudyList = .allList + + var body: some View { + NavigationStack { + HStack { + Spacer() + Picker(selection: $selectedArray) { + ForEach(StudyList.allCases) { value in + Text(value.rawValue).tag(value) + .font(.caption) + } + } label: { + Text("정렬기준") + } + .accentColor(.gray) + } + + NavigationLink { + StudyDetailView() + } label: { + ScrollView { + if selectedArray == .allList { + ForEach(studyStore.sortedStudy()) { study in + StudyListItemView(study: study) + } + } else if selectedArray == .onlineList { + ForEach(studyStore.sortedOnlineStudy()) { study in + StudyListItemView(study: study) + } + } else { + ForEach(studyStore.sortedOfflineStudy()) { study in + StudyListItemView(study: study) + } + } + } + } + .listStyle(.plain) + .navigationTitle("스터디 모임") + .toolbar { + ToolbarItem { + NavigationLink { + // SearchView() + } label: { + Label("검색", systemImage: "magnifyingglass") + .foregroundColor(.black) + } + + } + } + } + } +} + +struct StudyListView_Previews: PreviewProvider { + static var previews: some View { + StudyListView() + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyMemberSheetView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyMemberSheetView.swift new file mode 100644 index 00000000..f1d79d71 --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyMemberSheetView.swift @@ -0,0 +1,90 @@ +// +// StudyMemberSheetView.swift +// project02-teamB-OUR-consumer +// +// Created by yuri rho on 2023/08/23. +// + +import SwiftUI + +struct StudyMemberSheetView: View { + @Binding var isShowingStudyMemberSheet: Bool + + var body: some View { + NavigationStack { + VStack { + List { + Button { + print("") + } label: { + HStack { + AsyncImage(url: URL(string: "https://i.ibb.co/B3zSTgy/2023-08-23-9-52-35.png")) { image in + image + .resizable() + .scaledToFit() + .frame(width: 40, height: 40) + .cornerRadius(50) + } placeholder: { + ProgressView() + } + Text("안지영") + .font(.system(size: 14, weight: .semibold)) + } + } + Button { + print("") + } label: { + HStack { + AsyncImage(url: URL(string: "https://i.ibb.co/K2SMzgt/2023-08-23-10-26-57.png")) { image in + image + .resizable() + .scaledToFit() + .frame(width: 40, height: 40) + .cornerRadius(50) + } placeholder: { + ProgressView() + } + Text("전민석") + .font(.system(size: 14, weight: .semibold)) + } + } + Button { + print("") + } label: { + HStack { + AsyncImage(url: URL(string: "https://i.ibb.co/dfRykhp/2023-08-23-9-53-23.png")) { image in + image + .resizable() + .scaledToFit() + .frame(width: 40, height: 40) + .cornerRadius(50) + } placeholder: { + ProgressView() + } + Text("노유리") + .font(.system(size: 14, weight: .semibold)) + } + } + } + .listStyle(.plain) + } + .navigationTitle("참석멤버") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button { + isShowingStudyMemberSheet = false + } label: { + Image(systemName: "xmark") + } + } + } + } + } +} + +struct StudyMemberSheetView_Previews: PreviewProvider { + static var previews: some View { + StudyMemberSheetView(isShowingStudyMemberSheet: .constant(true)) + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyReplyDetailView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyReplyDetailView.swift new file mode 100644 index 00000000..e346f4d7 --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyReplyDetailView.swift @@ -0,0 +1,102 @@ +// +// StudyReplyDetailView.swift +// project02-teamB-OUR-consumer +// +// Created by 여성은 on 2023/08/22. +// + +import SwiftUI + +struct StudyReplyDetailView: View { + + + @State private var showAlert: Bool = false + @Binding var isEditing: Bool + + var userId: String + var comment: StudyComment + + var body: some View { + LazyVStack { + HStack { + Button { + //해당 프로필 시트 올려주는 ~ + } label: { + comment.profileImage + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 40) + .clipShape(Circle()) + } + + + VStack(alignment: .leading, spacing: 5){ + HStack { + Text(comment.userId) + .font(.system(size: 14)) + .fontWeight(.bold) + Text(comment.createdDate) + .font(.system(size: 12)) + .foregroundColor(.gray) +// Button { +// //대댓글 +// } label: { +// Text("Reply") +// .font(.system(size: 12)) +// .foregroundColor(.gray) +// } + + } + Text(comment.content) + .font(.system(size: 14)) + + } + Spacer() + + Menu { + if comment.userId == userId { + Button { + isEditing = true + } label: { + Text("수정하기") + } + // 삭제 : 포스트 아이디가 같은경우도 !!해보기 + Button { + showAlert = true + //삭제하는 func 만들어서 호출은 alert에서 + } label: { + Text("삭제하기") + } + } else { + NavigationLink { + StudyCommentReportView(userId: userId, comment: comment, isEditing: $isEditing) + } label: { + Text("신고하기") + .foregroundColor(.red) + } + } + } label: { + Image(systemName: "ellipsis") + .padding() + } + .foregroundColor(.gray) + } + } + .alert(isPresented: $showAlert) { + Alert(title: Text("정말 삭제하겠습니까?"), + message: Text("댓글을 삭제합니다"), + primaryButton: .destructive(Text("삭제")) { + //댓글삭제하는 함수 넣기 + }, + secondaryButton: .cancel(Text("취소"))) + } + + + } +} + +struct StudyReplyDetailView_Previews: PreviewProvider { + static var previews: some View { + StudyReplyDetailView(isEditing: .constant(true), userId: "성은", comment: StudyComment(userId: "성은", content: "최악의 스터디 소개글이네여 ;;")) + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyReplyView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyReplyView.swift new file mode 100644 index 00000000..80cb47fa --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/SecondTapView/StudyReplyView.swift @@ -0,0 +1,101 @@ +// +// StudyReplyView.swift +// project02-teamB-OUR-consumer +// +// Created by 여성은 on 2023/08/22. +// + +import SwiftUI + +struct StudyComment: Identifiable { + var id: UUID = UUID() + var userId: String // 이것도 포스트아이디처럼 따로 받아와야되나?! + var profileString: String? + var content: String + var createdAt: Double = Date().timeIntervalSince1970 + + var profileImage: Image { + Image(profileString ?? "OUR_Logo") + } + var createdDate: String { + let dateCreatedAt: Date = Date(timeIntervalSince1970: createdAt) + + let dateFormatter: DateFormatter = DateFormatter() + dateFormatter.locale = Locale(identifier: "ko_kr") + dateFormatter.timeZone = TimeZone(abbreviation: "KST") + dateFormatter.dateFormat = "MM월 dd일 HH시 mm분" + + return dateFormatter.string(from: dateCreatedAt) + } + +} + +struct StudyReplyView: View { + + @State var isEditing: Bool = true + + @State var studyGroupComments: [StudyComment] = [ + StudyComment(userId: "유리", profileString: "yuriProfile", content: "1빠"), + StudyComment(userId: "지영", content: "최고의 스터디네요~"), + StudyComment(userId: "성은", content: "최악의 스터디 소개글이네여 ;;"), + StudyComment(userId: "소정", profileString: "sojungProfile", content: "오 안녕하세요") + ] + + var userId: String = "성은" + @State var content: String = "" + + var body: some View { + VStack{ + //List { + ForEach($studyGroupComments) { $comment in + StudyReplyDetailView(isEditing: $isEditing, userId: "성은", comment: comment) + } + // } + .listStyle(.plain) + .refreshable { + //새로고침 + } + .padding([.horizontal, .bottom], 10) + .padding([.leading,.trailing], 8) + + + HStack { + //프로필 이미지 + Image("OUR_Logo") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 40) + .clipShape(Circle()) + //댓글입력창 + if isEditing { + TextField("Edit reply",text: $studyGroupComments[2].content) + .onTapGesture { + studyGroupComments[2].content = "" + } + Button("Edit") { + studyGroupComments[2].content = content + //나중에 패치같은거하면 될듯 ~. .....아님... 뭐... 추후생각 + isEditing = false + } + } else { + TextField("Add reply", text: $content, axis: .vertical) + Button("Add") { + let comment: StudyComment = StudyComment(userId: "로그인된 유저아이디", content: content) + studyGroupComments.append(comment) + content = "" + } + } + } + .padding() + + } + } +} + +struct StudyReplyView_Previews: PreviewProvider { + @State var studyReplies: [String] = ["1빠", "2빠"] + static var previews: some View { + StudyReplyView() + + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/ButtonMainView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/ButtonMainView.swift similarity index 87% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/ButtonMainView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/ButtonMainView.swift index 0cdd7dc4..5d8b7b09 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/ButtonMainView.swift +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/ButtonMainView.swift @@ -13,10 +13,13 @@ struct ButtonMainView: View { @State var isShowingDateSheet: Bool = false @State var isShowingPersonSheet: Bool = false - @State var startDate: Date - @State var endDate: Date +// @State var startDate: Date +// @State var endDate: Date + @Binding var startDate: Date + @Binding var endDate: Date + @Binding var number: Int - @State var number: Int = 1 +// @State var number: Int = 1 var body: some View { VStack { @@ -71,8 +74,8 @@ struct ButtonMainView: View { } -struct ButtonMainView_Previews: PreviewProvider { - static var previews: some View { - ButtonMainView(startDate: Date(), endDate: Date()) - } -} +//struct ButtonMainView_Previews: PreviewProvider { +// static var previews: some View { +// ButtonMainView(startDate: Date(), endDate: Date()) +// } +//} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/CustomTabBar/CustomTabBarView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/CustomTabBar/CustomTabBarView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/CustomTabBar/CustomTabBarView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/CustomTabBar/CustomTabBarView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/CustomTabBar/PostButton.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/CustomTabBar/PostButton.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/CustomTabBar/PostButton.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/CustomTabBar/PostButton.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/CustomTabBar/RecruitButton.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/CustomTabBar/RecruitButton.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/CustomTabBar/RecruitButton.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/CustomTabBar/RecruitButton.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/Screen/RecruitMainSheet.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/Screen/RecruitMainSheet.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/CustomModalTabView/Screen/RecruitMainSheet.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/CustomModalTabView/Screen/RecruitMainSheet.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/DatePickerSheet.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/DatePickerSheet.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/DatePickerSheet.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/DatePickerSheet.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/PersonnelSheet.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/PersonnelSheet.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/PersonnelSheet.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/PersonnelSheet.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/FeedRecruitPhotoAddView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitFeedView/FeedRecruitPhotoAddView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/FeedRecruitPhotoAddView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitFeedView/FeedRecruitPhotoAddView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/FeedRecruitView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitFeedView/FeedRecruitView.swift similarity index 93% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/FeedRecruitView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitFeedView/FeedRecruitView.swift index c21e41ec..999b10a3 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/FeedRecruitView/FeedRecruitView.swift +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitFeedView/FeedRecruitView.swift @@ -22,10 +22,15 @@ struct FeedRecruitView: View { @State var placeholder: String = "Share Your Idea In OUR." @State var locationAddress: String = "" @State var selectedImages: [UIImage] = [] -// var toString: String { + + +// 이와 같은 에러로 인하여 String 변환 포기 ㅠ (Request payload size exceeds the limit: 11534336 bytes.) +// var toString:String { +// +// selectedImages.first?.toString() ?? "" // -// UIImage.toString(selectedImages) // } + var body: some View { @@ -42,7 +47,7 @@ struct FeedRecruitView: View { Spacer() } HStack{ - + //현재 위치설정 버튼 Button { @@ -75,23 +80,23 @@ struct FeedRecruitView: View { //사진추가 View FeedRecruitPhotoAddView(selectedImages: $selectedImages) - + } .toolbar { ToolbarItem(placement:.navigationBarLeading) { Button("취소") { toolbarToogle.toggle() dismiss() + } } ToolbarItem(placement:.navigationBarTrailing) { Button("등록") { let newFeed = FeedRecruitModel(creator: "", content: contentText, imageURL: [""], location: locationAddress, privateSetting: privacySetting.setting, reportCount: 0) - + print("등록성공") feedStoreViewModel.addFeed(newFeed) - contentText = "" - + selectedImages = [] toolbarToogle.toggle() }.disabled(contentText.isEmpty) } diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/AddStudyMain.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/AddStudyMain.swift similarity index 71% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/AddStudyMain.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/AddStudyMain.swift index 8604431e..a3d124ea 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/AddStudyMain.swift +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/AddStudyMain.swift @@ -10,6 +10,7 @@ import SwiftUI struct AddStudyMain: View { @Environment(\.dismiss) private var dismiss: DismissAction + @StateObject var studyStoreViewModel: StudyRecruitStore = StudyRecruitStore() @State var studyTitle: String = "" @State var addStudy: Bool = false @@ -20,6 +21,11 @@ struct AddStudyMain: View { @State var studyText: String = "" @State var placeholder: String = "스터디 내용을 입력해주세요." + @State var number: Int = 1 + @State var startDate: Date = Date() + @State var dueDate: Date = Date() + + var body: some View { NavigationView { ScrollView { @@ -33,16 +39,16 @@ struct AddStudyMain: View { .padding(.bottom, 20) // MARK: - 온/오프라인 선택 - MeetingFormView(onlineToggle: $onlineToggle, offlineToggle: $offlineToggle) + StudyMeetingView(onlineToggle: $onlineToggle, offlineToggle: $offlineToggle) .padding(.bottom, 20) // MARK: - 날짜 Text("날짜와 인원을 선택해주세요.") .font(.title2) .padding(.bottom, 20) - VStack { - ButtonMainView(startDate: Date(), endDate: Date()) - } +// VStack { + ButtonMainView(startDate: $startDate, endDate: $dueDate, number: $number) +// } // MARK: - 스터디 내용 Text("스터디 내용을 입력해주세요.") @@ -51,10 +57,6 @@ struct AddStudyMain: View { TextEditor(text: $studyText) .frame(minHeight:350, maxHeight:350) .border(.gray) - - - - if studyText.isEmpty { Text(placeholder) .foregroundColor(.secondary) @@ -73,11 +75,15 @@ struct AddStudyMain: View { .padding(20) .toolbar { ToolbarItem(placement: .navigationBarTrailing) { - Button("추가") { + Button("등록") { + print("등록 버튼 tapped") +// let newStudy = StudyRecruitModel(creator: "", studyTitle: studyTitle, description: studyText, isOnline: onlineToggle, isOffline: offlineToggle, imageURL: [""], locationName: "", reportCount: 0) + let newStudy = StudyRecruitModel(creator: "", studyTitle: studyTitle, startAt: startDate, dueAt: dueDate, description: studyText, isOnline: onlineToggle, isOffline: offlineToggle, imageURL: [""], locationName: "", reportCount: 0) + + studyStoreViewModel.addFeed(newStudy) + addStudy.toggle() - print(addStudy) - print("추가 버튼 tapped") - } + }.disabled(studyTitle.isEmpty || studyText.isEmpty) } } .toolbar { diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/ButtonMainView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/ButtonMainView.swift new file mode 100644 index 00000000..5d8b7b09 --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/ButtonMainView.swift @@ -0,0 +1,81 @@ +// +// ButtonMainView.swift +// project02-teamB-OUR-consumer +// +// Created by 송성욱 on 2023/08/23. +// + +import SwiftUI + +struct ButtonMainView: View { + @ObservedObject var dateStore: DateStore = DateStore() + + @State var isShowingDateSheet: Bool = false + @State var isShowingPersonSheet: Bool = false + +// @State var startDate: Date +// @State var endDate: Date + @Binding var startDate: Date + @Binding var endDate: Date + @Binding var number: Int + +// @State var number: Int = 1 + + var body: some View { + VStack { + HStack { + Button { + isShowingDateSheet.toggle() + } label: { + VStack { + Text("기간 설정") + .padding().frame(width: 150) + .foregroundColor(Color.black) + + } + + } + .buttonStyle(.bordered) + .buttonBorderShape(.roundedRectangle(radius: 8)) + .shadow(radius: 8) + .sheet(isPresented: $isShowingDateSheet) { + DatePickerSheet(dateStore: DateStore(), isShowingDateSheet: $isShowingDateSheet, startDate: $startDate, endDate: $endDate) + .presentationDetents([.fraction(0.45)]) + + } + Text("시작: \(startDate.formatted(.dateTime))") + Text("마감: \(endDate.formatted(.dateTime))") + } + + HStack { + Button { + isShowingPersonSheet.toggle() + } label: { + Text("인원수 선택") + .padding().frame(width: 150) + .foregroundColor(Color.black) + } + .buttonStyle(.bordered) + .buttonBorderShape(.roundedRectangle(radius: 8)) + .shadow(radius: 8) + .sheet(isPresented: $isShowingPersonSheet) { + PersonnelSheet(isShowingPersonSheet: $isShowingPersonSheet, number: $number) + .presentationDetents([.fraction(0.45)]) + } + + Spacer().frame(width: 137) + Text("인원: \(number)명") + + } + + + } + } + } + + +//struct ButtonMainView_Previews: PreviewProvider { +// static var previews: some View { +// ButtonMainView(startDate: Date(), endDate: Date()) +// } +//} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/DatePickerSheet.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/DatePickerSheet.swift new file mode 100644 index 00000000..5c7ae4c8 --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/DatePickerSheet.swift @@ -0,0 +1,67 @@ +// +// DatePickerSheet.swift +// project02-teamB-OUR-consumer +// +// Created by 송성욱 on 2023/08/23. +// + +import SwiftUI + +struct DatePickerSheet: View { + @ObservedObject var dateStore: DateStore = DateStore() + + @Binding var isShowingDateSheet: Bool + @Binding var startDate: Date + @Binding var endDate: Date + + + var body: some View { + VStack(alignment: .center) { + HStack { + Text("날짜 설정하기") + Spacer() + + Button { + isShowingDateSheet = false + } label: { + Image(systemName: "xmark") + .foregroundColor(Color.black) + } + + } + Divider() + Spacer().frame(height: 30) + + DatePicker(selection: $startDate, displayedComponents: .date) { + Text("시작일자") + } + + .environment(\.locale, Locale(identifier: "ko_KR")) + + Divider() + Spacer().frame(height: 30) + DatePicker(selection: $endDate, displayedComponents: .date) { + Text("마감일자") + } + + .environment(\.locale, Locale(identifier: "ko_KR")) + Divider() + Button { + dateStore.addDate(id: UUID(), startDate: startDate, endDate: endDate) + isShowingDateSheet = false + } label: { + Text("설정하기") + .foregroundColor(Color.black) + } + + } + .padding() + .font(.title2) + } +} + +struct DatePickerSheet_Previews: PreviewProvider { + static var previews: some View { + DatePickerSheet(isShowingDateSheet: .constant(true), startDate: .constant(Date()), endDate: .constant(Date())) + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/PersonnelSheet.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/PersonnelSheet.swift new file mode 100644 index 00000000..a16c0104 --- /dev/null +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/PersonnelSheet.swift @@ -0,0 +1,51 @@ +// +// PersonnelSheet.swift +// project02-teamB-OUR-consumer +// +// Created by 송성욱 on 2023/08/23. +// + +import SwiftUI + +struct PersonnelSheet: View { + @Binding var isShowingPersonSheet: Bool + @Binding var number: Int + + var body: some View { + VStack { + HStack { + Text("인원 선택") + Spacer() + Button { + isShowingPersonSheet = false + } label: { + Image(systemName: "xmark") + .foregroundColor(Color.black) + } + } + Divider() + Picker("Your age", selection: $number) { + ForEach(1...20, id: \.self) { number in + Text("\(number)") + } + } + .pickerStyle(.wheel) + Divider() + + Button { + isShowingPersonSheet = false + } label: { + Text("선택하기") + .foregroundColor(Color.black) + } + } + .padding() + .font(.title2) + } +} + +struct PersonnelSheet_Previews: PreviewProvider { + static var previews: some View { + PersonnelSheet(isShowingPersonSheet: .constant(true), number: .constant(0)) + } +} diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/StudyImageView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyImageView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/StudyImageView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyImageView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/StudyMapView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyMapView.swift similarity index 100% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/StudyMapView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyMapView.swift diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/MeetingFormView.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyMeetingView.swift similarity index 84% rename from project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/MeetingFormView.swift rename to project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyMeetingView.swift index 485cb2e7..23488609 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/RecruitStudyView/MeetingFormView.swift +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/Views/ThirdTapView/RecruitStudyView/StudyMeetingView.swift @@ -7,7 +7,7 @@ import SwiftUI -struct MeetingFormView: View { +struct StudyMeetingView: View { @Binding var onlineToggle: Bool @Binding var offlineToggle: Bool @@ -33,9 +33,9 @@ struct MeetingFormView: View { .padding() .frame(maxWidth: .infinity, maxHeight: 40) .foregroundColor(.white) - .background(.blue) + .background(mainColor) .cornerRadius(10) - .overlay(RoundedRectangle(cornerRadius: 10).stroke(Color.blue, lineWidth: 1)) + .overlay(RoundedRectangle(cornerRadius: 10).stroke(mainColor, lineWidth: 1)) } } @@ -48,16 +48,16 @@ struct MeetingFormView: View { .padding() .frame(maxWidth: .infinity, maxHeight: 40) .foregroundColor(.gray) - .cornerRadius(10) +// .cornerRadius(10) .overlay(RoundedRectangle(cornerRadius: 10).stroke(Color.gray, lineWidth: 1)) } else { Text("오프라인") .padding() .frame(maxWidth: .infinity, maxHeight: 40) .foregroundColor(.white) - .background(.blue) + .background(mainColor) .cornerRadius(10) - .overlay(RoundedRectangle(cornerRadius: 10).stroke(Color.blue, lineWidth: 1)) + .overlay(RoundedRectangle(cornerRadius: 10).stroke(mainColor, lineWidth: 1)) } } @@ -66,8 +66,8 @@ struct MeetingFormView: View { } } -struct MeetingFormView_Previews: PreviewProvider { +struct StudyMeetingView_Previews: PreviewProvider { static var previews: some View { - MeetingFormView(onlineToggle: .constant(true), offlineToggle: .constant(true)) + StudyMeetingView(onlineToggle: .constant(true), offlineToggle: .constant(true)) } } diff --git a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/project02_teamB_OUR_consumerApp.swift b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/project02_teamB_OUR_consumerApp.swift index b9b3722c..1d05b9a9 100644 --- a/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/project02_teamB_OUR_consumerApp.swift +++ b/project02-teamB-OUR-consumer/project02-teamB-OUR-consumer/project02_teamB_OUR_consumerApp.swift @@ -60,6 +60,7 @@ struct project02_teamB_OUR_consumerApp: App { WindowGroup { NavigationStack { LoginView() +// AddStudyMain() } } }