From 80b136a448547dbebf0b076f7186166710d03c3d Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 11:47:34 +0900 Subject: [PATCH 001/107] =?UTF-8?q?[Chore]=20#644=20-=20.gitignore=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .xcconfig 파일 무시. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bc5c7ae8..52635be0 100644 --- a/.gitignore +++ b/.gitignore @@ -128,7 +128,7 @@ iOSInjectionProject/ # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - +*.xcconfig ## Gcc Patch /*.gcno From 2d3186a50b3be717161136faff48d5a3b444b7b6 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 11:47:59 +0900 Subject: [PATCH 002/107] =?UTF-8?q?[Chore]=20#644=20-=20XCConfig=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EB=B0=8F=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 986c24ab..5e324214 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -174,6 +174,10 @@ F82F580C27929F74003E4174 /* Header.swift in Sources */ = {isa = PBXBuildFile; fileRef = F82F580B27929F74003E4174 /* Header.swift */; }; F82F580E27930FD4003E4174 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = F82F580D27930FD4003E4174 /* GoogleService-Info.plist */; }; F82F58112793B3FF003E4174 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = F82F58102793B3FF003E4174 /* .swiftlint.yml */; }; + F8371A3128E7E1A400868718 /* Shared.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A2D28E7E1A400868718 /* Shared.xcconfig */; }; + F8371A3228E7E1A400868718 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A2E28E7E1A400868718 /* Debug.xcconfig */; }; + F8371A3328E7E1A400868718 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A2F28E7E1A400868718 /* Release.xcconfig */; }; + F8371A3428E7E1A400868718 /* Beta.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A3028E7E1A400868718 /* Beta.xcconfig */; }; F8404E8B27AB835F004AEDC3 /* SendSparkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8404E8A27AB835F004AEDC3 /* SendSparkButton.swift */; }; F849521427FFDB8B00D91B6B /* NewNotice.swift in Sources */ = {isa = PBXBuildFile; fileRef = F849521327FFDB8B00D91B6B /* NewNotice.swift */; }; F85036CC27E2567C00F02751 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85036CB27E2567C00F02751 /* NotificationService.swift */; }; @@ -417,6 +421,10 @@ F82F580D27930FD4003E4174 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; F82F58102793B3FF003E4174 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; F8368FAA278F5DFF00110B74 /* Spark-iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Spark-iOS.entitlements"; sourceTree = ""; }; + F8371A2D28E7E1A400868718 /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; + F8371A2E28E7E1A400868718 /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + F8371A2F28E7E1A400868718 /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + F8371A3028E7E1A400868718 /* Beta.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Beta.xcconfig; sourceTree = ""; }; F8404E8A27AB835F004AEDC3 /* SendSparkButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendSparkButton.swift; sourceTree = ""; }; F849521327FFDB8B00D91B6B /* NewNotice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewNotice.swift; sourceTree = ""; }; F85036C927E2567C00F02751 /* SparkNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SparkNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -960,6 +968,7 @@ isa = PBXGroup; children = ( F82F58102793B3FF003E4174 /* .swiftlint.yml */, + F8371A2C28E7E1A400868718 /* XCConfig */, F8096F022784107D00B71D38 /* Spark-iOS */, F85036CA27E2567C00F02751 /* SparkNotificationService */, F8096F012784107D00B71D38 /* Products */, @@ -1318,6 +1327,17 @@ path = Home; sourceTree = ""; }; + F8371A2C28E7E1A400868718 /* XCConfig */ = { + isa = PBXGroup; + children = ( + F8371A2D28E7E1A400868718 /* Shared.xcconfig */, + F8371A2E28E7E1A400868718 /* Debug.xcconfig */, + F8371A2F28E7E1A400868718 /* Release.xcconfig */, + F8371A3028E7E1A400868718 /* Beta.xcconfig */, + ); + path = XCConfig; + sourceTree = ""; + }; F85036CA27E2567C00F02751 /* SparkNotificationService */ = { isa = PBXGroup; children = ( @@ -1496,6 +1516,7 @@ 2B9852092790ACF000CE40A7 /* CreateAuth.storyboard in Resources */, 2BBFEFBF279B214300C085E4 /* loading3.json in Resources */, F80A3E4D278C182100728E07 /* MainTabBar.storyboard in Resources */, + F8371A3228E7E1A400868718 /* Debug.xcconfig in Resources */, 2BE65F5127C3E34B005D370D /* RoomStart.storyboard in Resources */, EB9C509A27931E5F00588155 /* AuthUpload.storyboard in Resources */, F828181E2813169200D3E26C /* SingleResponseDialogue.storyboard in Resources */, @@ -1525,6 +1546,8 @@ F8F6D6F52797359600725537 /* HabitRoom.storyboard in Resources */, F82B2E0E278ED01F00219628 /* Splash.storyboard in Resources */, EBE90FDC279612CA00157075 /* SendSpark.storyboard in Resources */, + F8371A3328E7E1A400868718 /* Release.xcconfig in Resources */, + F8371A3128E7E1A400868718 /* Shared.xcconfig in Resources */, F8902FB927ED84060034E8F9 /* Withdrawal.storyboard in Resources */, 2B54D01927D3B8170060DA06 /* FeedReport.storyboard in Resources */, F80A3E51278C1BCE00728E07 /* Feed.storyboard in Resources */, @@ -1537,6 +1560,7 @@ F8F6D6FC2797527A00725537 /* HabitRoomMemberCVC.xib in Resources */, 2B9852032790310800CE40A7 /* CreateRoom.storyboard in Resources */, F80B02D127EC1BDC00D63B45 /* homeCardSuccess.json in Resources */, + F8371A3428E7E1A400868718 /* Beta.xcconfig in Resources */, F80A3E53278C1C0C00728E07 /* Storage.storyboard in Resources */, F82F58112793B3FF003E4174 /* .swiftlint.yml in Resources */, EB625E7C278F271400C43DE9 /* DoingStorageCVC.xib in Resources */, From a393c6de77444e39b61919bd34f852847738d5f8 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 12:03:42 +0900 Subject: [PATCH 003/107] =?UTF-8?q?[Chore]=20#644=20-=20Build=20Configurat?= =?UTF-8?q?ion=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Beta Configuration 추가. - .xcconfig 파일 매칭 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 139 +++++++++++++++++- 1 file changed, 135 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 5e324214..7ca9870f 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -317,6 +317,7 @@ 2BF3AB48279479B8001A9042 /* RoomAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomAPI.swift; sourceTree = ""; }; 2BF3AB4B27947C50001A9042 /* WaitingRoom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingRoom.swift; sourceTree = ""; }; 3F3E6E986D8C9F3A27A30253 /* Pods-Spark-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spark-iOS.release.xcconfig"; path = "Target Support Files/Pods-Spark-iOS/Pods-Spark-iOS.release.xcconfig"; sourceTree = ""; }; + 9CDB2BC50C4921D4EE5A9701 /* Pods-Spark-iOS.beta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spark-iOS.beta.xcconfig"; path = "Target Support Files/Pods-Spark-iOS/Pods-Spark-iOS.beta.xcconfig"; sourceTree = ""; }; C35EB7FFC7E2CF05E63983A7 /* Pods-Spark-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spark-iOS.debug.xcconfig"; path = "Target Support Files/Pods-Spark-iOS/Pods-Spark-iOS.debug.xcconfig"; sourceTree = ""; }; E41C0A73912FEE9D1B2F72ED /* Pods_Spark_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spark_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EB01BC0F27C8DFBA00041A35 /* SparkActionSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SparkActionSheet.swift; sourceTree = ""; }; @@ -756,6 +757,7 @@ children = ( C35EB7FFC7E2CF05E63983A7 /* Pods-Spark-iOS.debug.xcconfig */, 3F3E6E986D8C9F3A27A30253 /* Pods-Spark-iOS.release.xcconfig */, + 9CDB2BC50C4921D4EE5A9701 /* Pods-Spark-iOS.beta.xcconfig */, ); path = Pods; sourceTree = ""; @@ -1955,7 +1957,7 @@ }; F8096F152784107E00B71D38 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C35EB7FFC7E2CF05E63983A7 /* Pods-Spark-iOS.debug.xcconfig */; + baseConfigurationReference = F8371A2E28E7E1A400868718 /* Debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1963,7 +1965,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -1993,7 +1995,7 @@ }; F8096F162784107E00B71D38 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F3E6E986D8C9F3A27A30253 /* Pods-Spark-iOS.release.xcconfig */; + baseConfigurationReference = F8371A2F28E7E1A400868718 /* Release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -2001,7 +2003,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2029,6 +2031,132 @@ }; name = Release; }; + F8371A3528E7E21700868718 /* Beta */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Beta; + }; + F8371A3628E7E21700868718 /* Beta */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F8371A3028E7E1A400868718 /* Beta.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 3; + DEVELOPMENT_TEAM = T8C9SSEX5G; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = Spark; + INFOPLIST_KEY_NSCameraUsageDescription = "프로필 사진 설정 및 변경, 습관 인증을 위해 카메라 권한을 허락해 주세요."; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "프로필 사진 설정 및 변경, 습관 인증을 위해 앨범 권한을 허락해 주세요."; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UIUserInterfaceStyle = Light; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0.3; + PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Beta; + }; + F8371A3728E7E21700868718 /* Beta */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = T8C9SSEX5G; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SparkNotificationService/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = SparkNotificationService; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.1; + PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark.SparkNotificationService; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Beta; + }; F85036D227E2567C00F02751 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2090,6 +2218,7 @@ isa = XCConfigurationList; buildConfigurations = ( F8096F122784107E00B71D38 /* Debug */, + F8371A3528E7E21700868718 /* Beta */, F8096F132784107E00B71D38 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -2099,6 +2228,7 @@ isa = XCConfigurationList; buildConfigurations = ( F8096F152784107E00B71D38 /* Debug */, + F8371A3628E7E21700868718 /* Beta */, F8096F162784107E00B71D38 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -2108,6 +2238,7 @@ isa = XCConfigurationList; buildConfigurations = ( F85036D227E2567C00F02751 /* Debug */, + F8371A3728E7E21700868718 /* Beta */, F85036D327E2567C00F02751 /* Release */, ); defaultConfigurationIsVisible = 0; From d6e93ea137dfb95f2640caa8ccb76a8363f7706a Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 12:05:16 +0900 Subject: [PATCH 004/107] =?UTF-8?q?[Chore]=20#644=20-=20Build=20Scheme=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Spark-beta/debug/release 추가 - 각 빌드 스키마에 configuration 매칭 --- .../xcschemes/Spark-beta.xcscheme | 78 +++++++++++++++++++ ...park-iOS.xcscheme => Spark-debug.xcscheme} | 0 .../xcschemes/Spark-release.xcscheme | 78 +++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-beta.xcscheme rename Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/{Spark-iOS.xcscheme => Spark-debug.xcscheme} (100%) create mode 100644 Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-release.xcscheme diff --git a/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-beta.xcscheme b/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-beta.xcscheme new file mode 100644 index 00000000..2877b26e --- /dev/null +++ b/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-beta.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-iOS.xcscheme b/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-debug.xcscheme similarity index 100% rename from Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-iOS.xcscheme rename to Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-debug.xcscheme diff --git a/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-release.xcscheme b/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-release.xcscheme new file mode 100644 index 00000000..78a32e74 --- /dev/null +++ b/Spark-iOS/Spark-iOS.xcodeproj/xcshareddata/xcschemes/Spark-release.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3675abedb3fd3945308ed88d55877a592cb9fa5b Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 12:07:33 +0900 Subject: [PATCH 005/107] =?UTF-8?q?[Chore]=20#644=20-=20=ED=99=98=EA=B2=BD?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - plist 에 BaseURL 과 KakaoNativeAppKey 설정 --- Spark-iOS/Spark-iOS/Resource/Info.plist | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Resource/Info.plist b/Spark-iOS/Spark-iOS/Resource/Info.plist index c4428c16..db59432c 100644 --- a/Spark-iOS/Spark-iOS/Resource/Info.plist +++ b/Spark-iOS/Spark-iOS/Resource/Info.plist @@ -2,6 +2,8 @@ + BaseURL + $(BASE_URL) CFBundleURLTypes @@ -9,7 +11,7 @@ Editor CFBundleURLSchemes - kakaod51e83bca123750446afc70ab65225b9 + kakao$(KAKAO_NATIVE_APP_KEY) @@ -25,6 +27,8 @@ FirebaseMessagingAutoInitEnabled No + KakaoNativeAppKey + $(KAKAO_NATIVE_APP_KEY) LSApplicationQueriesSchemes kakaokompassauth From 264b1e8346abc14b9a75561b99a3c7ca9d23a5ce Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 12:09:16 +0900 Subject: [PATCH 006/107] =?UTF-8?q?[Refactor]=20#644=20-=20info.plist=20?= =?UTF-8?q?=EC=97=90=EC=84=9C=20BaseURL=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS/Resource/Constants/URL.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/URL.swift b/Spark-iOS/Spark-iOS/Resource/Constants/URL.swift index bcfafbd8..7ee7fa95 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/URL.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/URL.swift @@ -9,7 +9,7 @@ import Foundation extension Const { struct URL { - static let baseURL = "https://asia-northeast3-we-sopt-spark.cloudfunctions.net/api" + static let baseURL = Bundle.main.object(forInfoDictionaryKey: "BaseURL") as? String ?? "" /// 약관 및 정책 static let tosURL = "https://jealous-supernova-274.notion.site/433c8d2f5fdd4826a836293e522f1d51" /// 오픈소스 라이브러리 From aacf0dc09cb5051ba59f4c4ed0b45c7b1dcc578d Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 1 Oct 2022 12:09:33 +0900 Subject: [PATCH 007/107] =?UTF-8?q?[Refactor]=20#644=20-=20info.plist=20?= =?UTF-8?q?=EC=97=90=EC=84=9C=20KakaoNativeAppKey=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS/Source/AppDelegate.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/AppDelegate.swift b/Spark-iOS/Spark-iOS/Source/AppDelegate.swift index d3ffe1c6..8d61d046 100644 --- a/Spark-iOS/Spark-iOS/Source/AppDelegate.swift +++ b/Spark-iOS/Spark-iOS/Source/AppDelegate.swift @@ -30,7 +30,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var isLogin = false func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - KakaoSDK.initSDK(appKey: "d51e83bca123750446afc70ab65225b9") + let kakaoNativeAppKey = Bundle.main.object(forInfoDictionaryKey: "KakaoNativeAppKey") as? String ?? "" + KakaoSDK.initSDK(appKey: kakaoNativeAppKey) let accessToken = UserDefaultsManager.accessToken From 6ad11bd6249adc84355f36007cf6834c4520f346 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Mon, 3 Oct 2022 23:04:56 +0900 Subject: [PATCH 008/107] [Merge] develop pull, pod update --- Spark-iOS/Podfile.lock | 28 +++++----- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 54 +++++++++---------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Spark-iOS/Podfile.lock b/Spark-iOS/Podfile.lock index 2cff3e66..90cac926 100644 --- a/Spark-iOS/Podfile.lock +++ b/Spark-iOS/Podfile.lock @@ -98,17 +98,17 @@ PODS: - GoogleUtilities/UserDefaults (7.8.0): - GoogleUtilities/Logger - JJFloatingActionButton (2.5.0) - - KakaoSDKAuth (2.11.1): - - KakaoSDKCommon (= 2.11.1) - - KakaoSDKCommon (2.11.1): - - KakaoSDKCommon/Common (= 2.11.1) - - KakaoSDKCommon/Network (= 2.11.1) - - KakaoSDKCommon/Common (2.11.1) - - KakaoSDKCommon/Network (2.11.1): + - KakaoSDKAuth (2.11.3): + - KakaoSDKCommon (= 2.11.3) + - KakaoSDKCommon (2.11.3): + - KakaoSDKCommon/Common (= 2.11.3) + - KakaoSDKCommon/Network (= 2.11.3) + - KakaoSDKCommon/Common (2.11.3) + - KakaoSDKCommon/Network (2.11.3): - Alamofire (~> 5.1) - - KakaoSDKCommon/Common (= 2.11.1) - - KakaoSDKUser (2.11.1): - - KakaoSDKAuth (= 2.11.1) + - KakaoSDKCommon/Common (= 2.11.3) + - KakaoSDKUser (2.11.3): + - KakaoSDKAuth (= 2.11.3) - Kingfisher (7.3.2) - lottie-ios (3.4.3) - Moya (15.0.0): @@ -195,9 +195,9 @@ SPEC CHECKSUMS: GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f GoogleUtilities: 1d20a6ad97ef46f67bbdec158ce00563a671ebb7 JJFloatingActionButton: fdc3aefb0f28f04d0f988fa25d5fac97028a9ea7 - KakaoSDKAuth: bb2dfa7be30daa8403c9cfc8001aa6fde7a5b779 - KakaoSDKCommon: 555e1bb46595b842ded01cf7888cc17bbae4e113 - KakaoSDKUser: 08c0a4f40bebdebdf948a9e3d0e44ed5c2754f99 + KakaoSDKAuth: a64dde90516e18fdfc35b83bbad2677c3675c329 + KakaoSDKCommon: b4235203f67a5b6ee2df75eaf9bbc863c6d92e09 + KakaoSDKUser: 9a42e9b74855ce876b071c841418aa6726534010 Kingfisher: 0086ad83719761ba9b2cdaf6ef4d5b4878cbae23 lottie-ios: 9ae750cdc7820fecbd3c2f0cfc493038208fcdc4 Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee @@ -211,4 +211,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: c6f26cb086a4c592812d547f9f53a7e99b2107d4 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 7ca9870f..18dd86e6 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -14,6 +14,10 @@ 2B13FB252798B705004CCE46 /* CompleteAuthVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB9C50892792A86D00588155 /* CompleteAuthVC.swift */; }; 2B13FB262798B70A004CCE46 /* MyRoomCerti.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE90FCD2795C23A00157075 /* MyRoomCerti.swift */; }; 2B2D31B827DA68EE000EDD28 /* ServiceNotice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B2D31B727DA68EE000EDD28 /* ServiceNotice.swift */; }; + 2B3EB43228EB1F31004D644F /* Shared.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB42E28EB1F31004D644F /* Shared.xcconfig */; }; + 2B3EB43328EB1F31004D644F /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB42F28EB1F31004D644F /* Debug.xcconfig */; }; + 2B3EB43428EB1F31004D644F /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43028EB1F31004D644F /* Release.xcconfig */; }; + 2B3EB43528EB1F31004D644F /* Beta.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43128EB1F31004D644F /* Beta.xcconfig */; }; 2B50C1A227D7752C004BED9C /* NoticeActiveCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B50C1A127D7752C004BED9C /* NoticeActiveCVC.swift */; }; 2B50C1A427D77CA9004BED9C /* NoticeServiceCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B50C1A327D77CA9004BED9C /* NoticeServiceCVC.swift */; }; 2B54D01627D3B2810060DA06 /* FeedReportVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B54D01527D3B2810060DA06 /* FeedReportVC.swift */; }; @@ -174,10 +178,6 @@ F82F580C27929F74003E4174 /* Header.swift in Sources */ = {isa = PBXBuildFile; fileRef = F82F580B27929F74003E4174 /* Header.swift */; }; F82F580E27930FD4003E4174 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = F82F580D27930FD4003E4174 /* GoogleService-Info.plist */; }; F82F58112793B3FF003E4174 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = F82F58102793B3FF003E4174 /* .swiftlint.yml */; }; - F8371A3128E7E1A400868718 /* Shared.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A2D28E7E1A400868718 /* Shared.xcconfig */; }; - F8371A3228E7E1A400868718 /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A2E28E7E1A400868718 /* Debug.xcconfig */; }; - F8371A3328E7E1A400868718 /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A2F28E7E1A400868718 /* Release.xcconfig */; }; - F8371A3428E7E1A400868718 /* Beta.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F8371A3028E7E1A400868718 /* Beta.xcconfig */; }; F8404E8B27AB835F004AEDC3 /* SendSparkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8404E8A27AB835F004AEDC3 /* SendSparkButton.swift */; }; F849521427FFDB8B00D91B6B /* NewNotice.swift in Sources */ = {isa = PBXBuildFile; fileRef = F849521327FFDB8B00D91B6B /* NewNotice.swift */; }; F85036CC27E2567C00F02751 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85036CB27E2567C00F02751 /* NotificationService.swift */; }; @@ -254,6 +254,10 @@ 2B12728B28167766002DA1DA /* Tracking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tracking.swift; sourceTree = ""; }; 2B13FB22279899C6004CCE46 /* UIScreen+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScreen+.swift"; sourceTree = ""; }; 2B2D31B727DA68EE000EDD28 /* ServiceNotice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceNotice.swift; sourceTree = ""; }; + 2B3EB42E28EB1F31004D644F /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; + 2B3EB42F28EB1F31004D644F /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 2B3EB43028EB1F31004D644F /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 2B3EB43128EB1F31004D644F /* Beta.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Beta.xcconfig; sourceTree = ""; }; 2B50C1A127D7752C004BED9C /* NoticeActiveCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeActiveCVC.swift; sourceTree = ""; }; 2B50C1A327D77CA9004BED9C /* NoticeServiceCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeServiceCVC.swift; sourceTree = ""; }; 2B54D01527D3B2810060DA06 /* FeedReportVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedReportVC.swift; sourceTree = ""; }; @@ -422,10 +426,6 @@ F82F580D27930FD4003E4174 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; F82F58102793B3FF003E4174 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; F8368FAA278F5DFF00110B74 /* Spark-iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Spark-iOS.entitlements"; sourceTree = ""; }; - F8371A2D28E7E1A400868718 /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; - F8371A2E28E7E1A400868718 /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - F8371A2F28E7E1A400868718 /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - F8371A3028E7E1A400868718 /* Beta.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Beta.xcconfig; sourceTree = ""; }; F8404E8A27AB835F004AEDC3 /* SendSparkButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendSparkButton.swift; sourceTree = ""; }; F849521327FFDB8B00D91B6B /* NewNotice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewNotice.swift; sourceTree = ""; }; F85036C927E2567C00F02751 /* SparkNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SparkNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -492,6 +492,17 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 2B3EB42D28EB1F31004D644F /* XCConfig */ = { + isa = PBXGroup; + children = ( + 2B3EB42E28EB1F31004D644F /* Shared.xcconfig */, + 2B3EB42F28EB1F31004D644F /* Debug.xcconfig */, + 2B3EB43028EB1F31004D644F /* Release.xcconfig */, + 2B3EB43128EB1F31004D644F /* Beta.xcconfig */, + ); + path = XCConfig; + sourceTree = ""; + }; 2B54D01427D3B22E0060DA06 /* Feed */ = { isa = PBXGroup; children = ( @@ -970,7 +981,7 @@ isa = PBXGroup; children = ( F82F58102793B3FF003E4174 /* .swiftlint.yml */, - F8371A2C28E7E1A400868718 /* XCConfig */, + 2B3EB42D28EB1F31004D644F /* XCConfig */, F8096F022784107D00B71D38 /* Spark-iOS */, F85036CA27E2567C00F02751 /* SparkNotificationService */, F8096F012784107D00B71D38 /* Products */, @@ -1329,17 +1340,6 @@ path = Home; sourceTree = ""; }; - F8371A2C28E7E1A400868718 /* XCConfig */ = { - isa = PBXGroup; - children = ( - F8371A2D28E7E1A400868718 /* Shared.xcconfig */, - F8371A2E28E7E1A400868718 /* Debug.xcconfig */, - F8371A2F28E7E1A400868718 /* Release.xcconfig */, - F8371A3028E7E1A400868718 /* Beta.xcconfig */, - ); - path = XCConfig; - sourceTree = ""; - }; F85036CA27E2567C00F02751 /* SparkNotificationService */ = { isa = PBXGroup; children = ( @@ -1511,14 +1511,16 @@ buildActionMask = 2147483647; files = ( EB625E84278F273200C43DE9 /* FailStorageCVC.xib in Resources */, + 2B3EB43228EB1F31004D644F /* Shared.xcconfig in Resources */, + 2B3EB43328EB1F31004D644F /* Debug.xcconfig in Resources */, EB874AEE2797071C000DD20B /* Dialogue.storyboard in Resources */, F8B18E0727EFA1AA001A1A7D /* Notification.storyboard in Resources */, F8C14A9C2795094800498687 /* HomeEmptyCVC.xib in Resources */, F8C3659727DBB834000AA9BD /* CompleteFailDialogue.storyboard in Resources */, + 2B3EB43528EB1F31004D644F /* Beta.xcconfig in Resources */, 2B9852092790ACF000CE40A7 /* CreateAuth.storyboard in Resources */, 2BBFEFBF279B214300C085E4 /* loading3.json in Resources */, F80A3E4D278C182100728E07 /* MainTabBar.storyboard in Resources */, - F8371A3228E7E1A400868718 /* Debug.xcconfig in Resources */, 2BE65F5127C3E34B005D370D /* RoomStart.storyboard in Resources */, EB9C509A27931E5F00588155 /* AuthUpload.storyboard in Resources */, F828181E2813169200D3E26C /* SingleResponseDialogue.storyboard in Resources */, @@ -1548,8 +1550,6 @@ F8F6D6F52797359600725537 /* HabitRoom.storyboard in Resources */, F82B2E0E278ED01F00219628 /* Splash.storyboard in Resources */, EBE90FDC279612CA00157075 /* SendSpark.storyboard in Resources */, - F8371A3328E7E1A400868718 /* Release.xcconfig in Resources */, - F8371A3128E7E1A400868718 /* Shared.xcconfig in Resources */, F8902FB927ED84060034E8F9 /* Withdrawal.storyboard in Resources */, 2B54D01927D3B8170060DA06 /* FeedReport.storyboard in Resources */, F80A3E51278C1BCE00728E07 /* Feed.storyboard in Resources */, @@ -1562,7 +1562,7 @@ F8F6D6FC2797527A00725537 /* HabitRoomMemberCVC.xib in Resources */, 2B9852032790310800CE40A7 /* CreateRoom.storyboard in Resources */, F80B02D127EC1BDC00D63B45 /* homeCardSuccess.json in Resources */, - F8371A3428E7E1A400868718 /* Beta.xcconfig in Resources */, + 2B3EB43428EB1F31004D644F /* Release.xcconfig in Resources */, F80A3E53278C1C0C00728E07 /* Storage.storyboard in Resources */, F82F58112793B3FF003E4174 /* .swiftlint.yml in Resources */, EB625E7C278F271400C43DE9 /* DoingStorageCVC.xib in Resources */, @@ -1957,7 +1957,7 @@ }; F8096F152784107E00B71D38 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8371A2E28E7E1A400868718 /* Debug.xcconfig */; + baseConfigurationReference = C35EB7FFC7E2CF05E63983A7 /* Pods-Spark-iOS.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1995,7 +1995,7 @@ }; F8096F162784107E00B71D38 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8371A2F28E7E1A400868718 /* Release.xcconfig */; + baseConfigurationReference = 3F3E6E986D8C9F3A27A30253 /* Pods-Spark-iOS.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -2094,7 +2094,7 @@ }; F8371A3628E7E21700868718 /* Beta */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8371A3028E7E1A400868718 /* Beta.xcconfig */; + baseConfigurationReference = 9CDB2BC50C4921D4EE5A9701 /* Pods-Spark-iOS.beta.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; From dfe61888406fd6545442fd374fe974c2752d187b Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Mon, 3 Oct 2022 23:54:16 +0900 Subject: [PATCH 009/107] =?UTF-8?q?[Chore]=20configuration=20file=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 18dd86e6..fcc27f11 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -1957,7 +1957,7 @@ }; F8096F152784107E00B71D38 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C35EB7FFC7E2CF05E63983A7 /* Pods-Spark-iOS.debug.xcconfig */; + baseConfigurationReference = 2B3EB42F28EB1F31004D644F /* Debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1995,7 +1995,7 @@ }; F8096F162784107E00B71D38 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F3E6E986D8C9F3A27A30253 /* Pods-Spark-iOS.release.xcconfig */; + baseConfigurationReference = 2B3EB43028EB1F31004D644F /* Release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -2094,7 +2094,7 @@ }; F8371A3628E7E21700868718 /* Beta */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CDB2BC50C4921D4EE5A9701 /* Pods-Spark-iOS.beta.xcconfig */; + baseConfigurationReference = 2B3EB43128EB1F31004D644F /* Beta.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; From 878b03f13dd1d05366ffe6fbed9563eb94cfebb0 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Tue, 4 Oct 2022 00:07:12 +0900 Subject: [PATCH 010/107] =?UTF-8?q?[Feat]=20TimeLineVC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20=EC=9E=84=EC=8B=9C=20=EB=8D=94=EB=B3=B4=EA=B8=B0?= =?UTF-8?q?=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 16 +++++++++ .../Resource/Constants/Storyboard.swift | 1 + .../Resource/Constants/ViewController.swift | 1 + .../HabitRoom/LifeTimeLine.storyboard | 33 +++++++++++++++++++ .../HabitRoom/HabitRoomVC.swift | 11 +++++++ .../LifeTimeLine/LifeTimeLineVC.swift | 29 ++++++++++++++++ 6 files changed, 91 insertions(+) create mode 100644 Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/LifeTimeLine.storyboard create mode 100644 Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index fcc27f11..b50b3286 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -18,6 +18,8 @@ 2B3EB43328EB1F31004D644F /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB42F28EB1F31004D644F /* Debug.xcconfig */; }; 2B3EB43428EB1F31004D644F /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43028EB1F31004D644F /* Release.xcconfig */; }; 2B3EB43528EB1F31004D644F /* Beta.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43128EB1F31004D644F /* Beta.xcconfig */; }; + 2B3EB43828EB2F9A004D644F /* LifeTimeLineVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B3EB43728EB2F9A004D644F /* LifeTimeLineVC.swift */; }; + 2B3EB43A28EB30D8004D644F /* LifeTimeLine.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43928EB30D8004D644F /* LifeTimeLine.storyboard */; }; 2B50C1A227D7752C004BED9C /* NoticeActiveCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B50C1A127D7752C004BED9C /* NoticeActiveCVC.swift */; }; 2B50C1A427D77CA9004BED9C /* NoticeServiceCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B50C1A327D77CA9004BED9C /* NoticeServiceCVC.swift */; }; 2B54D01627D3B2810060DA06 /* FeedReportVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B54D01527D3B2810060DA06 /* FeedReportVC.swift */; }; @@ -258,6 +260,8 @@ 2B3EB42F28EB1F31004D644F /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; 2B3EB43028EB1F31004D644F /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 2B3EB43128EB1F31004D644F /* Beta.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Beta.xcconfig; sourceTree = ""; }; + 2B3EB43728EB2F9A004D644F /* LifeTimeLineVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LifeTimeLineVC.swift; sourceTree = ""; }; + 2B3EB43928EB30D8004D644F /* LifeTimeLine.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LifeTimeLine.storyboard; sourceTree = ""; }; 2B50C1A127D7752C004BED9C /* NoticeActiveCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeActiveCVC.swift; sourceTree = ""; }; 2B50C1A327D77CA9004BED9C /* NoticeServiceCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeServiceCVC.swift; sourceTree = ""; }; 2B54D01527D3B2810060DA06 /* FeedReportVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedReportVC.swift; sourceTree = ""; }; @@ -503,6 +507,14 @@ path = XCConfig; sourceTree = ""; }; + 2B3EB43628EB2F6D004D644F /* LifeTimeLine */ = { + isa = PBXGroup; + children = ( + 2B3EB43728EB2F9A004D644F /* LifeTimeLineVC.swift */, + ); + path = LifeTimeLine; + sourceTree = ""; + }; 2B54D01427D3B22E0060DA06 /* Feed */ = { isa = PBXGroup; children = ( @@ -889,6 +901,7 @@ F8F6D6F42797359600725537 /* HabitRoom.storyboard */, 2BA98FB327CB451000C53820 /* HabitRoomLeave.storyboard */, 2BD71BF127E0A5CD00771DCB /* HabitRoomGuide.storyboard */, + 2B3EB43928EB30D8004D644F /* LifeTimeLine.storyboard */, ); path = HabitRoom; sourceTree = ""; @@ -1117,6 +1130,7 @@ F8096F1E27841DC100B71D38 /* ViewControllers */ = { isa = PBXGroup; children = ( + 2B3EB43628EB2F6D004D644F /* LifeTimeLine */, F82B2E10278F54C200219628 /* Splash */, EBD0D09527DC36730007E5AF /* Onboarding */, 2BAF155E27D492B500DE4190 /* Notice */, @@ -1519,6 +1533,7 @@ F8C3659727DBB834000AA9BD /* CompleteFailDialogue.storyboard in Resources */, 2B3EB43528EB1F31004D644F /* Beta.xcconfig in Resources */, 2B9852092790ACF000CE40A7 /* CreateAuth.storyboard in Resources */, + 2B3EB43A28EB30D8004D644F /* LifeTimeLine.storyboard in Resources */, 2BBFEFBF279B214300C085E4 /* loading3.json in Resources */, F80A3E4D278C182100728E07 /* MainTabBar.storyboard in Resources */, 2BE65F5127C3E34B005D370D /* RoomStart.storyboard in Resources */, @@ -1704,6 +1719,7 @@ 2BE5D80827930A06007A544D /* AuthTimerVC.swift in Sources */, EBEA38372794B34300B5736A /* CodeJoinCheck.swift in Sources */, F8096F2B27841F4100B71D38 /* Storyboard.swift in Sources */, + 2B3EB43828EB2F9A004D644F /* LifeTimeLineVC.swift in Sources */, 2B57F38127971D1D002A677D /* ProfileSettingVC.swift in Sources */, 2B2D31B827DA68EE000EDD28 /* ServiceNotice.swift in Sources */, F8250CFC27D483E70073FFCA /* Profile.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift b/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift index 14e48285..21c858ec 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift @@ -47,6 +47,7 @@ extension Const { static let lifeDiminishDialogue = "LifeDiminishDialogue" static let notification = "Notification" static let singleResponseDialogue = "SingleResponseDialogue" + static let lifeTimeLine = "LifeTimeLine" } } } diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift b/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift index deefe552..4e34bef9 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift @@ -47,6 +47,7 @@ extension Const { static let lifeDiminishDialogue = "LifeDiminishDialogueVC" static let notification = "NotificationVC" static let singleResponseDialogue = "SingleResponseDialogueVC" + static let lifeTimeLine = "LifeTimeLineVC" } } } diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/LifeTimeLine.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/LifeTimeLine.storyboard new file mode 100644 index 00000000..0b481165 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/LifeTimeLine.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index 20828acb..89a04ba5 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -370,6 +370,17 @@ extension HabitRoomVC { private func presentToMoreAlert() { let alert = SparkActionSheet() + alert.addAction(SparkAction("생명 타임라인", handler: { + self.dismiss(animated: true) { + guard let timelineVC = UIStoryboard(name: Const.Storyboard.Name.lifeTimeLine, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.lifeTimeLine) as? LifeTimeLineVC else { return } + + timelineVC.modalPresentationStyle = .overFullScreen + timelineVC.modalTransitionStyle = .crossDissolve + + self.present(timelineVC, animated: true, completion: nil) + } + })) + alert.addAction(SparkAction("나의 목표 관리", titleType: .blackMediumTitle, handler: { self.dismiss(animated: true) { guard let nextVC = UIStoryboard(name: Const.Storyboard.Name.goalWriting, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.goalWriting) as? GoalWritingVC else { return } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift new file mode 100644 index 00000000..5a9deac6 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift @@ -0,0 +1,29 @@ +// +// LifeTimeLineVC.swift +// Spark-iOS +// +// Created by 양수빈 on 2022/10/03. +// + +import UIKit + +class LifeTimeLineVC: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} From 2b7eb56829db40079353891c4a767386146a56b8 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Tue, 4 Oct 2022 00:50:55 +0900 Subject: [PATCH 011/107] =?UTF-8?q?[Feat]=20LifeTimeLineVC=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 16 ++++ .../Spark-iOS/Resource/Constants/Cell.swift | 2 + .../Cells/LifeTimeLine/LifeTimeLineCVC.swift | 52 ++++++++++++ .../LifeTimeLine/LifeTimeLineHeaderView.swift | 47 +++++++++++ .../LifeTimeLine/LifeTimeLineVC.swift | 83 +++++++++++++++++-- 5 files changed, 191 insertions(+), 9 deletions(-) create mode 100644 Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift create mode 100644 Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index b50b3286..5a90834d 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -20,6 +20,8 @@ 2B3EB43528EB1F31004D644F /* Beta.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43128EB1F31004D644F /* Beta.xcconfig */; }; 2B3EB43828EB2F9A004D644F /* LifeTimeLineVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B3EB43728EB2F9A004D644F /* LifeTimeLineVC.swift */; }; 2B3EB43A28EB30D8004D644F /* LifeTimeLine.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2B3EB43928EB30D8004D644F /* LifeTimeLine.storyboard */; }; + 2B3EB43D28EB3551004D644F /* LifeTimeLineCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B3EB43C28EB3551004D644F /* LifeTimeLineCVC.swift */; }; + 2B3EB43F28EB38F8004D644F /* LifeTimeLineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B3EB43E28EB38F8004D644F /* LifeTimeLineHeaderView.swift */; }; 2B50C1A227D7752C004BED9C /* NoticeActiveCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B50C1A127D7752C004BED9C /* NoticeActiveCVC.swift */; }; 2B50C1A427D77CA9004BED9C /* NoticeServiceCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B50C1A327D77CA9004BED9C /* NoticeServiceCVC.swift */; }; 2B54D01627D3B2810060DA06 /* FeedReportVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B54D01527D3B2810060DA06 /* FeedReportVC.swift */; }; @@ -262,6 +264,8 @@ 2B3EB43128EB1F31004D644F /* Beta.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Beta.xcconfig; sourceTree = ""; }; 2B3EB43728EB2F9A004D644F /* LifeTimeLineVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LifeTimeLineVC.swift; sourceTree = ""; }; 2B3EB43928EB30D8004D644F /* LifeTimeLine.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LifeTimeLine.storyboard; sourceTree = ""; }; + 2B3EB43C28EB3551004D644F /* LifeTimeLineCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LifeTimeLineCVC.swift; sourceTree = ""; }; + 2B3EB43E28EB38F8004D644F /* LifeTimeLineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LifeTimeLineHeaderView.swift; sourceTree = ""; }; 2B50C1A127D7752C004BED9C /* NoticeActiveCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeActiveCVC.swift; sourceTree = ""; }; 2B50C1A327D77CA9004BED9C /* NoticeServiceCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeServiceCVC.swift; sourceTree = ""; }; 2B54D01527D3B2810060DA06 /* FeedReportVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedReportVC.swift; sourceTree = ""; }; @@ -515,6 +519,15 @@ path = LifeTimeLine; sourceTree = ""; }; + 2B3EB43B28EB352F004D644F /* LifeTimeLine */ = { + isa = PBXGroup; + children = ( + 2B3EB43C28EB3551004D644F /* LifeTimeLineCVC.swift */, + 2B3EB43E28EB38F8004D644F /* LifeTimeLineHeaderView.swift */, + ); + path = LifeTimeLine; + sourceTree = ""; + }; 2B54D01427D3B22E0060DA06 /* Feed */ = { isa = PBXGroup; children = ( @@ -1215,6 +1228,7 @@ F8096F2327841DF800B71D38 /* Cells */ = { isa = PBXGroup; children = ( + 2B3EB43B28EB352F004D644F /* LifeTimeLine */, EBD0D09A27DC3A110007E5AF /* Onboarding */, 2BAF156127D49D4B00DE4190 /* Notice */, F8F6D6F82797525700725537 /* HabitRoom */, @@ -1715,6 +1729,7 @@ 2BA98FB627CB620E00C53820 /* CreateSuccessVC.swift in Sources */, EBEA382D27947C9100B5736A /* MyRoomAPI.swift in Sources */, 2B69E7E7278E28B2000F927F /* FeedCVC.swift in Sources */, + 2B3EB43D28EB3551004D644F /* LifeTimeLineCVC.swift in Sources */, 2B0CF77427BFEDAC003C2E21 /* BottomButton.swift in Sources */, 2BE5D80827930A06007A544D /* AuthTimerVC.swift in Sources */, EBEA38372794B34300B5736A /* CodeJoinCheck.swift in Sources */, @@ -1729,6 +1744,7 @@ 2B014FAF27AAA90E004B4559 /* FeedFooterView.swift in Sources */, 2BD71BF427E0E53500771DCB /* HabitRoomGuideCVC.swift in Sources */, EBE01B1227E31BFE00085AB7 /* LifeDiminishDialogueVC.swift in Sources */, + 2B3EB43F28EB38F8004D644F /* LifeTimeLineHeaderView.swift in Sources */, 2B12728C28167766002DA1DA /* Tracking.swift in Sources */, F8F6D6FE2797D8BD00725537 /* HabitRoomDetail.swift in Sources */, EBD0D09427DBBC270007E5AF /* SendSparkCellDelegate.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift b/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift index fdb6298f..59c8f822 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift @@ -34,6 +34,8 @@ extension Const { static let habitRoomGuideCVC = "HabitRoomGuideCVC" static let notificationTableHeaderView = "NotificationTableHeaderView" static let notificationTVC = "NotificationTVC" + static let lifeTimeLineCVC = "LifeTimeLineCVC" + static let lifeTimeLineHeaderView = "LifeTimeLineHeaderView" } } } diff --git a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift new file mode 100644 index 00000000..d35acec3 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift @@ -0,0 +1,52 @@ +// +// LifeTimeLineCVC.swift +// Spark-iOS +// +// Created by 양수빈 on 2022/10/04. +// + +import UIKit + +import SnapKit + +class LifeTimeLineCVC: UICollectionViewCell { + + // MARK: - Properties + + private let titleLabel = UILabel() + + // MARK: - View Life Cycles + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func prepareForReuse() { + super.prepareForReuse() + titleLabel.text = "" + } + + // MARK: - Custom Methods + + func initCell() { + + } + + private func setUI() { + titleLabel.text = "zzzzz" + } + + private func setLayout() { + self.addSubviews([titleLabel]) + + titleLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + } + } +} diff --git a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift new file mode 100644 index 00000000..6a5dbd27 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift @@ -0,0 +1,47 @@ +// +// LifeTimeLineHeaderView.swift +// Spark-iOS +// +// Created by 양수빈 on 2022/10/04. +// + +import UIKit + +import SnapKit + +class LifeTimeLineHeaderView: UICollectionReusableView { + // MARK: - Properties + + private let titleLabel = UILabel() + + // MARK: - View Life Cycles + override init(frame: CGRect) { + super.init(frame: frame) + + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Methods + + func setUI() { + self.backgroundColor = .sparkWhite + + titleLabel.text = "생명 타임라인" + titleLabel.font = .h3Subtitle + titleLabel.textAlignment = .center + } + + func setLayout() { + self.addSubview(titleLabel) + + titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalToSuperview().offset(10) + } + } +} diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift index 5a9deac6..c904cad9 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift @@ -8,22 +8,87 @@ import UIKit class LifeTimeLineVC: UIViewController { - + + // MARK: - Properties + + private let titleLabel = UILabel() + private let collectionViewFlowlayout = UICollectionViewFlowLayout() + private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewFlowlayout) + + // MARK: - Life Cycles + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. + setUI() + setLayout() + setCollectionView() } + // MARK: - Custom Methods + + private func setUI() { + view.backgroundColor = .sparkBlack.withAlphaComponent(0.8) + + collectionView.backgroundColor = .white + } + + private func setLayout() { + view.addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.leading.trailing.bottom.equalToSuperview() + make.height.equalTo(UIScreen.main.bounds.width * 1.3) + } + } + + private func setCollectionView() { + collectionView.showsVerticalScrollIndicator = false + collectionView.backgroundColor = .white + + collectionView.delegate = self + collectionView.dataSource = self + + collectionView.register(LifeTimeLineCVC.self, forCellWithReuseIdentifier: Const.Cell.Identifier.lifeTimeLineCVC) + collectionView.register(LifeTimeLineHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: Const.Cell.Identifier.lifeTimeLineHeaderView) + + collectionViewFlowlayout.sectionHeadersPinToVisibleBounds = true + } +} - /* - // MARK: - Navigation +extension LifeTimeLineVC: UICollectionViewDelegate { + +} - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. +extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let width: CGFloat = UIScreen.main.bounds.width + let height: CGFloat = 107 + + return CGSize(width: width, height: height) } - */ +} +extension LifeTimeLineVC: UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + // FIXME: - 데이터 받고 수정 + return 5 + } + + func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { + guard let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: Const.Cell.Identifier.lifeTimeLineHeaderView, for: indexPath) as? LifeTimeLineHeaderView else { return UICollectionReusableView() } + return header + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { + let width = UIScreen.main.bounds.width + let height = width*60/375 + return CGSize(width: width, height: height) + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: Const.Cell.Identifier.lifeTimeLineCVC, for: indexPath) as? LifeTimeLineCVC else { return UICollectionViewCell() } + // FIXME: - initcell + return cell + } } From ef975d3939cfac39a853e1059c7592df6b28cda1 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Tue, 4 Oct 2022 01:50:28 +0900 Subject: [PATCH 012/107] =?UTF-8?q?[Feat]=20view=20tapGesture=EB=A1=9C=20d?= =?UTF-8?q?ismiss=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LifeTimeLine/LifeTimeLineVC.swift | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift index c904cad9..27ebdcdb 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift @@ -7,6 +7,8 @@ import UIKit +import SnapKit + class LifeTimeLineVC: UIViewController { // MARK: - Properties @@ -14,6 +16,7 @@ class LifeTimeLineVC: UIViewController { private let titleLabel = UILabel() private let collectionViewFlowlayout = UICollectionViewFlowLayout() private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewFlowlayout) + private let tapGestureRecognizer = UITapGestureRecognizer() // MARK: - Life Cycles @@ -22,7 +25,10 @@ class LifeTimeLineVC: UIViewController { setUI() setLayout() + setDelegate() setCollectionView() + setAddTarget() + setGestureRecognizer() } // MARK: - Custom Methods @@ -46,20 +52,42 @@ class LifeTimeLineVC: UIViewController { collectionView.showsVerticalScrollIndicator = false collectionView.backgroundColor = .white - collectionView.delegate = self - collectionView.dataSource = self - collectionView.register(LifeTimeLineCVC.self, forCellWithReuseIdentifier: Const.Cell.Identifier.lifeTimeLineCVC) collectionView.register(LifeTimeLineHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: Const.Cell.Identifier.lifeTimeLineHeaderView) collectionViewFlowlayout.sectionHeadersPinToVisibleBounds = true } + + private func setDelegate() { + collectionView.delegate = self + collectionView.dataSource = self + tapGestureRecognizer.delegate = self + } + + private func setAddTarget() { + tapGestureRecognizer.addTarget(self, action: #selector(dismissToHabitRoom)) + } + + private func setGestureRecognizer() { + view.addGestureRecognizer(tapGestureRecognizer) + } + + // MARK: - @objc + + @objc + private func dismissToHabitRoom() { + self.dismiss(animated: true) + } } +// MARK: - UICollectionViewDelegate + extension LifeTimeLineVC: UICollectionViewDelegate { } +// MARK: - UICollectionViewDelegateFlowLayout + extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let width: CGFloat = UIScreen.main.bounds.width @@ -69,6 +97,8 @@ extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { } } +// MARK: - UICollectionViewDataSource + extension LifeTimeLineVC: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { // FIXME: - 데이터 받고 수정 @@ -92,3 +122,11 @@ extension LifeTimeLineVC: UICollectionViewDataSource { return cell } } + +// MARK: - UIGestureRecognizerDelegate + +extension LifeTimeLineVC: UIGestureRecognizerDelegate { + func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { + return (touch.view is UICollectionViewCell) || (touch.view is UICollectionReusableView) ? false : true + } +} From f660255c1dd58bb98c013d7cee8ad476a4a89544 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Tue, 4 Oct 2022 14:17:10 +0900 Subject: [PATCH 013/107] =?UTF-8?q?[Feat]=20LifeTimeLineCVC=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Cells/LifeTimeLine/LifeTimeLineCVC.swift | 92 ++++++++++++++++++- .../LifeTimeLine/LifeTimeLineVC.swift | 46 +++++++++- 2 files changed, 129 insertions(+), 9 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift index d35acec3..29be09b7 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift @@ -14,6 +14,11 @@ class LifeTimeLineCVC: UICollectionViewCell { // MARK: - Properties private let titleLabel = UILabel() + private let subTitleLabel = UILabel() + private let firstProfileImageView = UIImageView() + private let secondProfileImageView = UIImageView() + private let dayLabel = UILabel() + private let divideLine = UIView() // MARK: - View Life Cycles @@ -30,23 +35,102 @@ class LifeTimeLineCVC: UICollectionViewCell { override func prepareForReuse() { super.prepareForReuse() titleLabel.text = "" + subTitleLabel.text = "" + dayLabel.text = "" + firstProfileImageView.image = UIImage() + secondProfileImageView.image = UIImage() } // MARK: - Custom Methods - func initCell() { + func initCell(title: String, + subTitle: String, + profilImg: [String?], + day: String) { + titleLabel.text = title + subTitleLabel.text = subTitle + dayLabel.text = day + if !profilImg.isEmpty { + updateProfileLayout() + let profileImageList = [firstProfileImageView, secondProfileImageView] + for index in 0.. CGSize { let width: CGFloat = UIScreen.main.bounds.width - let height: CGFloat = 107 + let estimatedHeight: CGFloat = width*107/375 - return CGSize(width: width, height: height) + // FIXME: - 데이터 받고 수정 + let dummyCell = LifeTimeLineCVC(frame: CGRect(x: 0, y: 0, width: width, height: estimatedHeight)) + let data = dummyList[indexPath.row] + dummyCell.initCell(title: data["title"] as? String ?? "", subTitle: data["content"] as? String ?? "", profilImg: (data["profiles"] as? [String?]) ?? [], day: data["day"] as? String ?? "") + dummyCell.layoutIfNeeded() + let estimatedSize = dummyCell.systemLayoutSizeFitting(CGSize(width: width, height: estimatedHeight)) + + return CGSize(width: width, height: estimatedSize.height) } } @@ -102,7 +136,7 @@ extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { extension LifeTimeLineVC: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { // FIXME: - 데이터 받고 수정 - return 5 + return dummyList.count } func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { @@ -118,7 +152,9 @@ extension LifeTimeLineVC: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: Const.Cell.Identifier.lifeTimeLineCVC, for: indexPath) as? LifeTimeLineCVC else { return UICollectionViewCell() } - // FIXME: - initcell + // FIXME: - 데이터 받고 수정 + let data = dummyList[indexPath.row] + cell.initCell(title: data["title"] as? String ?? "", subTitle: data["content"] as? String ?? "", profilImg: (data["profiles"] as? [String?]) ?? [], day: data["day"] as? String ?? "") return cell } } From c09153f7d32eaeff7a20490b576e5b554177a294 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Tue, 4 Oct 2022 15:39:04 +0900 Subject: [PATCH 014/107] =?UTF-8?q?[Fix]=20constraint=20=EC=84=9E=EC=9D=B4?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Cells/LifeTimeLine/LifeTimeLineCVC.swift | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift index 29be09b7..7416b418 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift @@ -39,6 +39,8 @@ class LifeTimeLineCVC: UICollectionViewCell { dayLabel.text = "" firstProfileImageView.image = UIImage() secondProfileImageView.image = UIImage() + firstProfileImageView.isHidden = true + secondProfileImageView.isHidden = true } // MARK: - Custom Methods @@ -58,6 +60,8 @@ class LifeTimeLineCVC: UICollectionViewCell { profileImageList[index].updateImage(profilImg[index] ?? "", type: .small) profileImageList[index].isHidden = false } + } else { + updateDayLayout() } } @@ -97,13 +101,6 @@ class LifeTimeLineCVC: UICollectionViewCell { make.top.equalTo(titleLabel.snp.bottom).offset(8) } - dayLabel.snp.makeConstraints { make in - make.leading.equalTo(titleLabel.snp.leading) - make.trailing.equalTo(titleLabel.snp.trailing) - make.top.equalTo(subTitleLabel.snp.bottom).offset(8) - make.bottom.equalToSuperview().inset(16) - } - divideLine.snp.makeConstraints { make in make.leading.trailing.equalToSuperview() make.bottom.equalToSuperview() @@ -111,6 +108,15 @@ class LifeTimeLineCVC: UICollectionViewCell { } } + private func updateDayLayout() { + dayLabel.snp.remakeConstraints { make in + make.leading.equalTo(titleLabel.snp.leading) + make.trailing.equalTo(titleLabel.snp.trailing) + make.top.equalTo(subTitleLabel.snp.bottom).offset(8) + make.bottom.equalToSuperview().inset(16) + } + } + private func updateProfileLayout() { self.addSubviews([firstProfileImageView, secondProfileImageView]) From d1649ca80cabca9445b15ad95fa2f56ae9648ffd Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Tue, 4 Oct 2022 15:39:47 +0900 Subject: [PATCH 015/107] =?UTF-8?q?[Fix]=20LifeTimeLine=20=EB=B7=B0=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EB=8D=94=EB=AF=B8=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LifeTimeLine/LifeTimeLineHeaderView.swift | 3 +- .../LifeTimeLine/LifeTimeLineVC.swift | 162 +++++++++++++++++- 2 files changed, 161 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift index 6a5dbd27..434246f8 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineHeaderView.swift @@ -40,8 +40,7 @@ class LifeTimeLineHeaderView: UICollectionReusableView { self.addSubview(titleLabel) titleLabel.snp.makeConstraints { make in - make.centerX.equalToSuperview() - make.centerY.equalToSuperview().offset(10) + make.center.equalToSuperview() } } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift index 8021742e..518fab43 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift @@ -43,7 +43,161 @@ class LifeTimeLineVC: UIViewController { ], "day": "2일 전", "isNew": true - ]] + ], + ["title": "생명 충전 완료", + "content": "뭐무머머ㅓ머멈", + "day": "오늘", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + ["title": "생명 충전 완료", + "content": "뭐무머머ㅓ머멈", + "day": "오늘", + "isNew": true + ], + [ + "title": "생명 1개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490" + ], + "day": "1일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + ["title": "생명 충전 완료", + "content": "뭐무머머ㅓ머멈", + "day": "오늘", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + ["title": "생명 충전 완료", + "content": "뭐무머머ㅓ머멈", + "day": "오늘", + "isNew": true + ], + [ + "title": "생명 1개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490" + ], + "day": "1일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + ["title": "생명 충전 완료", + "content": "뭐무머머ㅓ머멈", + "day": "오늘", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ], + [ + "title": "생명 2개 감소💧", + "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", + "profiles": [ + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", + "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" + ], + "day": "2일 전", + "isNew": true + ] + ] // MARK: - Life Cycles @@ -129,6 +283,10 @@ extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { return CGSize(width: width, height: estimatedSize.height) } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 0 + } } // MARK: - UICollectionViewDataSource @@ -146,7 +304,7 @@ extension LifeTimeLineVC: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { let width = UIScreen.main.bounds.width - let height = width*60/375 + let height = width*80/375 return CGSize(width: width, height: height) } From a9c0e97186b3b4a587b021b7b3dbbf4af55645b0 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 6 Oct 2022 00:39:37 +0900 Subject: [PATCH 016/107] =?UTF-8?q?[Chore]=20#654=20-=20.gitignore=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - metadata, screenshots 폴더 무시 --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 52635be0..f6e01e2f 100644 --- a/.gitignore +++ b/.gitignore @@ -117,6 +117,9 @@ fastlane/Preview.html fastlane/screenshots/**/*.png fastlane/test_output +fastlane/metadata/ +fastlane/screenshots/ + # Code Injection # After new code Injection tools there's a generated folder /iOSInjectionProject # https://github.com/johnno1962/injectionforxcode From c57fcf8a0854213e0b170e9452116afecc261cce Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Thu, 6 Oct 2022 00:40:15 +0900 Subject: [PATCH 017/107] =?UTF-8?q?[Fix]=20HabitRoomDetail=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NetworkModels/Room/HabitRoomDetail.swift | 4 ++-- .../ViewControllers/HabitRoom/HabitRoomVC.swift | 15 ++------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/HabitRoomDetail.swift b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/HabitRoomDetail.swift index f5dcc85b..4ee4b0f6 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/HabitRoomDetail.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/HabitRoomDetail.swift @@ -15,13 +15,13 @@ struct HabitRoomDetail: Codable { let moment, purpose: String? let leftDay, life: Int let fromStart: Bool - let lifeDeductionCount: Int let myRecord: MyRecord let otherRecords: [OtherRecord?] + let isTermNew, isTimelineNew: Bool enum CodingKeys: String, CodingKey { case roomID = "roomId" - case roomName, startDate, endDate, moment, purpose, leftDay, life, fromStart, myRecord, otherRecords, lifeDeductionCount + case roomName, startDate, endDate, moment, purpose, leftDay, life, fromStart, myRecord, otherRecords, isTermNew, isTimelineNew } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index 89a04ba5..1ce010d0 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -270,25 +270,14 @@ extension HabitRoomVC { UserDefaultsManager.checkHabitRoomGuide = true guard let guideVC = UIStoryboard(name: Const.Storyboard.Name.habitRoomGuide, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.habitRoomGuide) as? HabitRoomGuideVC else { return } guideVC.dismissClousure = { - self.setLifeDiminishDialogue() + // FIXME: - 생명 감소 다이얼로그 } guideVC.modalPresentationStyle = .overFullScreen guideVC.modalTransitionStyle = .crossDissolve self.present(guideVC, animated: true, completion: nil) } else { - setLifeDiminishDialogue() - } - } - - private func setLifeDiminishDialogue() { - if let lifeCount = habitRoomDetail?.lifeDeductionCount, lifeCount != 0 { - guard let lifeVC = UIStoryboard(name: Const.Storyboard.Name.lifeDiminishDialogue, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.lifeDiminishDialogue) as? LifeDiminishDialogueVC else { return } - lifeVC.diminishedLifeCount = lifeCount - lifeVC.modalPresentationStyle = .overFullScreen - lifeVC.modalTransitionStyle = .crossDissolve - - self.present(lifeVC, animated: true, completion: nil) + // FIXME: - 생명 감소 다이얼로그 } } From dd02b27781ca591309a4aa4fe1f19d037cabb9b6 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 6 Oct 2022 00:40:58 +0900 Subject: [PATCH 018/107] =?UTF-8?q?[Chore]=20#654=20-=20fastlane=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Gemfile | 3 + Spark-iOS/Gemfile.lock | 218 +++++++++++++++++++++++++++++++++ Spark-iOS/fastlane/Appfile | 8 ++ Spark-iOS/fastlane/Deliverfile | 3 + Spark-iOS/fastlane/Fastfile | 25 ++++ 5 files changed, 257 insertions(+) create mode 100644 Spark-iOS/Gemfile create mode 100644 Spark-iOS/Gemfile.lock create mode 100644 Spark-iOS/fastlane/Appfile create mode 100644 Spark-iOS/fastlane/Deliverfile create mode 100644 Spark-iOS/fastlane/Fastfile diff --git a/Spark-iOS/Gemfile b/Spark-iOS/Gemfile new file mode 100644 index 00000000..7a118b49 --- /dev/null +++ b/Spark-iOS/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/Spark-iOS/Gemfile.lock b/Spark-iOS/Gemfile.lock new file mode 100644 index 00000000..16f43b96 --- /dev/null +++ b/Spark-iOS/Gemfile.lock @@ -0,0 +1,218 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.5) + rexml + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.2.0) + aws-partitions (1.642.0) + aws-sdk-core (3.158.0) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.525.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.58.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.114.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.5.2) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + digest-crc (0.6.4) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.93.0) + faraday (1.10.2) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.2.6) + fastlane (2.210.1) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (~> 2.0.0) + naturally (~> 2.2) + optparse (~> 0.1.1) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.29.0) + google-apis-core (>= 0.9.0, < 2.a) + google-apis-core (0.9.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-iamcredentials_v1 (0.15.0) + google-apis-core (>= 0.9.0, < 2.a) + google-apis-playcustomapp_v1 (0.11.0) + google-apis-core (>= 0.9.0, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.0) + google-cloud-storage (1.43.0) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.2.0) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.1) + json (2.6.2) + jwt (2.5.0) + memoist (0.16.2) + mini_magick (4.11.0) + mini_mime (1.1.2) + multi_json (1.15.0) + multipart-post (2.0.0) + nanaimo (0.3.0) + naturally (2.2.1) + optparse (0.1.1) + os (1.1.4) + plist (3.6.0) + public_suffix (5.0.0) + rake (13.0.6) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.22.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + x86_64-darwin-21 + +DEPENDENCIES + fastlane + +BUNDLED WITH + 2.3.11 diff --git a/Spark-iOS/fastlane/Appfile b/Spark-iOS/fastlane/Appfile new file mode 100644 index 00000000..81869dc8 --- /dev/null +++ b/Spark-iOS/fastlane/Appfile @@ -0,0 +1,8 @@ +app_identifier("com.TeamSparker.Spark") # The bundle identifier of your app +apple_id("ypsophila97@icloud.com") # Your Apple Developer Portal username + +itc_team_id("119044239") # App Store Connect Team ID +team_id("T8C9SSEX5G") # Developer Portal Team ID + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/Spark-iOS/fastlane/Deliverfile b/Spark-iOS/fastlane/Deliverfile new file mode 100644 index 00000000..74739f74 --- /dev/null +++ b/Spark-iOS/fastlane/Deliverfile @@ -0,0 +1,3 @@ +# The Deliverfile allows you to store various App Store Connect metadata +# For more information, check out the docs +# https://docs.fastlane.tools/actions/deliver/ diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile new file mode 100644 index 00000000..7e4698a4 --- /dev/null +++ b/Spark-iOS/fastlane/Fastfile @@ -0,0 +1,25 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + +default_platform(:ios) + +platform :ios do + desc "Push a new release build to the App Store" + lane :release do + increment_build_number(xcodeproj: "Spark-iOS.xcodeproj") + build_app(workspace: "Spark-iOS.xcworkspace", scheme: "Spark-release") + upload_to_app_store + end +end From 5ca0c98d68c8f950fac21b394cd3f9320202ba08 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 6 Oct 2022 00:56:42 +0900 Subject: [PATCH 019/107] =?UTF-8?q?[Chore]=20#654=20-=20beta=20scheme=20?= =?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20lane=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 7e4698a4..6045bb25 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -16,10 +16,26 @@ default_platform(:ios) platform :ios do - desc "Push a new release build to the App Store" - lane :release do + desc "Push a new beta build to TestFlight" + lane :beta do + get_certificates + get_provisioning_profile increment_build_number(xcodeproj: "Spark-iOS.xcodeproj") - build_app(workspace: "Spark-iOS.xcworkspace", scheme: "Spark-release") - upload_to_app_store + build_app(workspace: "Spark-iOS.xcworkspace", scheme: "Spark-beta") + upload_to_testflight( + skip_waiting_for_build_processing: true + ) + version = get_version_number + build = get_build_number + slack( + username: "항상건강해야한다콩이", + icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", + message: "성공적으로 TestFilight 에 등록되었습니다!🔥", + slack_url: "https://hooks.slack.com/services/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", + payload: { + "Version": version + "(" + build + ")" + } + ) + end end end From e1fa9f31d25cf96518de1dd566e6729eee2dfffb Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 6 Oct 2022 00:57:25 +0900 Subject: [PATCH 020/107] [Chore] #654 - pod update --- Spark-iOS/Podfile.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Spark-iOS/Podfile.lock b/Spark-iOS/Podfile.lock index 2cff3e66..f8185ff7 100644 --- a/Spark-iOS/Podfile.lock +++ b/Spark-iOS/Podfile.lock @@ -98,18 +98,18 @@ PODS: - GoogleUtilities/UserDefaults (7.8.0): - GoogleUtilities/Logger - JJFloatingActionButton (2.5.0) - - KakaoSDKAuth (2.11.1): - - KakaoSDKCommon (= 2.11.1) - - KakaoSDKCommon (2.11.1): - - KakaoSDKCommon/Common (= 2.11.1) - - KakaoSDKCommon/Network (= 2.11.1) - - KakaoSDKCommon/Common (2.11.1) - - KakaoSDKCommon/Network (2.11.1): + - KakaoSDKAuth (2.11.3): + - KakaoSDKCommon (= 2.11.3) + - KakaoSDKCommon (2.11.3): + - KakaoSDKCommon/Common (= 2.11.3) + - KakaoSDKCommon/Network (= 2.11.3) + - KakaoSDKCommon/Common (2.11.3) + - KakaoSDKCommon/Network (2.11.3): - Alamofire (~> 5.1) - - KakaoSDKCommon/Common (= 2.11.1) - - KakaoSDKUser (2.11.1): - - KakaoSDKAuth (= 2.11.1) - - Kingfisher (7.3.2) + - KakaoSDKCommon/Common (= 2.11.3) + - KakaoSDKUser (2.11.3): + - KakaoSDKAuth (= 2.11.3) + - Kingfisher (7.4.0) - lottie-ios (3.4.3) - Moya (15.0.0): - Moya/Core (= 15.0.0) @@ -195,10 +195,10 @@ SPEC CHECKSUMS: GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f GoogleUtilities: 1d20a6ad97ef46f67bbdec158ce00563a671ebb7 JJFloatingActionButton: fdc3aefb0f28f04d0f988fa25d5fac97028a9ea7 - KakaoSDKAuth: bb2dfa7be30daa8403c9cfc8001aa6fde7a5b779 - KakaoSDKCommon: 555e1bb46595b842ded01cf7888cc17bbae4e113 - KakaoSDKUser: 08c0a4f40bebdebdf948a9e3d0e44ed5c2754f99 - Kingfisher: 0086ad83719761ba9b2cdaf6ef4d5b4878cbae23 + KakaoSDKAuth: a64dde90516e18fdfc35b83bbad2677c3675c329 + KakaoSDKCommon: b4235203f67a5b6ee2df75eaf9bbc863c6d92e09 + KakaoSDKUser: 9a42e9b74855ce876b071c841418aa6726534010 + Kingfisher: 596b207973051aae5e4c54a1c1cb39837ea10d36 lottie-ios: 9ae750cdc7820fecbd3c2f0cfc493038208fcdc4 Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 From 13380dc81b246902d577fd343dee99adb0d10ca2 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Thu, 6 Oct 2022 01:21:12 +0900 Subject: [PATCH 021/107] =?UTF-8?q?[Fix]=20isTimelineNew=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=9D=BC=20new=20=EB=B2=84=ED=8A=BC=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C,=20icBadgeNew=20=EC=97=90=EC=85=8B=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../icBadgeNew.imageset/Contents.json | 23 ++++++++++++++ .../icBadgeNew.imageset/icBadgeNew.png | Bin 0 -> 293 bytes .../icBadgeNew.imageset/icBadgeNew@2x.png | Bin 0 -> 407 bytes .../icBadgeNew.imageset/icBadgeNew@3x.png | Bin 0 -> 532 bytes .../HabitRoom/HabitRoom.storyboard | 29 ++++++++++++------ .../HabitRoom/HabitRoomVC.swift | 5 +++ 6 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew@3x.png diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/Contents.json new file mode 100644 index 00000000..deb502d4 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "scale" : "1x", + "idiom" : "universal", + "filename" : "icBadgeNew.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "icBadgeNew@2x.png" + }, + { + "scale" : "3x", + "idiom" : "universal", + "filename" : "icBadgeNew@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew.png new file mode 100644 index 0000000000000000000000000000000000000000..b716775623b51ad66fd9597c4af2ee0c6de0ebf5 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%Ah0G|+7_X3~)47UFn?EW*@zz~q@0A>RPZU4u&{s#in)c+Fx{~PB0zyJLI zu2VTjr`iKe;3^673ud_Af8If1fxv|GZ{<`r0Y%F_T^vIsF6Z`p3msM9U~!)>?_%=t z-*jHCsiz)&O**0{#=Jm<>&)5|3DZr&uYa1?W!`rAC(yX&{ElCJ3zMBLzEN^^))lT( zdzY!y&>ykMXG3@0$+t=~9;mvTOz6&(X7w!YdwDQw{=TCx;!CfTx39WCyZajVly83+ Yx_LQf#pjCp1D(L&>FVdQ&MBb@0G?!WVgLXD literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew@2x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1318f9a91c4ad073cd79cbfa40b274804d396df7 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaOW1AIbU-3xsFGg$m*uth=+U^axb`VRy^+5PALD}?@UU;IC{^Z)a=|827V z3wZuNfBRIOvmMYV?vfzCUj0? zsVCI3N*vQnU}m)l=D2Y^MOnzf(BXj4=8L?{4vZW(HCRO$4?LGz!n*vxw%bK_E-zWg zuwyDi+n*JWOH~>YqCyWOE@t?(@9l%y6^pMt-1lx-TRqz{`=YxG-}cwm7tUH8uKyt; iAnfGAjrZSv{m&48NR3f0Uttx{s|=p5elF{r5}E+D7pSQK literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew@3x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/icBadgeNew.imageset/icBadgeNew@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5243fe7de565fbe9cad0f82c398bb32aefd24de9 GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMw1AIbU-3xsFGg$m*aQM$)3qwG*4UBCEVgmtCRw4BN{`3FmZ~K4q@qYo& z|3=CG-+%t!v;2QbN8!BYk3a)?N`m}?859&&9KSEn@IGe3ggFdLtbmq=db&7xO%Cy?3bwCMs;Yc&}G| ztyshR_+{x6`lkm^dNkv}%>@@-y{9iRkW4r(v|)*WWx{<`2bF2|4Rg5}R_-_v|KKTi zLn1%Njlx3*ls6SHylG&R+kUicjr?PV2|Yyz`ezq1WUyF#kLs~z5MarO+x|>&fuO_t zs}@WuEEzY>Ya5<5eBj2z5wb(|Q1XMusN~)miU~8c7-xTE$q1;<7rdMiSnaN?ups_%W}{<62NiQevAs0s>r22WQ% Jmvv4FO#l++<<|fJ literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/HabitRoom.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/HabitRoom.storyboard index c639a538..d592e8d3 100644 --- a/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/HabitRoom.storyboard +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/HabitRoom/HabitRoom.storyboard @@ -1,9 +1,9 @@ - + - + @@ -51,13 +51,13 @@ - + @@ -75,22 +75,22 @@ - + - + @@ -178,11 +185,13 @@ + + @@ -200,7 +209,9 @@ + + diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index 1ce010d0..99152894 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -40,12 +40,14 @@ class HabitRoomVC: UIViewController { @IBOutlet weak var bgView: UIView! @IBOutlet weak var timeLabel: UILabel! @IBOutlet weak var goalLabel: UILabel! + @IBOutlet weak var lifeStackView: UIStackView! @IBOutlet weak var firstLifeImage: UIImageView! @IBOutlet weak var secondLifeImage: UIImageView! @IBOutlet weak var thirdLifeImage: UIImageView! @IBOutlet weak var mainCollectionView: UICollectionView! @IBOutlet weak var authButton: UIButton! @IBOutlet weak var gradationView: UIView! + @IBOutlet weak var newTimeLine: UIImageView! // MARK: - View Life Cycle @@ -154,6 +156,7 @@ extension HabitRoomVC { authButton.isEnabled = false gradationView.setHabitGradient() + newTimeLine.image = UIImage(named: "icBadgeNew") } private func setTabBar() { @@ -219,6 +222,8 @@ extension HabitRoomVC { } } + newTimeLine.isHidden = habitRoomDetail.isTimelineNew ? false : true + // 오늘의 인증 버튼 세팅 if leftDay == 66 { authButton.isEnabled = false From c6aa3c360136b18636c769713e173c6e7cfd8561 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Thu, 6 Oct 2022 01:46:16 +0900 Subject: [PATCH 022/107] =?UTF-8?q?[Feat]=20lifeStackView=EB=A5=BC=20?= =?UTF-8?q?=ED=86=B5=ED=95=B4=20LifeTimeLineVC=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/HabitRoom/HabitRoomVC.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index 99152894..0e447778 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -20,6 +20,7 @@ class HabitRoomVC: UIViewController { private let picker = UIImagePickerController() private var imageContainer = UIImage() + private lazy var tapGesture = UITapGestureRecognizer(target: self, action: #selector(presentLifeTimeLineVC)) private lazy var loadingBgView = UIView() private lazy var loadingView = AnimationView(name: Const.Lottie.Name.loading) @@ -157,6 +158,8 @@ extension HabitRoomVC { gradationView.setHabitGradient() newTimeLine.image = UIImage(named: "icBadgeNew") + + self.lifeStackView.addGestureRecognizer(tapGesture) } private func setTabBar() { @@ -454,6 +457,16 @@ extension HabitRoomVC { self.refreshControl.endRefreshing() } } + + @objc + private func presentLifeTimeLineVC() { + guard let timelineVC = UIStoryboard(name: Const.Storyboard.Name.lifeTimeLine, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.lifeTimeLine) as? LifeTimeLineVC else { return } + + timelineVC.modalPresentationStyle = .overFullScreen + timelineVC.modalTransitionStyle = .crossDissolve + + self.present(timelineVC, animated: true, completion: nil) + } } // MARK: - UIImagePickerDelegate From 3f0c0641e019f830c5e092d40b7b8c54da29d20a Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Thu, 6 Oct 2022 01:47:33 +0900 Subject: [PATCH 023/107] =?UTF-8?q?[Del]=20=EC=8A=B5=EA=B4=80=EB=B0=A9=20?= =?UTF-8?q?=EB=8D=94=EB=B3=B4=EA=B8=B0=20=EC=83=9D=EB=AA=85=20=ED=83=80?= =?UTF-8?q?=EC=9E=84=EB=9D=BC=EC=9D=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/HabitRoom/HabitRoomVC.swift | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index 0e447778..f89929e7 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -367,17 +367,6 @@ extension HabitRoomVC { private func presentToMoreAlert() { let alert = SparkActionSheet() - alert.addAction(SparkAction("생명 타임라인", handler: { - self.dismiss(animated: true) { - guard let timelineVC = UIStoryboard(name: Const.Storyboard.Name.lifeTimeLine, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.lifeTimeLine) as? LifeTimeLineVC else { return } - - timelineVC.modalPresentationStyle = .overFullScreen - timelineVC.modalTransitionStyle = .crossDissolve - - self.present(timelineVC, animated: true, completion: nil) - } - })) - alert.addAction(SparkAction("나의 목표 관리", titleType: .blackMediumTitle, handler: { self.dismiss(animated: true) { guard let nextVC = UIStoryboard(name: Const.Storyboard.Name.goalWriting, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.goalWriting) as? GoalWritingVC else { return } From 4da0249ebc5eb4cd7db960909a6fab772caea037 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Thu, 6 Oct 2022 02:07:14 +0900 Subject: [PATCH 024/107] =?UTF-8?q?[Feat]=20#655=20-=20RequestContainer=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EB=B0=8F=20Extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Podfile.lock | 2 +- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 +++ .../NetworkServices/Notice/NoticeAPI.swift | 8 ++--- .../Plugin/MoyaLoggerPlugin.swift | 1 + .../Plugin/RequestContainer.swift | 30 +++++++++++++++++++ .../ViewControllers/Notice/NoticeVC.swift | 4 +-- 6 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift diff --git a/Spark-iOS/Podfile.lock b/Spark-iOS/Podfile.lock index 2cff3e66..de9f1a74 100644 --- a/Spark-iOS/Podfile.lock +++ b/Spark-iOS/Podfile.lock @@ -211,4 +211,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: c6f26cb086a4c592812d547f9f53a7e99b2107d4 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 7ca9870f..1300cf0b 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -78,6 +78,7 @@ 76CFA86ADD8A78B244A43E61 /* Pods_Spark_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41C0A73912FEE9D1B2F72ED /* Pods_Spark_iOS.framework */; }; EB01BC1027C8DFBA00041A35 /* SparkActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB01BC0F27C8DFBA00041A35 /* SparkActionSheet.swift */; }; EB26D93827CF74D700C88DCA /* SendSparkCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB26D93727CF74D700C88DCA /* SendSparkCVC.swift */; }; + EB62422528EDA50C001432A8 /* RequestContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB62422428EDA50C001432A8 /* RequestContainer.swift */; }; EB625E7B278F271400C43DE9 /* DoingStorageCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E79278F271400C43DE9 /* DoingStorageCVC.swift */; }; EB625E7C278F271400C43DE9 /* DoingStorageCVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB625E7A278F271400C43DE9 /* DoingStorageCVC.xib */; }; EB625E7F278F272300C43DE9 /* DoneStorageCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E7D278F272300C43DE9 /* DoneStorageCVC.swift */; }; @@ -322,6 +323,7 @@ E41C0A73912FEE9D1B2F72ED /* Pods_Spark_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spark_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EB01BC0F27C8DFBA00041A35 /* SparkActionSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SparkActionSheet.swift; sourceTree = ""; }; EB26D93727CF74D700C88DCA /* SendSparkCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendSparkCVC.swift; sourceTree = ""; }; + EB62422428EDA50C001432A8 /* RequestContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestContainer.swift; sourceTree = ""; }; EB625E79278F271400C43DE9 /* DoingStorageCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoingStorageCVC.swift; sourceTree = ""; }; EB625E7A278F271400C43DE9 /* DoingStorageCVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DoingStorageCVC.xib; sourceTree = ""; }; EB625E7D278F272300C43DE9 /* DoneStorageCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoneStorageCVC.swift; sourceTree = ""; }; @@ -1315,6 +1317,7 @@ F82F58052792897B003E4174 /* Plugin */ = { isa = PBXGroup; children = ( + EB62422428EDA50C001432A8 /* RequestContainer.swift */, F82F580327928975003E4174 /* MoyaLoggerPlugin.swift */, ); path = Plugin; @@ -1696,6 +1699,7 @@ 2B98520E2790AE0000CE40A7 /* PhotoAuthView.swift in Sources */, EBD0D09E27DC3A890007E5AF /* OnboardingCVCViewModel.swift in Sources */, F8250CFE27D4A55C0073FFCA /* ProfileImageDelegate.swift in Sources */, + EB62422528EDA50C001432A8 /* RequestContainer.swift in Sources */, EB625E7F278F272300C43DE9 /* DoneStorageCVC.swift in Sources */, 2BA98FB627CB620E00C53820 /* CreateSuccessVC.swift in Sources */, EBEA382D27947C9100B5736A /* MyRoomAPI.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift index 76ba7fea..84c105e0 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift @@ -29,7 +29,7 @@ public class NoticeAPI { case . failure(let err): print(err) } - } + }.doCleanRequest() } private func judgeActiveFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { @@ -65,7 +65,7 @@ public class NoticeAPI { case . failure(let err): print(err) } - } + }.doCleanRequest() } private func judgeServiceFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { @@ -99,7 +99,7 @@ public class NoticeAPI { case .failure(let err): print(err) } - } + }.doCleanRequest() } func serviceRead(completion: @escaping(NetworkResult) -> Void) { @@ -113,7 +113,7 @@ public class NoticeAPI { case .failure(let err): print(err) } - } + }.doCleanRequest() } private func judgeStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift index b7a041ca..b4e27df9 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift @@ -63,6 +63,7 @@ final class MoyaLoggerPlugin: PluginType { } func onFail(_ error: MoyaError) { + guard error.errorCode != 6 else { return } var log = "------------------- 네트워크 오류" log.append("(에러코드: \(error.errorCode)) -------------------\n") log.append("3️⃣ \(error.failureReason ?? error.errorDescription ?? "unknown error")\n") diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift new file mode 100644 index 00000000..8fe6b702 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift @@ -0,0 +1,30 @@ +// +// RequestContainer.swift +// Spark-iOS +// +// Created by Junho Lee on 2022/10/05. +// + +import Foundation + +import Moya + +class RequestContainer { + static let shared = RequestContainer() + + private var requestArray: [Cancellable] = [] + + private init() { } + + public func doCleanRequest(request: Cancellable) { + requestArray.forEach { $0.cancel() } + requestArray.removeAll() + requestArray.append(request) + } +} + +extension Cancellable { + func doCleanRequest() { + RequestContainer.shared.doCleanRequest(request: self) + } +} diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift index 8032fe31..32e52c40 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift @@ -150,14 +150,14 @@ class NoticeVC: UIViewController { private func bindButton() { activeButton.rx.tap - .throttle(.seconds(3), latest: false, scheduler: MainScheduler.instance) +// .throttle(.seconds(3), latest: false, scheduler: MainScheduler.instance) .subscribe(onNext: { self.touchActiveButton() }) .disposed(by: disposeBag) serviceButton.rx.tap - .throttle(.seconds(3), latest: false, scheduler: MainScheduler.instance) +// .throttle(.seconds(3), latest: false, scheduler: MainScheduler.instance) .subscribe(onNext: { self.touchServiceButton() }) From 5e0ddef57edd550c13499e821c4c109f1b4ffaad Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 6 Oct 2022 17:39:14 +0900 Subject: [PATCH 025/107] =?UTF-8?q?[Chore]=20#654=20-=20.gitignore=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - metadata, screenshots 폴더 무시 - certificate, mobilprovision 파일 무시 --- .gitignore | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f6e01e2f..6eafc0d1 100644 --- a/.gitignore +++ b/.gitignore @@ -117,8 +117,11 @@ fastlane/Preview.html fastlane/screenshots/**/*.png fastlane/test_output -fastlane/metadata/ -fastlane/screenshots/ +Spark-iOS/fastlane/metadata/ +Spark-iOS/fastlane/screenshots/ + +*.cer +*.mobileprovision # Code Injection # After new code Injection tools there's a generated folder /iOSInjectionProject From 27274b0f42a8a5a22bf180073349d3d2eef16929 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 6 Oct 2022 17:41:01 +0900 Subject: [PATCH 026/107] =?UTF-8?q?[Chore]=20#654=20-=20.gitignore=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fastlane 관련 파일 무시 --- .gitignore | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 6eafc0d1..3d2ae508 100644 --- a/.gitignore +++ b/.gitignore @@ -112,10 +112,9 @@ Dependencies/ # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots/**/*.png -fastlane/test_output +Spark-iOS/fastlane/report.xml +Spark-iOS/fastlane/Preview.html +Spark-iOS/fastlane/test_output Spark-iOS/fastlane/metadata/ Spark-iOS/fastlane/screenshots/ From 6b6e25e7d965dc01b44f6359625ca94fe1d0e456 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 00:43:30 +0900 Subject: [PATCH 027/107] =?UTF-8?q?[Chore]=20#654=20-=20.gitignore=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Apple Store Connect API 정보를 가진 key.json 무시 --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3d2ae508..aae36085 100644 --- a/.gitignore +++ b/.gitignore @@ -119,6 +119,7 @@ Spark-iOS/fastlane/test_output Spark-iOS/fastlane/metadata/ Spark-iOS/fastlane/screenshots/ +Spark-iOS/fastlane/key.json *.cer *.mobileprovision From 8ea84cf50b6181b79d94bf527c6d7408a93ec336 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 01:35:25 +0900 Subject: [PATCH 028/107] =?UTF-8?q?[Chore]=20#654=20-=20fastlane=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=84=A4=EC=A0=95=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/README.md | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Spark-iOS/fastlane/README.md diff --git a/Spark-iOS/fastlane/README.md b/Spark-iOS/fastlane/README.md new file mode 100644 index 00000000..72db873e --- /dev/null +++ b/Spark-iOS/fastlane/README.md @@ -0,0 +1,40 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios beta + +```sh +[bundle exec] fastlane ios beta +``` + +Push a new beta build to TestFlight + +### ios release + +```sh +[bundle exec] fastlane ios release +``` + +Push a new release build to the App Store + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). From 9be2b82630584bae84fe46ea18fba8e2790aabe0 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Fri, 7 Oct 2022 03:55:43 +0900 Subject: [PATCH 029/107] =?UTF-8?q?[Del]=20=EC=A3=BC=EC=84=9D=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/ViewControllers/HabitRoom/HabitRoomVC.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index f89929e7..ef7f9bc5 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -278,14 +278,12 @@ extension HabitRoomVC { UserDefaultsManager.checkHabitRoomGuide = true guard let guideVC = UIStoryboard(name: Const.Storyboard.Name.habitRoomGuide, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.habitRoomGuide) as? HabitRoomGuideVC else { return } guideVC.dismissClousure = { - // FIXME: - 생명 감소 다이얼로그 + } guideVC.modalPresentationStyle = .overFullScreen guideVC.modalTransitionStyle = .crossDissolve self.present(guideVC, animated: true, completion: nil) - } else { - // FIXME: - 생명 감소 다이얼로그 } } From cb27d706882c7473d6f94554585a473d4d95597b Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 04:41:11 +0900 Subject: [PATCH 030/107] =?UTF-8?q?[Chore]=20#654=20-=20TestFlight=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EB=B0=B0=ED=8F=AC=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20lane=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 6045bb25..53a59bc8 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -21,9 +21,22 @@ platform :ios do get_certificates get_provisioning_profile increment_build_number(xcodeproj: "Spark-iOS.xcodeproj") - build_app(workspace: "Spark-iOS.xcworkspace", scheme: "Spark-beta") + build_app( + workspace: "Spark-iOS.xcworkspace", + scheme: "Spark-beta", + export_method: "app-store", + export_options: { + provisioningProfiles: { + "com.TeamSparker.Spark" => "com.TeamSparker.Spark AppStore", + "com.TeamSparker.Spark.SparkNotificationService" => "com.TeamSparker.Spark.SparkNotificationService AppStore" + } + } + ) upload_to_testflight( - skip_waiting_for_build_processing: true + api_key_path: "fastlane/key.json", + skip_waiting_for_build_processing: true, + changelog: "- 수출 규정 문서 추가 +- fastlane 에서 테스트 세부사항 작성" ) version = get_version_number build = get_build_number From 5660b10047c632fb82ea451efd84f3248709d31e Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 04:43:40 +0900 Subject: [PATCH 031/107] =?UTF-8?q?[Chore]=20#654=20-=20=EC=88=98=EC=B6=9C?= =?UTF-8?q?=20=EA=B7=9C=EC=A0=95=20=EB=AC=B8=EC=84=9C=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Non-Exempty Enctyption(비면제 암호화) 사용 안함. --- Spark-iOS/Spark-iOS/Resource/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Resource/Info.plist b/Spark-iOS/Spark-iOS/Resource/Info.plist index db59432c..524b8b75 100644 --- a/Spark-iOS/Spark-iOS/Resource/Info.plist +++ b/Spark-iOS/Spark-iOS/Resource/Info.plist @@ -27,6 +27,8 @@ FirebaseMessagingAutoInitEnabled No + ITSAppUsesNonExemptEncryption + KakaoNativeAppKey $(KAKAO_NATIVE_APP_KEY) LSApplicationQueriesSchemes From c37943fe033ecb43612a891fdc2da5201ba84322 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 06:09:27 +0900 Subject: [PATCH 032/107] =?UTF-8?q?[Chore]=20#654=20-=20TestFlight=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EB=B0=B0=ED=8F=AC=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20lane=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 외부테스팅 설정 --- Spark-iOS/fastlane/Fastfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 53a59bc8..80bba68e 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -34,7 +34,8 @@ platform :ios do ) upload_to_testflight( api_key_path: "fastlane/key.json", - skip_waiting_for_build_processing: true, + distribute_external: true, + groups: ["SparkBetaTestGroup"], changelog: "- 수출 규정 문서 추가 - fastlane 에서 테스트 세부사항 작성" ) From 2fd761d089cbd3fceacccb4484d67b2cebbce6f4 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 06:38:56 +0900 Subject: [PATCH 033/107] =?UTF-8?q?[Chore]=20#654=20-=20TestFlight=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EB=B0=B0=ED=8F=AC=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20lane=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - version number 를 target 을 지정하여 가져옴 --- Spark-iOS/fastlane/Fastfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 80bba68e..1368de38 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -39,7 +39,10 @@ platform :ios do changelog: "- 수출 규정 문서 추가 - fastlane 에서 테스트 세부사항 작성" ) - version = get_version_number + version = get_version_number( + xcodeproj: "Spark-iOS.xcodeproj", + target: "Spark-iOS" + ) build = get_build_number slack( username: "항상건강해야한다콩이", From 3dca8df3b5ce764bc130051a2caf7c997aa5c24c Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 07:07:43 +0900 Subject: [PATCH 034/107] =?UTF-8?q?[Chore]=20#654=20-=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=20=EB=B0=B0=ED=8F=AC=EB=A5=BC=20=EC=9C=84=ED=95=9C=20lane=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slack 설정, release 설정 --- Spark-iOS/fastlane/Fastfile | 55 +++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 1368de38..d84d5a7d 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -45,14 +45,63 @@ platform :ios do ) build = get_build_number slack( + username: "항상건강해야한다콩이", + icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", + message: "성공적으로 TestFlight 에 등록되었습니다!🔥", + slack_url: "https://hooks.slack.com/services/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", + payload: { + "Version": version + "(" + build + ")" + } + ) + end + + desc "Push a new release build to the App Store" + lane :release do |options| + if options[:version] + get_certificates + get_provisioning_profile + increment_version_number(version_number: options[:version]) + build_app(workspace: "Spark-iOS.xcworkspace", scheme: "Spark-release") + upload_to_app_store( + api_key_path: "fastlane/key.json", + skip_metadata: false, + skip_screenshots: true, + submit_for_review: true, + automatic_release: true, + force: true + ) + version = get_version_number( + xcodeproj: "Spark-iOS.xcodeproj", + target: "Spark-iOS" + ) + build = get_build_number + slack( username: "항상건강해야한다콩이", - icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", - message: "성공적으로 TestFilight 에 등록되었습니다!🔥", + icon_url: "https://hooks.slack.com/services/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", + message: "성공적으로 앱을 등록했습니다!💫", slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } - ) + ) + end end + + error do |lane, exception, options| + version = get_version_number( + xcodeproj: "Spark-iOS.xcodeproj", + target: "Spark-iOS" + ) + build = get_build_number + slack( + username: "항상건강해야한다콩이", + icon_url: "https://hooks.slack.com/services/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", + message: "에러 발생!!! 발생!!🚨 : #{exception}", + success: false, + slack_url: "https://hooks.slack.com/services/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", + payload: { + "Version": version + "(" + build + ")" + } + ) end end From bbd55dcc585a0eac7257e0b0efb97865b569150f Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 07:29:05 +0900 Subject: [PATCH 035/107] =?UTF-8?q?[Chore]=20#654=20-=20=EB=B9=8C=EB=93=9C?= =?UTF-8?q?=EB=B2=88=ED=98=B8=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - release-1.0.4 브랜치에서 릴리즈 작업 진행 예정 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 5a90834d..6f56b2c7 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -1997,7 +1997,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 42; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2015,7 +2015,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2035,7 +2035,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 42; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2053,7 +2053,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2134,7 +2134,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 42; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2152,7 +2152,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.3; + MARKETING_VERSION = 1.0.4; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2167,7 +2167,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 42; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2194,7 +2194,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 42; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2221,7 +2221,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 42; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; From 4e4860f236bbf374e6269ba8d975e25dcaacafd1 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 07:29:25 +0900 Subject: [PATCH 036/107] =?UTF-8?q?[Chore]=20#654=20-=20slack=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index d84d5a7d..f37f3c39 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -77,9 +77,9 @@ platform :ios do build = get_build_number slack( username: "항상건강해야한다콩이", - icon_url: "https://hooks.slack.com/services/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", + icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -95,10 +95,10 @@ platform :ios do build = get_build_number slack( username: "항상건강해야한다콩이", - icon_url: "https://hooks.slack.com/services/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", + icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 8afa35cc6366383d4235c557542381aa7b64fb80 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 07:40:06 +0900 Subject: [PATCH 037/107] =?UTF-8?q?[Chore]=20#654=20-=20slack=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index f37f3c39..37928664 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -79,7 +79,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -98,7 +98,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From eca3efefc00676ba6f7220ccfb0c2bc45a9658b2 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 07:49:45 +0900 Subject: [PATCH 038/107] =?UTF-8?q?[Chore]=20#654=20-=20=EB=B9=8C=EB=93=9C?= =?UTF-8?q?=EB=B2=88=ED=98=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TestFlight 자동배포 테스트로 인한 빌드 번호 증가 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 6f56b2c7..0c864625 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -1997,7 +1997,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2035,7 +2035,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2134,7 +2134,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2167,7 +2167,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2194,7 +2194,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2221,7 +2221,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; From 5d84fcf96b95c69358b83a40c006b5775fcaeb6b Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Fri, 7 Oct 2022 16:29:12 +0900 Subject: [PATCH 039/107] =?UTF-8?q?[Feat]=20=EC=83=9D=EB=AA=85=20=ED=83=80?= =?UTF-8?q?=EC=9E=84=EB=9D=BC=EC=9D=B8=20API=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 + .../Source/NetworkModels/Room/TimeLine.swift | 21 ++ .../Source/NetworkServices/Room/RoomAPI.swift | 31 +++ .../NetworkServices/Room/RoomService.swift | 9 +- .../HabitRoom/HabitRoomVC.swift | 1 + .../LifeTimeLine/LifeTimeLineVC.swift | 221 +++--------------- 6 files changed, 96 insertions(+), 191 deletions(-) create mode 100644 Spark-iOS/Spark-iOS/Source/NetworkModels/Room/TimeLine.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 5a90834d..17d9e941 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -32,6 +32,7 @@ 2B57F38427971F7A002A677D /* ProfileSetting.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2B57F38327971F7A002A677D /* ProfileSetting.storyboard */; }; 2B69E7E5278E22F4000F927F /* FeedHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B69E7E4278E22F4000F927F /* FeedHeaderView.swift */; }; 2B69E7E7278E28B2000F927F /* FeedCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B69E7E6278E28B2000F927F /* FeedCVC.swift */; }; + 2B916A3D28EFF8600016C7E6 /* TimeLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B916A3C28EFF8600016C7E6 /* TimeLine.swift */; }; 2B9471F9278BE922005484C5 /* NotoSansKR-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2B9471F6278BE922005484C5 /* NotoSansKR-Bold.otf */; }; 2B9471FA278BE922005484C5 /* NotoSansKR-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2B9471F7278BE922005484C5 /* NotoSansKR-Medium.otf */; }; 2B9471FB278BE922005484C5 /* NotoSansKR-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2B9471F8278BE922005484C5 /* NotoSansKR-Regular.otf */; }; @@ -276,6 +277,7 @@ 2B57F38327971F7A002A677D /* ProfileSetting.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ProfileSetting.storyboard; sourceTree = ""; }; 2B69E7E4278E22F4000F927F /* FeedHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedHeaderView.swift; sourceTree = ""; }; 2B69E7E6278E28B2000F927F /* FeedCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedCVC.swift; sourceTree = ""; }; + 2B916A3C28EFF8600016C7E6 /* TimeLine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeLine.swift; sourceTree = ""; }; 2B9471F6278BE922005484C5 /* NotoSansKR-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSansKR-Bold.otf"; sourceTree = ""; }; 2B9471F7278BE922005484C5 /* NotoSansKR-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSansKR-Medium.otf"; sourceTree = ""; }; 2B9471F8278BE922005484C5 /* NotoSansKR-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NotoSansKR-Regular.otf"; sourceTree = ""; }; @@ -776,6 +778,7 @@ 2B57F37B27968A28002A677D /* CreateRoom.swift */, 2B57F37D27969791002A677D /* RoomId.swift */, F8F6D6FD2797D8BD00725537 /* HabitRoomDetail.swift */, + 2B916A3C28EFF8600016C7E6 /* TimeLine.swift */, ); path = Room; sourceTree = ""; @@ -1717,6 +1720,7 @@ F8E3496827969B61001B67E7 /* AuthAPI.swift in Sources */, F8096F3C2784211D00B71D38 /* UIColor+.swift in Sources */, F8E4DFD027D0858500128B1F /* MypageVC.swift in Sources */, + 2B916A3D28EFF8600016C7E6 /* TimeLine.swift in Sources */, 2BE5D818279330A6007A544D /* TimerAuthView.swift in Sources */, 2BBED12D279539B90052CA5C /* WaitingMember.swift in Sources */, F8D4496E27BE25610091F297 /* LeftButtonNavigaitonBar.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/TimeLine.swift b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/TimeLine.swift new file mode 100644 index 00000000..596b7f65 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/NetworkModels/Room/TimeLine.swift @@ -0,0 +1,21 @@ +// +// TimeLine.swift +// Spark-iOS +// +// Created by 양수빈 on 2022/10/07. +// + +import Foundation + +// MARK: - Timelines +struct Timelines: Codable { + let timelines: [Timeline] +} + +// MARK: - Timeline +struct Timeline: Codable { + let title, content: String + let profiles: [String]? + let day: String + let isNew: Bool +} diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift index 147dfe13..4527f7c5 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomAPI.swift @@ -344,4 +344,35 @@ public class RoomAPI { } } } + + func fetchTimeline(roomID: Int, completion: @escaping(NetworkResult) -> Void) { + roomProvider.request(.timeLineFetch(roomID: roomID)) { result in + switch result { + case .success(let response): + let statusCode = response.statusCode + let data = response.data + let networkResult = self.judgeFetchTimelineStatus(by: statusCode, data) + completion(networkResult) + case .failure(let err): + print(err) + } + } + } + + private func judgeFetchTimelineStatus(by statusCode: Int, _ data: Data) -> NetworkResult { + let decoder = JSONDecoder() + guard let decodedData = try? decoder.decode(GenericResponse.self, from: data) + else { return .pathErr } + + switch statusCode { + case 200: + return .success(decodedData.data ?? "None-Data") + case 400..<500: + return .requestErr(decodedData.message) + case 500: + return .serverErr + default: + return .networkFail + } + } } diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift index 556accf5..60b92f51 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Room/RoomService.swift @@ -24,6 +24,7 @@ enum RoomService { case deleteWaitingRoom(roomID: Int) case leaveRoom(roomID: Int) case readRoom(roomID: Int) + case timeLineFetch(roomID: Int) } extension RoomService: TargetType { @@ -61,6 +62,8 @@ extension RoomService: TargetType { return "/room/\(roomID)/out" case .readRoom(let roomID): return "/room/\(roomID)/read" + case .timeLineFetch(let roomID): + return "/room/\(roomID)/timeline" } } @@ -94,6 +97,8 @@ extension RoomService: TargetType { return .delete case .readRoom: return .patch + case .timeLineFetch: + return .get } } @@ -135,7 +140,7 @@ extension RoomService: TargetType { return .requestParameters(parameters: ["roomId": roomID], encoding: JSONEncoding.default) case .leaveRoom(let roomID): return .requestParameters(parameters: ["roomId": roomID], encoding: JSONEncoding.default) - case .readRoom: + case .readRoom, .timeLineFetch: return .requestPlain } } @@ -168,7 +173,7 @@ extension RoomService: TargetType { return Const.Header.authorizationHeader() case .leaveRoom: return Const.Header.authorizationHeader() - case .readRoom: + case .readRoom, .timeLineFetch: return Const.Header.authorizationHeader() } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index ef7f9bc5..a8a73be7 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -449,6 +449,7 @@ extension HabitRoomVC { private func presentLifeTimeLineVC() { guard let timelineVC = UIStoryboard(name: Const.Storyboard.Name.lifeTimeLine, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.lifeTimeLine) as? LifeTimeLineVC else { return } + timelineVC.roomID = self.roomID timelineVC.modalPresentationStyle = .overFullScreen timelineVC.modalTransitionStyle = .crossDissolve diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift index 518fab43..85d7a2ce 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/LifeTimeLine/LifeTimeLineVC.swift @@ -17,187 +17,8 @@ class LifeTimeLineVC: UIViewController { private let collectionViewFlowlayout = UICollectionViewFlowLayout() private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewFlowlayout) private let tapGestureRecognizer = UITapGestureRecognizer() - - // MARK: - DummyData - private let dummyList = [ - ["title": "생명 충전 완료", - "content": "뭐무머머ㅓ머멈", - "day": "오늘", - "isNew": true - ], - [ - "title": "생명 1개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490" - ], - "day": "1일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - ["title": "생명 충전 완료", - "content": "뭐무머머ㅓ머멈", - "day": "오늘", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - ["title": "생명 충전 완료", - "content": "뭐무머머ㅓ머멈", - "day": "오늘", - "isNew": true - ], - [ - "title": "생명 1개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490" - ], - "day": "1일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - ["title": "생명 충전 완료", - "content": "뭐무머머ㅓ머멈", - "day": "오늘", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - ["title": "생명 충전 완료", - "content": "뭐무머머ㅓ머멈", - "day": "오늘", - "isNew": true - ], - [ - "title": "생명 1개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490" - ], - "day": "1일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - ["title": "생명 충전 완료", - "content": "뭐무머머ㅓ머멈", - "day": "오늘", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ], - [ - "title": "생명 2개 감소💧", - "content": "인증하지 않은 스파커가 있었네요. 응원이 더 필요해요!", - "profiles": [ - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/common%2Fprofile_empty.png?alt=media&token=194cf154-6a1b-4ffe-9e51-6f07b3c45490", - "https://firebasestorage.googleapis.com/v0/b/we-sopt-spark.appspot.com/o/users%2F20220315_110435_256363256778.jpeg?alt=media" - ], - "day": "2일 전", - "isNew": true - ] - ] + private var timelineList: [Timeline] = [] + var roomID: Int? // MARK: - Life Cycles @@ -210,6 +31,7 @@ class LifeTimeLineVC: UIViewController { setCollectionView() setAddTarget() setGestureRecognizer() + getTimelineFetchWithAPI(roomID: self.roomID ?? 0) } // MARK: - Custom Methods @@ -274,10 +96,9 @@ extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { let width: CGFloat = UIScreen.main.bounds.width let estimatedHeight: CGFloat = width*107/375 - // FIXME: - 데이터 받고 수정 let dummyCell = LifeTimeLineCVC(frame: CGRect(x: 0, y: 0, width: width, height: estimatedHeight)) - let data = dummyList[indexPath.row] - dummyCell.initCell(title: data["title"] as? String ?? "", subTitle: data["content"] as? String ?? "", profilImg: (data["profiles"] as? [String?]) ?? [], day: data["day"] as? String ?? "") + let data = timelineList[indexPath.row] + dummyCell.initCell(title: data.title, subTitle: data.content, profilImg: data.profiles ?? [], day: data.day) dummyCell.layoutIfNeeded() let estimatedSize = dummyCell.systemLayoutSizeFitting(CGSize(width: width, height: estimatedHeight)) @@ -293,8 +114,7 @@ extension LifeTimeLineVC: UICollectionViewDelegateFlowLayout { extension LifeTimeLineVC: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - // FIXME: - 데이터 받고 수정 - return dummyList.count + return timelineList.count } func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { @@ -310,9 +130,8 @@ extension LifeTimeLineVC: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: Const.Cell.Identifier.lifeTimeLineCVC, for: indexPath) as? LifeTimeLineCVC else { return UICollectionViewCell() } - // FIXME: - 데이터 받고 수정 - let data = dummyList[indexPath.row] - cell.initCell(title: data["title"] as? String ?? "", subTitle: data["content"] as? String ?? "", profilImg: (data["profiles"] as? [String?]) ?? [], day: data["day"] as? String ?? "") + let data = timelineList[indexPath.row] + cell.initCell(title: data.title, subTitle: data.content, profilImg: data.profiles ?? [], day: data.day) return cell } } @@ -324,3 +143,27 @@ extension LifeTimeLineVC: UIGestureRecognizerDelegate { return (touch.view is UICollectionViewCell) || (touch.view is UICollectionReusableView) ? false : true } } + +// MARK: - Network + +extension LifeTimeLineVC { + private func getTimelineFetchWithAPI(roomID: Int) { + RoomAPI(viewController: self).fetchTimeline(roomID: roomID) { response in + switch response { + case .success(let data): + if let timelines = data as? Timelines { + self.timelineList = timelines.timelines + self.collectionView.reloadData() + } + case .requestErr(let message): + print("getTimelineFetchWithAPI - requestErr: \(message)") + case .pathErr: + print("getTimelineFetchWithAPI - pathErr") + case .serverErr: + print("getTimelineFetchWithAPI - serverErr") + case .networkFail: + print("getTimelineFetchWithAPI - networkFail") + } + } + } +} From 3ffae3b32a9b49e314f659c5ffd9872b7a7c92d8 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 7 Oct 2022 16:59:37 +0900 Subject: [PATCH 040/107] =?UTF-8?q?[Chore]=20#654=20-=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=97=90=EC=85=8B=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contents.json | 23 ++++++++++++++++++ .../property1DashSparkFlake1.png | Bin 0 -> 673 bytes .../property1DashSparkFlake1@2x.png | Bin 0 -> 1292 bytes .../property1DashSparkFlake1@3x.png | Bin 0 -> 1842 bytes .../Contents.json | 23 ++++++++++++++++++ .../property1DashSparkFlake2.png | Bin 0 -> 781 bytes .../property1DashSparkFlake2@2x.png | Bin 0 -> 1503 bytes .../property1DashSparkFlake2@3x.png | Bin 0 -> 2279 bytes .../Contents.json | 23 ++++++++++++++++++ .../property1DashSparkFlake3.png | Bin 0 -> 907 bytes .../property1DashSparkFlake3@2x.png | Bin 0 -> 1793 bytes .../property1DashSparkFlake3@3x.png | Bin 0 -> 2714 bytes .../Contents.json | 23 ++++++++++++++++++ .../property1DashSparkFlake4.png | Bin 0 -> 866 bytes .../property1DashSparkFlake4@2x.png | Bin 0 -> 1673 bytes .../property1DashSparkFlake4@3x.png | Bin 0 -> 2613 bytes .../Contents.json | 23 ++++++++++++++++++ .../property1DashSparkFlake5.png | Bin 0 -> 1074 bytes .../property1DashSparkFlake5@2x.png | Bin 0 -> 2161 bytes .../property1DashSparkFlake5@3x.png | Bin 0 -> 3253 bytes .../Contents.json | 23 ++++++++++++++++++ .../property1DashSparkFlake6.png | Bin 0 -> 1584 bytes .../property1DashSparkFlake6@2x.png | Bin 0 -> 3650 bytes .../property1DashSparkFlake6@3x.png | Bin 0 -> 5592 bytes .../Contents.json | 23 ++++++++++++++++++ .../sparkFlakeSparkFlake1.png | Bin 0 -> 655 bytes .../sparkFlakeSparkFlake1@2x.png | Bin 0 -> 1153 bytes .../sparkFlakeSparkFlake1@3x.png | Bin 0 -> 1563 bytes .../Contents.json | 23 ++++++++++++++++++ .../sparkFlakeSparkflake2.png | Bin 0 -> 784 bytes .../sparkFlakeSparkflake2@2x.png | Bin 0 -> 1375 bytes .../sparkFlakeSparkflake2@3x.png | Bin 0 -> 2006 bytes .../Contents.json | 23 ++++++++++++++++++ .../sparkFlakeSparkflake3.png | Bin 0 -> 865 bytes .../sparkFlakeSparkflake3@2x.png | Bin 0 -> 1533 bytes .../sparkFlakeSparkflake3@3x.png | Bin 0 -> 2165 bytes .../Contents.json | 23 ++++++++++++++++++ .../sparkFlakeSparkflake4.png | Bin 0 -> 901 bytes .../sparkFlakeSparkflake4@2x.png | Bin 0 -> 1665 bytes .../sparkFlakeSparkflake4@3x.png | Bin 0 -> 2289 bytes .../Contents.json | 23 ++++++++++++++++++ .../sparkFlakeSparkflake5.png | Bin 0 -> 1000 bytes .../sparkFlakeSparkflake5@2x.png | Bin 0 -> 1872 bytes .../sparkFlakeSparkflake5@3x.png | Bin 0 -> 2691 bytes .../Contents.json | 23 ++++++++++++++++++ .../sparkFlakeSparkflake6.png | Bin 0 -> 1457 bytes .../sparkFlakeSparkflake6@2x.png | Bin 0 -> 3247 bytes .../sparkFlakeSparkflake6@3x.png | Bin 0 -> 4699 bytes 48 files changed, 276 insertions(+) create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/property1DashSparkFlake1.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/property1DashSparkFlake1@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/property1DashSparkFlake1@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake3.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake3.imageset/property1DashSparkFlake3.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake3.imageset/property1DashSparkFlake3@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake3.imageset/property1DashSparkFlake3@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake4.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake4.imageset/property1DashSparkFlake4.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake4.imageset/property1DashSparkFlake4@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake4.imageset/property1DashSparkFlake4@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/property1DashSparkFlake6.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/property1DashSparkFlake6@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/property1DashSparkFlake6@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake3.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake3.imageset/sparkFlakeSparkflake3.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake3.imageset/sparkFlakeSparkflake3@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake3.imageset/sparkFlakeSparkflake3@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake4.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake4.imageset/sparkFlakeSparkflake4.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake4.imageset/sparkFlakeSparkflake4@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake4.imageset/sparkFlakeSparkflake4@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/sparkFlakeSparkflake5.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/sparkFlakeSparkflake5@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/sparkFlakeSparkflake5@3x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/Contents.json create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/sparkFlakeSparkflake6.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/sparkFlakeSparkflake6@2x.png create mode 100644 Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/sparkFlakeSparkflake6@3x.png diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/Contents.json new file mode 100644 index 00000000..4c865d30 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "property1DashSparkFlake1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "property1DashSparkFlake1@2x.png", + "scale" : "2x", + "idiom" : "universal" + }, + { + "scale" : "3x", + "filename" : "property1DashSparkFlake1@3x.png", + "idiom" : "universal" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/property1DashSparkFlake1.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake1.imageset/property1DashSparkFlake1.png new file mode 100644 index 0000000000000000000000000000000000000000..c4bf8ee8d208f6a27f528a86582fd0327fd7f395 GIT binary patch literal 673 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 literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/Contents.json new file mode 100644 index 00000000..db521fd3 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "property1DashSparkFlake2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "property1DashSparkFlake2@2x.png" + }, + { + "filename" : "property1DashSparkFlake2@3x.png", + "scale" : "3x", + "idiom" : "universal" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2.png new file mode 100644 index 0000000000000000000000000000000000000000..31465818a68b82d7f75a53302c1434b1d3bc2c3c GIT binary patch literal 781 zcmV+o1M>WdP)Px#7*I@9MMrQ zlzk8(oAO1nIb#vc&Ed3qQ%#Y6Jt(K5V4w_rKyh>RV@~1BP?nb~0_429tTKPdx^}fX zCMUOt!HB|^%Dg!v8m5FZPsmB8yRO$xt;1h7A+o&! zuj9owGKk zrim@r+tqqnk>O1(>{6X$SBpoDV|*OrycGY}aCsk#*QrYxgjDT(DfK?swG&mXUD+*O z>-9dnmEkmTs_5LR2)RpPkU0Fs5KDzcuAAL0-z1W#u&{8HWu97S&B0yBH-^Z=uCE>& z1!y?wBWt9uqUi7TwdjCH=l_GQRqJ#I-pzYsK21FDv=hSXQQ;iz=TKWoN;^{RpWa*k z#75SkFJ}thU{1|ZpS?G7o{~2+V#l;cOZV@`nIQqPlB5ToG68b4`|q<`@-uSPwF51u z6Px#6;Mo6MMrQ5 z00(qZPE!DU3`Za`U&LPYlK=n(RY^oaRCwC$oJ(`!I1qr1Epes+bH*Xd8D-fyL$Z@I z-c-#QXJ-EYUs%A&;D=gj$=y^<4XR2d!H<@u?ynz`Ns>RfZEheVo!vml7;Ye>gd2=k zWsdSfv|c9nMpfXa)6Z5|NOrQ4Y#}V9n4X>lcESpLHj;88J0)<|-?1!N>f0+2HI;ID z9W=29hs&@1R1zuB95pE+`N#Z=TFSEX``%nkIsE!_eUK7juI3>|mb78$VoKb+u^3s( zX&1+GOi3ikq5&H_#x}~^S|H*cOBfoREqFcxVwjFKwnI}2%#^b%ck*pdZU zz-SgHMZRpC|HD;@(Lm*Mpc2hSVu?+UxbTTwkyKTxD1??*bq0wx0I3Al?Gt! z6(Uop0F1ptG$s@fr9|3QkOilRjBWQ*^<ZISm?siub|DY~0@a_R- zR|dRPfZLw-!32#8irm1plNJ2LvE#OYw8E8RoF^}vL~T!Jy(P)pvjT_D&Yf!h3;_Id5jS_j61&sL9hp@19DM!0^QK1U{v!ILe}v>hduQO7 z{%!sEU!QhAbZ+Cb?DSx9Y}_eRKMu);01Lxd=awse8NH5cQe^Vdyd)zy!FJaTDf+3J zCl!-~BBh~%dy=PV6}M>l`|AN$H3Uh`&R5i{YSS>(Olj0Sk*x6-z!-m;W65(BH6^Km zxB}{vjPoWgsY0rYQmv_V#8LA^a-{sBlRLa5izCsHg3Pqx%}Y|?*ShciNScrh#mC^r zI3-Q`2Kx_9k#^mC4Sel(;yZQ!M9+{t)4p^SU(&b6W_VEjx|8i)G zE2MVk;^Xa&`i^g_Q^$ksec9bm# z$aq#i+r#r{>^e+Z=E7#J|A5bSV38cHh5_Z|H4qElIzDC%2zN7xtiP*}?yVw=)@e|& zZ%K?Tx}Gy|n2X>djv_~{ja>XaaHwKDco|mbcjxC!SDDZ!|0RX4E2HRQUqx4zar8>f ziKeuED{lPq{OY=Mr1u@wwl1tg?MX~^mXCdG@>AYcVK%CIED%NO50ICjPPcDl0c z@AD%^VVcLX5nXwWq|mZVj+vb@>Gv3nbenWGkz-1OEOJb_PD(2KB_;I=uonL! zr}LaVB=<&kD(f4#k_smBLJC=?2*)WcvdnKW^Sj_H{s*p1iC50onA-pV002ovPDHLk FV1m|-+9&`3 literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2@3x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake2.imageset/property1DashSparkFlake2@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2abb238d80555f8121979505f3e0bde41a017f08 GIT binary patch literal 2279 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%0D6B%)J7_%g;2i$aLq*P@n>w)QsC9AYN}pBW0@{_L z@X@-MEvB}*(oP#I4`u^DnqUP7^)dQ}p&Fa|$3OfyQByNNOx}2!brdL;JZDMA1Q!`; z{yjy3-zld674v;p>M9{Cc*nJo?1MDBG~j;i*ItqVBJs!2Meb6pQ8>f-<7<2|_c?mm zN{=JPH#26l^yuRoim^N3!tFNW)L!W62rg1-|9J!HD7L|EtQ5+qXL|B>s*Y03bQ4v9 ze)G}52pa?I7AXjpk7Ti96AM>)CiBSzp`y{LF?q!HQSzRBk%z={N>F^DvP@>QQ?rkZ hWIVl%`$*n)`~$W`U;G;PYjpqs002ovPDHLkV1g5Prpo{T literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake3.imageset/property1DashSparkFlake3@2x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake3.imageset/property1DashSparkFlake3@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fa56394eb616ffa176f7c771a439e5cdd3692a3f GIT binary patch literal 1793 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 XXpAfdBv1ZD00000NkvXXu0mjfs}2WC literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/Contents.json new file mode 100644 index 00000000..44e625ff --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "property1DashSparkFlake5.png", + "scale" : "1x" + }, + { + "filename" : "property1DashSparkFlake5@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "property1DashSparkFlake5@3x.png", + "scale" : "3x", + "idiom" : "universal" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5.png new file mode 100644 index 0000000000000000000000000000000000000000..760c2be22bfd9cd441a1f566b0b1f519cde12045 GIT binary patch literal 1074 zcmV-21kL-2P)Px#8&FJCMMrQa|0SOK7K8anH#n8i zoxY7gv`;IZx}<;l4qbq1zvA^!oVd0Nz;7jRy1-0KMFBvz#VzK?A@j+wLKvU>j3zJg zKx8nkAKBD~xe9jVgl87QNlG;*O$BnxkJWbWC@?612B`pcw9`OLMrl^_3UY*=DFEE7 z7UoJLm6^M%PDP6Sv0i#A8~XyPshYP1B5j8Y9+)C~T#_VXk%ti3AWuG-FKtHVnhkJ| z?Sg!jkKqKRh}CWhy!EoSp&`Yx@85AWB$s=9nr_;|ZRo87AyGMl2Z5#NIhW`GT65|) zZbsJuB(+&%?(qp&On&x=CxQL68@_8kHF`wQJlhsdiAb(?g0+#WFqma}yynm5<_~9I9$4ho9ie|U10-zGGPZ#|;!(iP z;ECrLnl5EjuCHLG#WTVCnOn%=NEMW4Oc!%apv^?^kAkpFW7iDBeP_Wvl-C5xn6#qe zZh^?0>l3-+asPI`A^Wyov8oW=Dv~rHlJTnU^OZ=ds)#y~R=s~~N&oMZr5sE3(ypQ% z=!iX2I6kDtSjENVFzrj%tMmjUN0R;co>u1WxLE0=`5wEV%ChAGprog~DIg||Se~6n zr|L6_=|q|Ong0I7(X<)mc<3p@3r~fnH*OuHd@pU*Ua7>L&}Jr*O)4X4V_?WhVV!Z literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5@2x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..635aa416cfc06348649ab49a848f7c3a7f577fda GIT binary patch literal 2161 zcmV-%2#)uOP)Px#7*I@9MMrQ4iu?-0w#&TuZi0d<0Y?DeK zfSzyNx#(zYyVs183JNSoEX+JBvrJ#t+aCmcG#zNH-u-iq#5QfMy6Cb5(xZ#8c1!qs7M%ZWQ8R((j~ZciOXyg*{b@tfcXZOpnPIn4Sh zkLXB7GQyp6xn3Mb8t1?pD0BjocXJ!#hwUvC92I{vwvnkiH)^rs&G(<9Rf`QZR-@?} z6kDmPlyEBO5HTB`id1I21ec;whc_Z`uFf+X$4EsmZJ8Fn3Vdu?@qdqh3IZYm6r~>w zayNHwIZ}!FUi+3#`CbxfwJO%stvF)UdhKl#-4#VyQasY6VZ|LZrDV;<1L3?w#*t;P zpjL<=VhQ3F+>|z?tX7*Ava=GmK6_0Nqy3;&)#ZM=Q|2>eo765xw^f1kDh5u{(yA8? zNX19R?zpM;pPPsvJm?^9_=XQI=|p%CcM#p&?9QZSB`3Y8VGF(HVX#JX8lmXZW1U*3 zf`w7Ure07BKJKlukp{;NS8Qla-(-FS0ea_BO2x*r-zJ6upV^@o8HaYNi6+*wAmt+W zdY%QsY)`Rqf*NI*gS1t*4rY>iDryLkn$XB7wWoNtGA&ow9J|R3>sK?w zscnidq#|7ywF1^IaA_isOm>LQtzYo}YGW;L@ysd=g7O?`pMS$*oRg|&g zuZy+g`u_nt7E5^5mb0$?!wI4o$&w?Zbshjb%mL6F5EC22XUydR3C^nn;x; z{>nXE^1_CKvJLM_Db@}rR1^Gs7qK~uW$xhQAHm4KXdXHk&%_QH-i)_OMr4FJU7%i# zgFkT~UhN}lo6v>mh@ZjB@LUmp^o;M@#|`f#`x@vCE0*pY>Epmms$;IOf;OOuGis+g zNb&_K(TX&Sjp8oErSXjwidgQmO}F9jQhc|i9Dj=Vt9XEScQ0RJ__Lss@;DY1N#P4krl$NL5ohkj0qY3;_IGYzSEIJe(q)A4S<)IKYqt80ZzUmV0tF2x3ld` zk2-+6ka_z0YnOMQ1NUCqXMHOBH{3ibrNIt9eV2J=wvw%J72PGrpXsjai2lAXL7c;1 z{5(#cG7!gan*)s`1*Qus1w`U*MCS@V2#s6-uM=@j2MX}-^|MC?%P(JmxJlNy!2yT= z$?29{)&Xb4qr%W6X}rp~Tb<-NqlY=#O4Jc=T*#q+Qm`b?jm8Im`24>-TFn zb$rfPuEX!#zx1oGxhwH5H0C~V#R}aj(Tz@T=hh4ptyzWy{M9Ye96$VFQovd0_4f?8 zOS@nV4Qh9;cEQ@93K?owM@PPONK8O6*qGG^#l%r0*)geL4b1K=8M= zNo;Zz`g)*-P*Vj&tG7a&6yU6-CInhH<$T(mD=0OYtmC9dD%j27cO@L1CCqKlr1*|k zrgxkbosDe%B<1X3c*;M?Bsjof8Uc%{oom56P4o|!O(moexav&Da!tV$=DS#pELJ0M zp;gUBUSv)hMDF={23On6LPqP0*_ex$MV?7V*lf$JQBdkQ9B61|SSvVn9zcw0g&fuN zcfZ|Fr)Xb$tC#93sXW!1r0xznf&k4(YY4BMo`-j_rY77y44T#6NvNOZs4)o4c0CoP zRH-4TjrVq93Ts@5c2*P*mK0R#WsN+(u96y0Os!n#q`?Iwqvrb?bw=Y3couJBs0FT^ zNuglzRznicx0EKJa^TuR!rqIJ%66gXPrj+9!7S+&zZX$G2GJ9##Wg$DtCj|n-4S6) zX+!uP09@i%)igM5VWa9!xOi6_svm=%Js9&U+$aU$h#d4zB)n8fgO@T@6RT)zx053w zo~k4*GVqpoA*ZF*k(HwlVKdYt3fFwD_7gCM- nM=;_(9>EBTkAXb-Gad3@5-b10nNYO^00000NkvXXu0mjfJNyn- literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5@3x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake5.imageset/property1DashSparkFlake5@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c0bee186ed25d46b0766e5084a0f598f641765 GIT binary patch literal 3253 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 n5>~kP5*GE;BgVl+{)zktBI& literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/Contents.json new file mode 100644 index 00000000..0bbbe4c7 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "property1DashSparkFlake6.png", + "scale" : "1x" + }, + { + "scale" : "2x", + "filename" : "property1DashSparkFlake6@2x.png", + "idiom" : "universal" + }, + { + "filename" : "property1DashSparkFlake6@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/property1DashSparkFlake6.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/property1DashSparkFlake6.imageset/property1DashSparkFlake6.png new file mode 100644 index 0000000000000000000000000000000000000000..06e929a4c270439f10bc647f48fd72ec5d8eef2d GIT binary patch literal 1584 zcmV-02G9A4P)Px#9#BkFMMrQKmB zobx6KsU8D;_-TJwf;b}&#qV}Ro`fk{ZQtv-et#8DB>ptI874&&`z~5Kf-+sve3}<+ zw(`Eni7-`uQ@mbT?~B;`!8ffwg0XL#yxG>c9pZaKhI*DlY4J}pE~cLuBC_5yGvB?d zLxX$DYi3kL^IARm3eBSiqxH&y*Ike;JEGLhK}jt#AX4UU^6gL9ia@^3pY(p9t;Uk0Cw?V)D>4IR32o4KY3!D$o4477}p z2O8w)3JjQ-LvaHoDrgqQV;51FrC1><+*=ul-ep8y(GIf~Gck%WQ{V&iMJ2M&mtngp zgBuEH+CZO}rD9e>3FlixSlI3|OZ8$ngP<>~jI(J6?HHg2x>;fl+BUfSJwj_rm}wTG zhde*DmT}r}npj#zJ|ujm!*lh6EW5W`zra z$d52s4%lziMXjhv%+b1Rrc9)I6d`>%6ZcVQJUoDH>G$Yld`nYTrxCFJS>cTgW_SF{ zTm(fMTvsVDGeb%pJ}~9oY7y0Rc~dE}sRX|&lGMddJ5($`n3C{H!d|AfZP>Q8b=BMQ zRI1st9X>hF*|sxpS5o$h4$g>o?{KMPY?hqyl0OXpRk!Ot*0fS7#|KzbRS(QtQODjd zCsFD$Qov#@-$Ep|5~3F8>4}N4ObDYhjR0*R<-vt^zD{7gFxegGjK2)7n$(v9Z>#AF zWWr!f6`DBgHoV%mF#b8lJ`!;`PecaDhBt=ibP4=uwb@s{6IH(+iM=uXCTQfTiivXW zPGD-fLI*5B$^(fI?Ohi!Elt+duAGdA0drg^rY3hot{CqFX6rc$%SO^n)gvm$jtzmy zw*>}%bF<@o>sMnuzZ-dksQtjfwOr9vuj=wOr@c3$et; zpf6wL9@AYlNB(fSD5{fENtF>loci{L&|7>d-GNBsHxYb)QL1?(ibaI25K$~>RHg{A z;S?96U+(8&c(f#e?zDO)V=Jui9nDEBkYGF{%l0NQ0jpnhHCkRZlk7^1xZxM^10&cE zF=gyEP0q;J*T=x(uArJMs*liOF!dGB_j7y?Frr!u#NrzpmhcG4`Efv`M|+rxv;iy$ zbOqY;bOziX$Da= zYYJ-J)=pI-4#!ag+>?RTfWR9Ze=4qG5RTR{7&;52kx@;aRg0%Y5#xvcd6r~X2QpA$ulo1+PZ&uH{U<+ zU)Ba}QXk>E<3!}8Vruk@2>-g{)^qR(7e!?7QU#A7;q6`bi{Sg$9X?mq{CJ=HKdzzv i#bwujxKdN!Sp5SGPx#9#BkFMMrQI1)wxi==J? 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 literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@2x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fc5fa6dee3693c69ee2b60c1ec197c1e9e9b16 GIT binary patch literal 1153 zcmV-{1b+L8P)Px#Ay7n-~ZL$|JC3B*53cr-2c|! z|Igq5)!(6scT)fW019+cPE!D%Am#pqWkSLbJ^|}(000B%NklLkiIAf&s<~JG=YOOEPki`?^ z4lVE#LqEa=eoD4P3tZ(C3rQ?yn2Ns zV1dCBkMwJBlX&_D(I?0W{E{3kFme(HyO8V(15vvWl*H*C1S9dN+=b|~30h#7#8I&i zc|Z${n#AKnNO=VoxK08VxXxCbF>Ek&IYA3tMSO>dTAn0F3tYds02@Oig|Nh`Xrm-( zf#oG0maPyiDskM-kd-*yJNvPKIm z`8jdi!w}mc!aj(U#HtUXXJ~<|+{$bWWiLc#5sq~~WQ`WM%3OBk#Yr5RAQEkkGD2o( zfn^rqz{n7gI5tE0llYndxkn2uA#q57a3x+86v!P~VE!T;kQhvfVXl4niKOD;h6Le zk9gn25v4-uyW5oJUcGl?cr_>FEy5w`9j1-osIP* zUWq~yxz5J6k{oH#v`ajdg|zqT3t>o(7Pw2|KpN8a|LQAgNSnl|IOH5HaQ$U7K?~d} zv0LeAci|iW9;9&`3J{RPVo4z&hs9C~fo#zNH;+S83}k;1jzEwcE%4za9-|<;y}E)y z612ek5<8uJh?$@T-jg^2LUOdgyA^+kguE0>3JH0U_}fQhJ{|e^`1ttv{6F~%3qCfv ToJtDa00000NkvXXu0mjf!tE8a literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@3x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..713bde38f3434e5752e152e41e80fd95b4c7a2df GIT binary patch literal 1563 zcmY*ZdpJ~S7(Wwsri(R)GT-sJUWTc{LT}q*5s7)$|ELmmG?DOm&`#j&}eZSxDyZqko`(A;!Cr5i8a~=Qy z+OAtr9{`|OsH>(1IU@AU+e~(v(QFSk0NfVMp9#|H+)Yz2Hx&|E}S^` z*{*@vjsbP6E`76|eWXFv`{qb;sEIzFzJQV`YK(AN@xz5KlfKZ#jTCF-}OaQ5vTe4tVMc@ijsp5dv)XTCP#2!l;lAq zRwMkgvMK||>f2<-lKM)rX?Vzdjc3EkV(L=(@z476z`meGt?|UCWSTRY5OS1_PKfPZ z6B*9vx6!Lw>@5Cu=cSUftp_p?C%VF&`(97s8KsROSjJ*$N`u>3+L}CRDkHw=AxS9H zQ#|H=wZf1xBgSMkulO$B+ujjY zNQ&|{4X-^V9S>@|&V5f;R7UX-=nh`?ZQ5`Y^M;iR#X|t!+gO(6H?(o}K{juZhulrcq_R<>s`izcg7#$ z70rG_CK6#=RR$7aDiKt)xuE(*c1l7l!q-DpU|4v?7+v8K9cipw=CFzidZcoHgw371 z0ZytJtmL;kXI=7psHe!SYL3m{(zq!eW^O;d7Sy-ddtb%AfcN@dm8;k@4P(yjWH@Mg zil-H(A+>krst?SA_mtRffOI7C2U~p#GzQsX-0X(i9;@eOYO#ZOS=#Uy48g&8w}0oR zo!RrO!W57BsfrAhE!ufu*K?7u!-8i5>A>hnU{#&K8sWY|@3^bi{@!D07ocwi>hBV|T%;R*PLx!-z9Z9W_LsT3Osn)C!~6E)%RPofm%I@WS|)3@@{{a8*o^6KWa?s(=7d*~C6 zH%O}wAg^@6WQyTdbWpx~YuX$-f9HwRyJN{+xo4(I4Rw0ZW)>yx0J8I@!}Oe~6)rPR z%1f;XQcWEUPwNh}5u=Qjsn45iP)Lg-YqNf&Agto6yn_yBfwmiu&39 zfp$V+DF|dHsB?<2cY@6D80+#+f*7_M6p>)$bXM)EdVKxwYPA0?zIjFiwDc}`pn6k) t_nJH@SuA~*E`IyL_y1{grSCCTBcPf{$ZzZu^2lTjxVm_vmCm6@{sDEd(UbrH literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/Contents.json new file mode 100644 index 00000000..0bf5c8d0 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "sparkFlakeSparkflake2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "sparkFlakeSparkflake2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "sparkFlakeSparkflake2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2.png new file mode 100644 index 0000000000000000000000000000000000000000..a71dc3498231d0e39c412c7f7e63ffdfb6cd1444 GIT binary patch literal 784 zcmV+r1MmEaP)Px#Cs0gOMMrQ<|G3BhxXJ&x$^W>>|G3HjxXJ&y$^Wp= z|F_5gxyb*x%Kx~@Gre~s0000CbW%=J03+XoUA>_15I}IxO)`P#0007SNklZ6zB@0P`YrcM8d^^1QiA8KuY0ADN@ilX(%X&DBPs5kdP=S+)*Q* zfV0nsm3b)cycXQ<&hE`GI%C8ZoeRVkoe5%#j?kIt{Z*vSG%AG9nYfB%kS%g&B7+b)vu+}D#1^?T9TO2a zvuY6nXI5;a)|saLyNJHm5Z}nnr{JD&1f_u$*ys_PH1QIj$&=Kl%>j8cYq7*F5y%9I zVtZU>i)ylK6W5p3$G?{K6=E8fW|3?c8R?{(Q}= zo2$u8KltlxY1gYs?({%I9afVO(`(+D2W}I(Y)vl~zGe1CvlT_`qk&R4+~;HOw@j`) z0&Agq?C;{GPuZ4M63fDgdY*k5`b#Z3m+gLDX#zI$qMCczzU^54CE(@hQEB$mor(Ok z`l`V!OCdLiugo7s)H$Tlkz(k<;c{*Q!$pT}U@5=vzgFIpiF;8ly zzQdTBaB&*Zw068UZKPd4_wA;ZfCr^wx$rZLk#K4Px#Bv4FLMMrQ<|G3Hjx5xju$^W;=|G3EixXS;y$^W^@ z|FF;hy2$^y$zZAS3IG5A3v^OWQvlx}ghOP(qVEteakl)G000ESNklQwq&Ab8x%Zqq=gr2mX-gBHklg#sd(KVbIR9~NErF4{SOTOpKEp#AY6;Jmt4`sJ zqEaI`WJM{}MML}vq={a@?gY{YLslmYH3UPdmk_m!g|w!S3ic(LG8EPflNE_=E zX|tTCL*&fjYami)$#pc4KGrF+W~u5RQf6ssAu?uJ(=vq2Qqn_Y%+k<9WX$3kAZ@Hu zTU{xaP9o?ZHh#`l`d);G(f!sx$}DTMUXV|5e> zIf;^f29X`b-})qBMY`!cTQEhMOwQo7RgU;y;l)n1y!|pXr$? zP2T1AB57`T+jOrwD@ddyVv}IH(--eSaDRI18w8o~DVHm_ynkumug^?#Z{4tE&#;2; zyqWzz33%EyJg!@Ir2X&PbC2}>Py7CKTk|Y;bbm(bAz%`*ST7;-4y{bsjgZ)cg_!hG zWkQ^$Wucr<4~a*^%Sl(hASp5ve?Oqtl6$}Y}atjgT&2%In*8<1Bs(@Q?RJu--jXePK-RGleDgKhdgkBoyZ@_K=duUCj%*x`)-t3dQy-Y)+t7_ z1fCS60CtMWEEPFO73&m(Spqpmx>-cu%j;vEqBn~t2`Pe|qBBcR7E;4HMPru0lZ6z( zPDwXQMH*7YIwjRCfixq@EPziQ`Bj literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2@3x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake2.imageset/sparkFlakeSparkflake2@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9412cb7f9f1be493612bc92fb62b5b24d33e50 GIT binary patch literal 2006 zcmV;{2Pyc8P)Px#9#BkFMMrQ<|G3Hjx5xju$^W>>|F_8hxXJ&y$p5d; z|G3F+$-bcg000SeQchC<(jlH>LV)iOvk}%e000L;Nklf&q5QZs=l67Pq zr>$-hQl!vL4f3U%?4W3MlTo0kZ%%!3%9me~Ebl`UD;$CBLHo!xy8 znVXE5cwledhqJRLgWz+0u8sO06YC2|sz?kGvDzX=#2SffK&nuPWP*oP6+)cjVRaT* zV?3f%T_#s;f&4tmGV#YQfdF ztHY+ytITG0)pV&A_Yo~bDvMlUPngu)4p-xiFsmagSf*5VxK4$6J%pqZ;)(aW85dlC z39kCpzj7>VDB`1HXJ z2tcl@ORHF#abLGfrOCw}?h>vcB9%tmhc2kdTn$wbW`>$>5VADSC=AtI?)<*WasQ6ydSRCo)2|5$xAgv-tJ3y<}ZD2<;eEj zYrI{WjtKiad-nwz((1js3=_vfF1;@2Ez?LLuS?VHy=Dx9&>{_K_FgH=5bd@;Fm^ez zgwVa+e!{rj*J8+rJT8OnzCO!rPr6xX(tE`$`5=pXqwT&iPd@B(nRPicrhM4#(hPgA z)L7KgxHs*+vb|j9=+YWJ!>jBiM9uVq^9lWYQF%htO)r@BIkt-?<|ie#seb3!#!8r% z{5tB*HvO)-OuedyJR7&uJ*+bxsvvl6aGibmd@{J&d#+JMm(z(C6Rr`;(D+Q_c4G1D zvt=x2sdC#g-E%4_L-$&=m#WEi&2}%Jv%{;m<2{vJNh=|;KIhazb{_FSUpZV{U8aM2 zFL`HA(q&4&%pvdmP`Z&szY#1u=5nl`4-@@_DBW%jN16>rcr2c-(~x+Pi}Hi1L=FA7 z`nBEe&L_{b5<-EB%C*dgzrR|2e0M@m2*tq_IZ;oDj52~%j{D?=^ve&L=E`wD)K^oE%~N+K%5iy&g`ylk zTzcm{-&m%44|AZ5tQ_ZDsVs2odN7N{7G$7cP&Mm+*h4nNn+ zz*d=P=rFKX#{kOVTOnoIDa1h z8Jc-0{^`2Ls==8@-9H}QBho=LkGg;Q?y(g7NVBQ*1<`X}~*6~UQD%|D*rM0SQ| z9yR}T{b1GL%%kETZ!cNxpqWR-KYd?Vh5qsQF4Ga3d6xAN%{=A)Y5Bt{@K5TIs=z-} zpI8+%^OX1}@wv3}{p0!d-rwTILy>>_ez9`=> oJS+bsh)XL7oPx#Do{*RMMrQ<|A?jkiKYLDqyLGe|B0plgP;G1rT>Se z|A(XhiKYLEqyLDd|B0n`{0;j6000eiQchCC3oGBIQ| z?Mfjr45U&3q+%ifshCv&shAi*C`L<>iivVaCY2%;lS`3_nM#p~i3&(2l_C>UNC8-u zNtN&&c#N&y&(rSQefrSQc>3&@333SZ1Z3Rg_kK)^N&vSdOoS&%IgGGam6CImL5 zQg~vPFr-{eZ8O1;$x85O&u_fl2RBY$-KDqxaO*yJWAbpt%FxF5*D;htdh+?+?Eiz? zPfoMqh=?hFM>|^N*Q@qdIVU z`AhR;E#vPouS=S3W5SsctW5Dj5^wqH@p`ct-+Yk$a9O2#pTDji@H)O3UlhYIIG%VQ zffn$KH&>YP+XJ~$+E&6A!!hPq498GvF&$!yc}>`p&W42s`#@%4Uq1$Loo2=?ZDD|E;*)_QB|A06o r%Tluw`sg^MOjZql+`s$BzqS1ViB@{`+5zuQ00000NkvXXu0mjfxA2-v literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake3.imageset/sparkFlakeSparkflake3@2x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake3.imageset/sparkFlakeSparkflake3@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..276567395910e1fe661d48a03e579c0cd04576c9 GIT binary patch literal 1533 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 LNkvXXu0mjfEz?S} literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/Contents.json new file mode 100644 index 00000000..07668d3c --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "sparkFlakeSparkflake5.png", + "scale" : "1x" + }, + { + "filename" : "sparkFlakeSparkflake5@2x.png", + "scale" : "2x", + "idiom" : "universal" + }, + { + "idiom" : "universal", + "filename" : "sparkFlakeSparkflake5@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/sparkFlakeSparkflake5.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake5.imageset/sparkFlakeSparkflake5.png new file mode 100644 index 0000000000000000000000000000000000000000..27e51febf4695cc313c1ae5028a8655581bd25ec GIT binary patch literal 1000 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 literal 0 HcmV?d00001 diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/Contents.json new file mode 100644 index 00000000..e1b5b13d --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "sparkFlakeSparkflake6.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "sparkFlakeSparkflake6@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "sparkFlakeSparkflake6@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/sparkFlakeSparkflake6.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake6.imageset/sparkFlakeSparkflake6.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ca111046b7af25c12838660212f7c927ad4613 GIT binary patch literal 1457 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 literal 0 HcmV?d00001 From 08b54542427b56fac0c60a35071842084e0e7b77 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 01:08:09 +0900 Subject: [PATCH 041/107] =?UTF-8?q?[Comment]=20#622=20-=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=EC=99=84=EB=A3=8C=20flake=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift b/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift index 4bd11dfe..827e04c9 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift @@ -190,6 +190,7 @@ public class SparkFlake { } } + /// 인증 완료 flake. public func completeAuthText() -> String { switch state { case .day65: From 97ae7c4ceff82064bbdd519be48d3671c3ce9a89 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 01:59:34 +0900 Subject: [PATCH 042/107] =?UTF-8?q?[Delete]=20#662=20-=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20StrogaeMoreL?= =?UTF-8?q?istDataModel=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 0c864625..3658bdf6 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -94,7 +94,6 @@ EB625E84278F273200C43DE9 /* FailStorageCVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB625E82278F273200C43DE9 /* FailStorageCVC.xib */; }; EB625E87278F27F000C43DE9 /* StorageListDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E86278F27F000C43DE9 /* StorageListDataModel.swift */; }; EB625E8A278F29D300C43DE9 /* CarouselLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E89278F29D300C43DE9 /* CarouselLayout.swift */; }; - EB625E8F278F8E1900C43DE9 /* StorageMoreListDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E8E278F8E1900C43DE9 /* StorageMoreListDataModel.swift */; }; EB625E91278F8E3700C43DE9 /* StorageMoreVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E90278F8E3700C43DE9 /* StorageMoreVC.swift */; }; EB625E95278F8E7200C43DE9 /* MoreStorageCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB625E93278F8E7200C43DE9 /* MoreStorageCVC.swift */; }; EB625E96278F8E7200C43DE9 /* MoreStorageCVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB625E94278F8E7200C43DE9 /* MoreStorageCVC.xib */; }; @@ -342,7 +341,6 @@ EB625E82278F273200C43DE9 /* FailStorageCVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FailStorageCVC.xib; sourceTree = ""; }; EB625E86278F27F000C43DE9 /* StorageListDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageListDataModel.swift; sourceTree = ""; }; EB625E89278F29D300C43DE9 /* CarouselLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselLayout.swift; sourceTree = ""; }; - EB625E8E278F8E1900C43DE9 /* StorageMoreListDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageMoreListDataModel.swift; sourceTree = ""; }; EB625E90278F8E3700C43DE9 /* StorageMoreVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageMoreVC.swift; sourceTree = ""; }; EB625E93278F8E7200C43DE9 /* MoreStorageCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoreStorageCVC.swift; sourceTree = ""; }; EB625E94278F8E7200C43DE9 /* MoreStorageCVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MoreStorageCVC.xib; sourceTree = ""; }; @@ -815,7 +813,6 @@ isa = PBXGroup; children = ( EB625E86278F27F000C43DE9 /* StorageListDataModel.swift */, - EB625E8E278F8E1900C43DE9 /* StorageMoreListDataModel.swift */, ); path = StorageList; sourceTree = ""; @@ -1816,7 +1813,6 @@ F8250CFA27D25F2B0073FFCA /* UserService.swift in Sources */, F82F5808279289B2003E4174 /* HomeAPI.swift in Sources */, EBA93A7F279080E2009AE771 /* JoinCheckVC.swift in Sources */, - EB625E8F278F8E1900C43DE9 /* StorageMoreListDataModel.swift in Sources */, 2BAF156027D492C500DE4190 /* NoticeVC.swift in Sources */, F8096F462784247100B71D38 /* Notification.swift in Sources */, 2B57F37E27969791002A677D /* RoomId.swift in Sources */, From e55f1b6001568613afa72e19346c233a58f046e2 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 02:08:43 +0900 Subject: [PATCH 043/107] =?UTF-8?q?[Add]=20#662=20-=20UpgradeFlake=20app?= =?UTF-8?q?=20data=20model=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 업그레이드 팝업창 구성을 반환 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 12 +++++++++++ .../AppModels/UpgradeFlake/UpgradeFlake.swift | 20 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 3658bdf6..77c4b5a7 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -190,6 +190,7 @@ F86C68B927958AA9009A5296 /* UIImageView+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86C68B827958AA9009A5296 /* UIImageView+.swift */; }; F86FC47A27F1B835004478F3 /* NoticeSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86FC47927F1B835004478F3 /* NoticeSetting.swift */; }; F86FC47C27F1C8B3004478F3 /* NotificationCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86FC47B27F1C8B3004478F3 /* NotificationCellDelegate.swift */; }; + F88BA13B28F08D8900F48BD0 /* UpgradeFlake.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */; }; F8902FB927ED84060034E8F9 /* Withdrawal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F8902FB827ED84060034E8F9 /* Withdrawal.storyboard */; }; F8902FBD27ED844E0034E8F9 /* WithdrawalVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8902FBC27ED844E0034E8F9 /* WithdrawalVC.swift */; }; F8917E5A2836A14500F96347 /* UserDefaultsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8917E592836A14500F96347 /* UserDefaultsManager.swift */; }; @@ -442,6 +443,7 @@ F86C68B827958AA9009A5296 /* UIImageView+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImageView+.swift"; sourceTree = ""; }; F86FC47927F1B835004478F3 /* NoticeSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeSetting.swift; sourceTree = ""; }; F86FC47B27F1C8B3004478F3 /* NotificationCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCellDelegate.swift; sourceTree = ""; }; + F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlake.swift; sourceTree = ""; }; F8902FB827ED84060034E8F9 /* Withdrawal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Withdrawal.storyboard; sourceTree = ""; }; F8902FBC27ED844E0034E8F9 /* WithdrawalVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawalVC.swift; sourceTree = ""; }; F8917E592836A14500F96347 /* UserDefaultsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsManager.swift; sourceTree = ""; }; @@ -1123,6 +1125,7 @@ F8096F1C27841DAE00B71D38 /* AppModels */ = { isa = PBXGroup; children = ( + F88BA13928F08D6800F48BD0 /* UpgradeFlake */, EB625E85278F27C300C43DE9 /* StorageList */, ); path = AppModels; @@ -1374,6 +1377,14 @@ path = SparkNotificationService; sourceTree = ""; }; + F88BA13928F08D6800F48BD0 /* UpgradeFlake */ = { + isa = PBXGroup; + children = ( + F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */, + ); + path = UpgradeFlake; + sourceTree = ""; + }; F8E3496627969B4F001B67E7 /* Auth */ = { isa = PBXGroup; children = ( @@ -1803,6 +1814,7 @@ F8250CF827D25F240073FFCA /* UserAPI.swift in Sources */, F8E3496D2796B7F6001B67E7 /* Signup.swift in Sources */, F8E3496A27969B67001B67E7 /* AuthService.swift in Sources */, + F88BA13B28F08D8900F48BD0 /* UpgradeFlake.swift in Sources */, 2BA98FB227CB44E800C53820 /* HabitRoomLeaveVC.swift in Sources */, 2BE907E127D9EE9700B36002 /* NoticeService.swift in Sources */, F86FC47C27F1C8B3004478F3 /* NotificationCellDelegate.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift b/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift new file mode 100644 index 00000000..acc5841b --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift @@ -0,0 +1,20 @@ +// +// UpgradeFlake.swift +// Spark-iOS +// +// Created by kimhyungyu on 2022/10/08. +// + +import UIKit + +public struct UpgradeFlake { + let flakeImage: UIImage + let upgradeText: String + let levelTest: String + + init(_ flakeImage: UIImage, _ upgradeText: String, _ levelTest: String) { + self.flakeImage = flakeImage + self.upgradeText = upgradeText + self.levelTest = levelTest + } +} From 69b1296d3753bac117591dda2e475ce1a8b890e4 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 02:09:51 +0900 Subject: [PATCH 044/107] =?UTF-8?q?[Feat]=20#662=20-=20SparkFlake=EC=97=90?= =?UTF-8?q?=20=EC=97=85=EA=B7=B8=EB=A0=88=EC=9D=B4=EB=93=9C=20=EC=A0=84?= =?UTF-8?q?=ED=9B=84=20UpgradeFlake=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 남은 일수에 대해서 업그레이드 팝업창 구성을 반환 --- .../Spark-iOS/Source/Classes/SparkFlake.swift | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift b/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift index 827e04c9..c5b75e79 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift @@ -227,4 +227,117 @@ public class SparkFlake { return "" } } + + public func upgrade(_ leftDay: Int) -> UpgradeFlake { + switch state { + case .day65: + return 65 >= leftDay ? afterUpgrade() : beforeUpgrade() + case .day62: + return 62 >= leftDay ? afterUpgrade() : beforeUpgrade() + case .day58: + return 58 >= leftDay ? afterUpgrade() : beforeUpgrade() + case .day32: + return 32 >= leftDay ? afterUpgrade() : beforeUpgrade() + case .day6: + return 6 >= leftDay ? afterUpgrade() : beforeUpgrade() + case .dDay: + return 0 >= leftDay ? afterUpgrade() : beforeUpgrade() + case .error: + return 0 > leftDay ? afterUpgrade() : beforeUpgrade() + } + } + + /// 업그레이드 전 팝업문구. + private func beforeUpgrade() -> UpgradeFlake { + switch state { + case .day65: + return UpgradeFlake(UIImage(), "", "") + case .day62: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake1") ?? UIImage(), + """ + 3일을 달성하면 얻을 수 있어요! + """, + "Level 2") + case .day58: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake2") ?? UIImage(), + """ + 7일을 달성하면 얻을 수 있어요! + """, + "Level 3") + case .day32: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake3") ?? UIImage(), + """ + 33일을 달성하면 얻을 수 있어요! + """, + "Level 4") + case .day6: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake4") ?? UIImage(), + """ + 마지막 7일 남았을 때 얻을 수 있어요! + """, + "Level 5") + case .dDay: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake5") ?? UIImage(), + """ + 마지막 날에 얻을 수 있어요! + """, + "Level 6") + case .error: + return UpgradeFlake(UIImage(), + "", + "") + } + } + + /// 업그레이드 후 팝업문구. + private func afterUpgrade() -> UpgradeFlake { + switch state { + case .day65: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake1") ?? UIImage(), + """ + 새로운 습관 시작! + 첫 번째 불꽃 결정을 얻었어요. + """, + "Level 1") + case .day62: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake2") ?? UIImage(), + """ + 3일 동안 열심히 달렸네요! + 두 번째 불꽃 결정을 얻었어요. + """, + "Level 2") + case .day58: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake3") ?? UIImage(), + """ + 7일 동안 열심히 달렸네요! + 세 번째 불꽃 결정을 얻었어요. + """, + "Level 3") + case .day32: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake4") ?? UIImage(), + """ + 33일 동안 열심히 달렸네요! + 네 번째 불꽃 결정을 얻었어요. + """, + "Level 4") + case .day6: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake5") ?? UIImage(), + """ + 마지막 7일 남았네요! + 다섯 번째 불꽃 결정을 얻었어요. + """, + "Level 5") + case .dDay: + return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake6") ?? UIImage(), + """ + 드디어 마지막 날이네요! + 여섯 번째 불꽃 결정을 얻었어요. + """, + "Level 6") + case .error: + return UpgradeFlake(UIImage(), + "", + "") + } + } } From dda9752965017696077b4b6229e8cd41a5ff0a08 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 02:20:55 +0900 Subject: [PATCH 045/107] =?UTF-8?q?[Add]=20#662=20-=20UpgradeFlakeDialogue?= =?UTF-8?q?=20VC=20=EC=99=80=20Storyboard=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 8 +++++ .../Resource/Constants/Storyboard.swift | 1 + .../Resource/Constants/ViewController.swift | 1 + .../Dialogue/UpgradeFlakeDialogue.storyboard | 33 +++++++++++++++++++ .../Dialogue/UpgradeFlakeDialogueVC.swift | 29 ++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard create mode 100644 Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 77c4b5a7..c2a80ed8 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -191,6 +191,8 @@ F86FC47A27F1B835004478F3 /* NoticeSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86FC47927F1B835004478F3 /* NoticeSetting.swift */; }; F86FC47C27F1C8B3004478F3 /* NotificationCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86FC47B27F1C8B3004478F3 /* NotificationCellDelegate.swift */; }; F88BA13B28F08D8900F48BD0 /* UpgradeFlake.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */; }; + F88BA13E28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BA13D28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift */; }; + F88BA14028F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F88BA13F28F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard */; }; F8902FB927ED84060034E8F9 /* Withdrawal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F8902FB827ED84060034E8F9 /* Withdrawal.storyboard */; }; F8902FBD27ED844E0034E8F9 /* WithdrawalVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8902FBC27ED844E0034E8F9 /* WithdrawalVC.swift */; }; F8917E5A2836A14500F96347 /* UserDefaultsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8917E592836A14500F96347 /* UserDefaultsManager.swift */; }; @@ -444,6 +446,8 @@ F86FC47927F1B835004478F3 /* NoticeSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeSetting.swift; sourceTree = ""; }; F86FC47B27F1C8B3004478F3 /* NotificationCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCellDelegate.swift; sourceTree = ""; }; F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlake.swift; sourceTree = ""; }; + F88BA13D28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlakeDialogueVC.swift; sourceTree = ""; }; + F88BA13F28F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = UpgradeFlakeDialogue.storyboard; sourceTree = ""; }; F8902FB827ED84060034E8F9 /* Withdrawal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Withdrawal.storyboard; sourceTree = ""; }; F8902FBC27ED844E0034E8F9 /* WithdrawalVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawalVC.swift; sourceTree = ""; }; F8917E592836A14500F96347 /* UserDefaultsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsManager.swift; sourceTree = ""; }; @@ -876,6 +880,7 @@ F8C3659427DBB82A000AA9BD /* CompleteFailDialogueVC.swift */, EBE01B1127E31BFE00085AB7 /* LifeDiminishDialogueVC.swift */, F8281821281316BA00D3E26C /* SingleResponseDialogueVC.swift */, + F88BA13D28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift */, ); path = Dialogue; sourceTree = ""; @@ -887,6 +892,7 @@ F8C3659627DBB834000AA9BD /* CompleteFailDialogue.storyboard */, EBE01B1327E334D200085AB7 /* LifeDiminishDialogue.storyboard */, F828181D2813169200D3E26C /* SingleResponseDialogue.storyboard */, + F88BA13F28F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard */, ); path = Dialogue; sourceTree = ""; @@ -1593,6 +1599,7 @@ EBEA383527948C2D00B5736A /* ticket_welcome.json in Resources */, F8FAA9772790346000C4190F /* HomeWaitingCVC.xib in Resources */, 2B57F38427971F7A002A677D /* ProfileSetting.storyboard in Resources */, + F88BA14028F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard in Resources */, EBA93A84279082B0009AE771 /* JoinCheck.storyboard in Resources */, 2B947203278CB00E005484C5 /* Futura Medium.otf in Resources */, F80B02CF27EC1BD800D63B45 /* homeCardFail.json in Resources */, @@ -1769,6 +1776,7 @@ EBE90FDA2796128800157075 /* SendSparkVC.swift in Sources */, EBEA383927953BC700B5736A /* Lottie.swift in Sources */, F82F57FD2792847D003E4174 /* GenericResponse.swift in Sources */, + F88BA13E28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift in Sources */, F8E4DFD627D0918C00128B1F /* MypageProfileTVC.swift in Sources */, F821813527DE659E00DDFBF8 /* SparkTabBarController.swift in Sources */, F8B18E0527EFA19E001A1A7D /* NotificationVC.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift b/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift index 21c858ec..00231405 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/Storyboard.swift @@ -48,6 +48,7 @@ extension Const { static let notification = "Notification" static let singleResponseDialogue = "SingleResponseDialogue" static let lifeTimeLine = "LifeTimeLine" + static let UpgradeFlakeDialogue = "UpgradeFlakeDialogue" } } } diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift b/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift index 4e34bef9..d862f0cf 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/ViewController.swift @@ -48,6 +48,7 @@ extension Const { static let notification = "NotificationVC" static let singleResponseDialogue = "SingleResponseDialogueVC" static let lifeTimeLine = "LifeTimeLineVC" + static let UpgradeFlakeDialogue = "UpgradeFlakeDialogueVC" } } } diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard new file mode 100644 index 00000000..3ae76e57 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift new file mode 100644 index 00000000..33a8aa5f --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -0,0 +1,29 @@ +// +// UpgradeFlakeDialogueVC.swift +// Spark-iOS +// +// Created by kimhyungyu on 2022/10/08. +// + +import UIKit + +class UpgradeFlakeDialogueVC: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} From 30c095a10d64c41f609d9a9a3efd8b75c37eb7ce Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Sat, 8 Oct 2022 14:08:09 +0900 Subject: [PATCH 046/107] =?UTF-8?q?[Fix]=20=EC=98=B5=EC=85=94=EB=84=90=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift index 7416b418..fc480018 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/LifeTimeLine/LifeTimeLineCVC.swift @@ -47,7 +47,7 @@ class LifeTimeLineCVC: UICollectionViewCell { func initCell(title: String, subTitle: String, - profilImg: [String?], + profilImg: [String], day: String) { titleLabel.text = title subTitleLabel.text = subTitle @@ -57,7 +57,7 @@ class LifeTimeLineCVC: UICollectionViewCell { updateProfileLayout() let profileImageList = [firstProfileImageView, secondProfileImageView] for index in 0.. Date: Sat, 8 Oct 2022 21:14:22 +0900 Subject: [PATCH 047/107] =?UTF-8?q?[Add]=20#662=20-=20upgrade=20flake=20?= =?UTF-8?q?=EB=8B=B4=EB=8B=B9=20=EC=85=80=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 ++ .../Cells/HabitRoom/UpgradeFlakeCVC.swift | 56 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index c2a80ed8..7eb15a56 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -193,6 +193,7 @@ F88BA13B28F08D8900F48BD0 /* UpgradeFlake.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */; }; F88BA13E28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BA13D28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift */; }; F88BA14028F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F88BA13F28F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard */; }; + F88BA14228F16FA800F48BD0 /* UpgradeFlakeCVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BA14128F16FA800F48BD0 /* UpgradeFlakeCVC.swift */; }; F8902FB927ED84060034E8F9 /* Withdrawal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F8902FB827ED84060034E8F9 /* Withdrawal.storyboard */; }; F8902FBD27ED844E0034E8F9 /* WithdrawalVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8902FBC27ED844E0034E8F9 /* WithdrawalVC.swift */; }; F8917E5A2836A14500F96347 /* UserDefaultsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8917E592836A14500F96347 /* UserDefaultsManager.swift */; }; @@ -448,6 +449,7 @@ F88BA13A28F08D8900F48BD0 /* UpgradeFlake.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlake.swift; sourceTree = ""; }; F88BA13D28F0957000F48BD0 /* UpgradeFlakeDialogueVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlakeDialogueVC.swift; sourceTree = ""; }; F88BA13F28F0970900F48BD0 /* UpgradeFlakeDialogue.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = UpgradeFlakeDialogue.storyboard; sourceTree = ""; }; + F88BA14128F16FA800F48BD0 /* UpgradeFlakeCVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlakeCVC.swift; sourceTree = ""; }; F8902FB827ED84060034E8F9 /* Withdrawal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Withdrawal.storyboard; sourceTree = ""; }; F8902FBC27ED844E0034E8F9 /* WithdrawalVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawalVC.swift; sourceTree = ""; }; F8917E592836A14500F96347 /* UserDefaultsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsManager.swift; sourceTree = ""; }; @@ -1450,6 +1452,7 @@ F8F6D6FA2797527A00725537 /* HabitRoomMemberCVC.xib */, EB26D93727CF74D700C88DCA /* SendSparkCVC.swift */, 2BD71BF327E0E53500771DCB /* HabitRoomGuideCVC.swift */, + F88BA14128F16FA800F48BD0 /* UpgradeFlakeCVC.swift */, ); path = HabitRoom; sourceTree = ""; @@ -1766,6 +1769,7 @@ F8096F442784221900B71D38 /* Cell.swift in Sources */, F86C68B727955ABA009A5296 /* SparkFlake.swift in Sources */, EB625E8A278F29D300C43DE9 /* CarouselLayout.swift in Sources */, + F88BA14228F16FA800F48BD0 /* UpgradeFlakeCVC.swift in Sources */, F82F57FF27928588003E4174 /* URL.swift in Sources */, EB9C509827931E4600588155 /* AuthUploadVC.swift in Sources */, 2BBED1372795CDFE0052CA5C /* FeedEmptyCVC.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift new file mode 100644 index 00000000..e9a44f4a --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift @@ -0,0 +1,56 @@ +// +// UpgradeFlakeCVC.swift +// Spark-iOS +// +// Created by kimhyungyu on 2022/10/08. +// + +import UIKit + +import SnapKit + +class UpgradeFlakeCVC: UICollectionViewCell { + + // MARK: - Properties + + private let upgradeFlakeImageView = UIImageView() + + // MARK: - View Life Cycle + + override init(frame: CGRect) { + super.init(frame: frame) + + setUI() + setLayout() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func prepareForReuse() { + super.prepareForReuse() + + upgradeFlakeImageView.image = UIImage() + } + + // MARK: - Methods + + public func initCell(_ image: UIImage) { + upgradeFlakeImageView.image = image + } + + private func setUI() { + upgradeFlakeImageView.contentMode = .scaleAspectFit + } + + private func setLayout() { + contentView.addSubview(upgradeFlakeImageView) + + upgradeFlakeImageView.snp.makeConstraints { + $0.leading.trailing.equalToSuperview() + $0.top.equalToSuperview().inset(53) + $0.height.equalTo(upgradeFlakeImageView.snp.width) + } + } +} From f9a73da20a046bcb289790b8dd99d1546f3c4e13 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 21:16:14 +0900 Subject: [PATCH 048/107] =?UTF-8?q?[Add]=20#662=20-=20Cell=20=EC=97=90=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift b/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift index 59c8f822..6753274a 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/Cell.swift @@ -36,6 +36,7 @@ extension Const { static let notificationTVC = "NotificationTVC" static let lifeTimeLineCVC = "LifeTimeLineCVC" static let lifeTimeLineHeaderView = "LifeTimeLineHeaderView" + static let upgradeFlakeCVC = "UpgradeFlakeCVC" } } } From fad2d3044b7043520c500deb0c649cb10c67d679 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 21:16:52 +0900 Subject: [PATCH 049/107] =?UTF-8?q?[Add]=20#662=20-=20=EB=B6=88=EA=BD=83?= =?UTF-8?q?=20=EA=B2=B0=EC=A0=95=20=EB=A1=9C=EB=93=9C=EB=A7=B5=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=A0=84=ED=99=98=20=EB=8D=94=EB=B3=B4=EA=B8=B0=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/HabitRoom/HabitRoomVC.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index ef7f9bc5..ab490b39 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -365,6 +365,19 @@ extension HabitRoomVC { private func presentToMoreAlert() { let alert = SparkActionSheet() + + alert.addAction(SparkAction("불꽃 결정 로드맵") { + self.dismiss(animated: true) { + guard let nextVC = UIStoryboard(name: Const.Storyboard.Name.UpgradeFlakeDialogue, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.UpgradeFlakeDialogue) as? UpgradeFlakeDialogueVC else { return } + + nextVC.modalPresentationStyle = .overFullScreen + nextVC.modalTransitionStyle = .crossDissolve + nextVC.leftDay = self.habitRoomDetail?.leftDay + + self.present(nextVC, animated: true) + } + }) + alert.addAction(SparkAction("나의 목표 관리", titleType: .blackMediumTitle, handler: { self.dismiss(animated: true) { guard let nextVC = UIStoryboard(name: Const.Storyboard.Name.goalWriting, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.goalWriting) as? GoalWritingVC else { return } From 857e79913fd270d52e1d1cdfc35649d20c3d0461 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 21:55:28 +0900 Subject: [PATCH 050/107] =?UTF-8?q?[Feat]=20#662=20-=20=EC=8A=B5=EA=B4=80?= =?UTF-8?q?=EB=B0=A9=EC=97=90=EC=84=9C=20UpgradeFlakeDialogueVC=20?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=ED=99=94=EB=A9=B4=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HabitRoom/HabitRoomVC.swift | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index ab490b39..71e92ca8 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -278,12 +278,30 @@ extension HabitRoomVC { UserDefaultsManager.checkHabitRoomGuide = true guard let guideVC = UIStoryboard(name: Const.Storyboard.Name.habitRoomGuide, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.habitRoomGuide) as? HabitRoomGuideVC else { return } guideVC.dismissClousure = { - + self.presentToUpgradeFlakeDialogueVC() } guideVC.modalPresentationStyle = .overFullScreen guideVC.modalTransitionStyle = .crossDissolve self.present(guideVC, animated: true, completion: nil) + } else { + self.presentToUpgradeFlakeDialogueVC() + } + } + + private func presentToUpgradeFlakeDialogueVC() { + if let leftDay = habitRoomDetail?.leftDay, + let isTermNew = habitRoomDetail?.isTermNew { + if (leftDay == 62 || leftDay == 58 || leftDay == 32 || leftDay == 6 || leftDay == 0) && isTermNew { + guard let upgradeFlakeDialogueVC = UIStoryboard(name: Const.Storyboard.Name.UpgradeFlakeDialogue, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.UpgradeFlakeDialogue) as? UpgradeFlakeDialogueVC else { return } + + upgradeFlakeDialogueVC.leftDay = habitRoomDetail?.leftDay + upgradeFlakeDialogueVC.modalPresentationStyle = .overFullScreen + upgradeFlakeDialogueVC + .modalTransitionStyle = .crossDissolve + + present(upgradeFlakeDialogueVC, animated: true) + } } } From 5eeac2134cc849be1ed45253a7093a07c1f82e87 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 21:55:52 +0900 Subject: [PATCH 051/107] =?UTF-8?q?[Fix]=20#662=20-=20UpgradeFlake=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=AA=A8=EB=8D=B8=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/AppModels/UpgradeFlake/UpgradeFlake.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift b/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift index acc5841b..b8b538cf 100644 --- a/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift +++ b/Spark-iOS/Spark-iOS/Source/AppModels/UpgradeFlake/UpgradeFlake.swift @@ -10,11 +10,11 @@ import UIKit public struct UpgradeFlake { let flakeImage: UIImage let upgradeText: String - let levelTest: String + let levelText: String - init(_ flakeImage: UIImage, _ upgradeText: String, _ levelTest: String) { + init(_ flakeImage: UIImage, _ upgradeText: String, _ levelText: String) { self.flakeImage = flakeImage self.upgradeText = upgradeText - self.levelTest = levelTest + self.levelText = levelText } } From 64eb5f7426b7d00c63922535dbd15e65b311920c Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 21:56:19 +0900 Subject: [PATCH 052/107] =?UTF-8?q?[Fix]=20#662=20-=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=97=90=EC=85=8B=20=EC=9D=B4=EB=A6=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Classes/SparkFlake.swift | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift b/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift index c5b75e79..74a3150f 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/SparkFlake.swift @@ -253,31 +253,31 @@ public class SparkFlake { case .day65: return UpgradeFlake(UIImage(), "", "") case .day62: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake1") ?? UIImage(), + return UpgradeFlake(UIImage(named: "property1DashSparkFlake2") ?? UIImage(), """ 3일을 달성하면 얻을 수 있어요! """, "Level 2") case .day58: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake2") ?? UIImage(), + return UpgradeFlake(UIImage(named: "property1DashSparkFlake3") ?? UIImage(), """ 7일을 달성하면 얻을 수 있어요! """, "Level 3") case .day32: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake3") ?? UIImage(), + return UpgradeFlake(UIImage(named: "property1DashSparkFlake4") ?? UIImage(), """ 33일을 달성하면 얻을 수 있어요! """, "Level 4") case .day6: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake4") ?? UIImage(), + return UpgradeFlake(UIImage(named: "property1DashSparkFlake5") ?? UIImage(), """ 마지막 7일 남았을 때 얻을 수 있어요! """, "Level 5") case .dDay: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake5") ?? UIImage(), + return UpgradeFlake(UIImage(named: "property1DashSparkFlake6") ?? UIImage(), """ 마지막 날에 얻을 수 있어요! """, @@ -293,42 +293,42 @@ public class SparkFlake { private func afterUpgrade() -> UpgradeFlake { switch state { case .day65: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake1") ?? UIImage(), + return UpgradeFlake(UIImage(named: "sparkFlakeSparkflake1") ?? UIImage(), """ 새로운 습관 시작! 첫 번째 불꽃 결정을 얻었어요. """, "Level 1") case .day62: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake2") ?? UIImage(), + return UpgradeFlake(UIImage(named: "sparkFlakeSparkflake2") ?? UIImage(), """ 3일 동안 열심히 달렸네요! 두 번째 불꽃 결정을 얻었어요. """, "Level 2") case .day58: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake3") ?? UIImage(), + return UpgradeFlake(UIImage(named: "sparkFlakeSparkflake3") ?? UIImage(), """ 7일 동안 열심히 달렸네요! 세 번째 불꽃 결정을 얻었어요. """, "Level 3") case .day32: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake4") ?? UIImage(), + return UpgradeFlake(UIImage(named: "sparkFlakeSparkflake4") ?? UIImage(), """ 33일 동안 열심히 달렸네요! 네 번째 불꽃 결정을 얻었어요. """, "Level 4") case .day6: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake5") ?? UIImage(), + return UpgradeFlake(UIImage(named: "sparkFlakeSparkflake5") ?? UIImage(), """ 마지막 7일 남았네요! 다섯 번째 불꽃 결정을 얻었어요. """, "Level 5") case .dDay: - return UpgradeFlake(UIImage(named: "sparkFlakeSparkFlake6") ?? UIImage(), + return UpgradeFlake(UIImage(named: "sparkFlakeSparkflake6") ?? UIImage(), """ 드디어 마지막 날이네요! 여섯 번째 불꽃 결정을 얻었어요. From a94062fd258960cf53148f01bc58e08368c39b86 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 8 Oct 2022 22:44:48 +0900 Subject: [PATCH 053/107] =?UTF-8?q?[Feat]=20#662=20-=20UpgradeFlakeDialogu?= =?UTF-8?q?eVC=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EB=B0=8F=20?= =?UTF-8?q?=EC=85=80=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 177 +++++++++++++++++- 1 file changed, 169 insertions(+), 8 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 33a8aa5f..c49e5275 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -7,23 +7,184 @@ import UIKit +import SnapKit + class UpgradeFlakeDialogueVC: UIViewController { + // MARK: - Properties + + private let sparkFlakes: [SparkFlake] = [ + SparkFlake(leftDay: 65), + SparkFlake(leftDay: 62), + SparkFlake(leftDay: 58), + SparkFlake(leftDay: 32), + SparkFlake(leftDay: 6), + SparkFlake(leftDay: 0) + ] + private var sparkUpgradeFlakes: [UpgradeFlake] = [] + + public var leftDay: Int? + + private let backgroundView = UIView() + private let collectionViewFlowlayout = UICollectionViewFlowLayout() + private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewFlowlayout) + private let levelTitle = UILabel() + private let subtitle = UILabel() + private let checkButton = UIButton() + + // MARK: - View Life Cycle + override func viewDidLoad() { super.viewDidLoad() + + setSparkFlakes() + setUI() + addTargets() + setLayout() + setDelegate() + setCollectionView() + } +} + +// MARK: - Extensions + +extension UpgradeFlakeDialogueVC { + private func setUI() { + view.backgroundColor = .sparkBlack.withAlphaComponent(0.7) + + collectionView.backgroundColor = .clear + + backgroundView.backgroundColor = .sparkWhite + + levelTitle.textColor = .sparkPinkred + levelTitle.font = .enMediumItatlicFont(ofSize: 24) + + subtitle.tintColor = .sparkDeepGray + subtitle.font = .p1TitleLight + subtitle.textAlignment = .center + subtitle.numberOfLines = 2 + + checkButton.setTitle("확인했어요", for: .normal) + checkButton.setTitleColor(.sparkWhite, for: .normal) + checkButton.backgroundColor = .sparkBlack + checkButton.titleLabel?.font = .btn1Default + + levelTitle.text = sparkUpgradeFlakes[0].levelText + subtitle.text = sparkUpgradeFlakes[0].upgradeText + } + + private func addTargets() { + checkButton.addTarget(self, action: #selector(touchCheckButton), for: .touchUpInside) + } + + private func setDelegate() { + collectionView.delegate = self + collectionView.dataSource = self + } + + private func setCollectionView() { + collectionView.showsHorizontalScrollIndicator = false + collectionView.register(UpgradeFlakeCVC.self, forCellWithReuseIdentifier: Const.Cell.Identifier.upgradeFlakeCVC) + + collectionViewFlowlayout.collectionView?.isPagingEnabled = true + collectionViewFlowlayout.scrollDirection = .horizontal + } + + private func setSparkFlakes() { + sparkFlakes.forEach { sparkFlake in + sparkUpgradeFlakes.append(sparkFlake.upgrade(leftDay ?? -1)) + } + } + + // MARK: - @objc Methods + + @objc + private func touchCheckButton() { + dismiss(animated: true) + } +} + +// MARK: - UICollectionViewDelegateFlowLayout - // Do any additional setup after loading the view. +extension UpgradeFlakeDialogueVC: UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let width: CGFloat = (backgroundView.frame.width - 16) / 3 + let height: CGFloat = collectionView.frame.height + + return CGSize(width: width, height: height) } + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 48 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 0 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { + let cellWidth: CGFloat = (backgroundView.frame.width - 16) / 3 + let insets: CGFloat = (collectionView.frame.width - cellWidth) / 2 + + return UIEdgeInsets(top: 0, left: insets, bottom: 0, right: insets) + } +} + +// MARK: - UICollectionViewDelegate - /* - // MARK: - Navigation +extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { + // TODO: - paging 되면서 sutitle, levettitle 변경 +} - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. +// MARK: - UICollectionViewDataSource + +extension UpgradeFlakeDialogueVC: UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return sparkUpgradeFlakes.count } - */ + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: Const.Cell.Identifier.upgradeFlakeCVC, for: indexPath) as? UpgradeFlakeCVC else { return UICollectionViewCell() } + + cell.initCell(sparkUpgradeFlakes[indexPath.item].flakeImage) + + return cell + } +} +// MARK: - Layout + +extension UpgradeFlakeDialogueVC { + private func setLayout() { + view.addSubview(backgroundView) + + backgroundView.snp.makeConstraints { + $0.leading.trailing.equalToSuperview().inset(20) + $0.centerY.equalToSuperview() + $0.height.equalTo(backgroundView.snp.width).multipliedBy(1.2) + } + + backgroundView.addSubviews([levelTitle, subtitle, collectionView, checkButton]) + + collectionView.snp.makeConstraints { + $0.leading.trailing.top.equalToSuperview() + $0.height.equalTo(collectionView.snp.width).multipliedBy(0.9) + } + + subtitle.snp.makeConstraints { + $0.bottom.equalTo(collectionView.snp.bottom).inset(14) + $0.centerX.equalToSuperview() + } + + levelTitle.snp.makeConstraints { + $0.bottom.equalTo(subtitle.snp.top).offset(-12) + $0.centerX.equalToSuperview() + } + + checkButton.snp.makeConstraints { + $0.bottom.equalToSuperview().inset(28) + $0.leading.trailing.equalToSuperview().inset(106) + $0.height.equalTo(checkButton.snp.width).multipliedBy(0.4) + } + } } From 816d3630d60a97cf24bf80777cb2b3bd1516e19a Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 9 Oct 2022 02:02:53 +0900 Subject: [PATCH 054/107] =?UTF-8?q?[Fix]=20#662=20-=20UpgradeFlakeCVC=20?= =?UTF-8?q?=EC=9D=98=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B7=B0=20contentMo?= =?UTF-8?q?de=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift index e9a44f4a..11e40b01 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift @@ -41,7 +41,7 @@ class UpgradeFlakeCVC: UICollectionViewCell { } private func setUI() { - upgradeFlakeImageView.contentMode = .scaleAspectFit + upgradeFlakeImageView.contentMode = .scaleAspectFill } private func setLayout() { From 2599dd41ba0e6910e91563d2aa8b1ef680925ebc Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 9 Oct 2022 02:50:57 +0900 Subject: [PATCH 055/107] =?UTF-8?q?[Chore]=20#654=20-=20slack=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 37928664..acdf1e46 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -79,7 +79,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -98,7 +98,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 88096ce12631d2edee13b5d6a83963a822e4fcfd Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 9 Oct 2022 16:09:00 +0900 Subject: [PATCH 056/107] =?UTF-8?q?[Chore]=20slack=20lane=20url=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EB=B9=8C=EB=93=9C=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 12 ++++++------ Spark-iOS/fastlane/Fastfile | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 0c864625..e5d9d2ae 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -1997,7 +1997,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 43; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2035,7 +2035,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 43; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2134,7 +2134,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 43; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2167,7 +2167,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 43; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2194,7 +2194,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 43; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2221,7 +2221,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 43; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index acdf1e46..d50b0ce6 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -79,7 +79,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -98,7 +98,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 900553079f6d87bcb522e9ac3c4f30ebc9786df6 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 10 Oct 2022 01:52:07 +0900 Subject: [PATCH 057/107] =?UTF-8?q?[Chore]=20slack=20lane=20url,=20profile?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EB=B9=8C=EB=93=9C=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 12 ++++++------ Spark-iOS/fastlane/Fastfile | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index e5d9d2ae..bb4f0ea6 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -1997,7 +1997,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 45; + CURRENT_PROJECT_VERSION = 49; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2035,7 +2035,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 45; + CURRENT_PROJECT_VERSION = 49; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2134,7 +2134,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 45; + CURRENT_PROJECT_VERSION = 49; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2167,7 +2167,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 45; + CURRENT_PROJECT_VERSION = 49; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2194,7 +2194,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 45; + CURRENT_PROJECT_VERSION = 49; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2221,7 +2221,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 45; + CURRENT_PROJECT_VERSION = 49; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index d50b0ce6..8092e218 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -27,8 +27,8 @@ platform :ios do export_method: "app-store", export_options: { provisioningProfiles: { - "com.TeamSparker.Spark" => "com.TeamSparker.Spark AppStore", - "com.TeamSparker.Spark.SparkNotificationService" => "com.TeamSparker.Spark.SparkNotificationService AppStore" + "com.TeamSparker.Spark" => "Spark AppStore", + "com.TeamSparker.Spark.SparkNotificationService" => "SparkNotificationService AppStore" } } ) @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -79,7 +79,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -98,7 +98,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 7ec4b726cf07c6a314886828cdf9b2d29871f773 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 10 Oct 2022 14:21:58 +0900 Subject: [PATCH 058/107] =?UTF-8?q?[Design]=20subtitle=20=EC=9D=98=20?= =?UTF-8?q?=EC=A4=91=EC=95=99=EC=9D=84=20=EA=B8=B0=EC=A4=80=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index c49e5275..5b0f7df1 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -171,13 +171,13 @@ extension UpgradeFlakeDialogueVC { $0.height.equalTo(collectionView.snp.width).multipliedBy(0.9) } - subtitle.snp.makeConstraints { - $0.bottom.equalTo(collectionView.snp.bottom).inset(14) + levelTitle.snp.makeConstraints { + $0.bottom.equalTo(collectionView.snp.bottom).offset(-72) $0.centerX.equalToSuperview() } - levelTitle.snp.makeConstraints { - $0.bottom.equalTo(subtitle.snp.top).offset(-12) + subtitle.snp.makeConstraints { + $0.centerY.equalTo(levelTitle.snp.bottom).offset(32) $0.centerX.equalToSuperview() } From da16bca03204c4b89140618a9ff29ac95d36ea23 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 10 Oct 2022 14:22:38 +0900 Subject: [PATCH 059/107] =?UTF-8?q?[Feat]=20#668=20-=20=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=EB=A1=A4=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=85=8D=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 5b0f7df1..c6a127ca 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -134,6 +134,18 @@ extension UpgradeFlakeDialogueVC: UICollectionViewDelegateFlowLayout { extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { // TODO: - paging 되면서 sutitle, levettitle 변경 + func scrollViewDidScroll(_ scrollView: UIScrollView) { + let halfOfLineSpacing: CGFloat = 24.0 + let halfOfCollectionViewWidth: CGFloat = collectionView.frame.width / 2 + let contentOffsetX: CGFloat = scrollView.contentOffset.x + + let index: Int = Int(round(contentOffsetX / (halfOfCollectionViewWidth - halfOfLineSpacing))) + + if sparkUpgradeFlakes.count > index && index >= 0 { + levelTitle.text = sparkUpgradeFlakes[index].levelText + subtitle.text = sparkUpgradeFlakes[index].upgradeText + } + } } // MARK: - UICollectionViewDataSource From a00b365564955543b3436fd105f83eb4a6f8e558 Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Mon, 10 Oct 2022 15:11:05 +0900 Subject: [PATCH 060/107] [Chore] pod update --- Spark-iOS/Podfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/Podfile.lock b/Spark-iOS/Podfile.lock index 0444ed73..0f148d80 100644 --- a/Spark-iOS/Podfile.lock +++ b/Spark-iOS/Podfile.lock @@ -110,7 +110,7 @@ PODS: - KakaoSDKUser (2.11.3): - KakaoSDKAuth (= 2.11.3) - Kingfisher (7.4.0) - - lottie-ios (3.4.3) + - lottie-ios (3.4.4) - Moya (15.0.0): - Moya/Core (= 15.0.0) - Moya/Core (15.0.0): @@ -199,7 +199,7 @@ SPEC CHECKSUMS: KakaoSDKCommon: b4235203f67a5b6ee2df75eaf9bbc863c6d92e09 KakaoSDKUser: 9a42e9b74855ce876b071c841418aa6726534010 Kingfisher: 596b207973051aae5e4c54a1c1cb39837ea10d36 - lottie-ios: 9ae750cdc7820fecbd3c2f0cfc493038208fcdc4 + lottie-ios: 8f97d3271e155c2d688875c29cd3c74908aef5f8 Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb From dc1f0fe49d8cf4fdf49e191d14b7087e42cd6a5f Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Mon, 10 Oct 2022 15:16:04 +0900 Subject: [PATCH 061/107] =?UTF-8?q?[Fix]=20=EC=83=9D=EB=AA=85=20=ED=83=80?= =?UTF-8?q?=EC=9E=84=EB=9D=BC=EC=9D=B8=20=ED=99=95=EC=9D=B8=20=ED=9B=84=20?= =?UTF-8?q?=EC=8A=B5=EA=B4=80=EB=B0=A9=20=EB=B9=A8=EC=BD=A9=20hidden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/ViewControllers/HabitRoom/HabitRoomVC.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index a8a73be7..8abc0295 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -453,7 +453,9 @@ extension HabitRoomVC { timelineVC.modalPresentationStyle = .overFullScreen timelineVC.modalTransitionStyle = .crossDissolve - self.present(timelineVC, animated: true, completion: nil) + self.present(timelineVC, animated: true) { + self.newTimeLine.isHidden = true + } } } From 3ac868a6200b77a770c2ab9888569ad34a5fc48a Mon Sep 17 00:00:00 2001 From: Subin Yang Date: Mon, 10 Oct 2022 15:27:04 +0900 Subject: [PATCH 062/107] =?UTF-8?q?[Feat]=20#666=20-=20=EC=8A=B5=EA=B4=80?= =?UTF-8?q?=EB=B0=A9=20=ED=83=80=EC=9E=84=EB=9D=BC=EC=9D=B8=20tracking=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS/Resource/Constants/Tracking.swift | 2 ++ .../Source/ViewControllers/HabitRoom/HabitRoomVC.swift | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Resource/Constants/Tracking.swift b/Spark-iOS/Spark-iOS/Resource/Constants/Tracking.swift index fb0ce495..31e4ac73 100644 --- a/Spark-iOS/Spark-iOS/Resource/Constants/Tracking.swift +++ b/Spark-iOS/Spark-iOS/Resource/Constants/Tracking.swift @@ -33,6 +33,8 @@ struct Tracking { static let clickFeed = "click_FEED" static let clickShare = "click_SHARE_INSTAGRAM" static let clickCard = "click_CARD_my_room" + static let clickTimelineWithNew = "click_TIMELINE_NEW_habit_room" + static let clickTimeline = "click_TIMELINE_NONE_habit_room" } struct Notification { diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index 8abc0295..7382688a 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -421,6 +421,14 @@ extension HabitRoomVC { ]) } + private func timelineTracking() { + if newTimeLine.isHidden { + Analytics.logEvent(Tracking.Select.clickTimeline, parameters: nil) + } else { + Analytics.logEvent(Tracking.Select.clickTimelineWithNew, parameters: nil) + } + } + // MARK: - Screen Change private func popToHomeVC() { @@ -454,6 +462,7 @@ extension HabitRoomVC { timelineVC.modalTransitionStyle = .crossDissolve self.present(timelineVC, animated: true) { + self.timelineTracking() self.newTimeLine.isHidden = true } } From f4ced8d9d571354592b11657d8e060c8a518efc6 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 11 Oct 2022 16:03:59 +0900 Subject: [PATCH 063/107] =?UTF-8?q?[Fix]=20#668=20-=20=20collection=20view?= =?UTF-8?q?=20=EC=9C=84=EC=97=90=20UI=20Component=20=EC=98=AC=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index c6a127ca..ae99460a 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -176,7 +176,7 @@ extension UpgradeFlakeDialogueVC { $0.height.equalTo(backgroundView.snp.width).multipliedBy(1.2) } - backgroundView.addSubviews([levelTitle, subtitle, collectionView, checkButton]) + backgroundView.addSubviews([collectionView, levelTitle, subtitle, checkButton]) collectionView.snp.makeConstraints { $0.leading.trailing.top.equalToSuperview() From 3057aa7ed53cbbdc638af2e5d292fcdaaac2f9c0 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 11 Oct 2022 16:04:09 +0900 Subject: [PATCH 064/107] [Chore] Podfile Update --- Spark-iOS/Podfile.lock | 142 +++++++++++++++++++---------------------- 1 file changed, 67 insertions(+), 75 deletions(-) diff --git a/Spark-iOS/Podfile.lock b/Spark-iOS/Podfile.lock index 0f148d80..ffa0e6eb 100644 --- a/Spark-iOS/Podfile.lock +++ b/Spark-iOS/Podfile.lock @@ -1,78 +1,72 @@ PODS: - Alamofire (5.6.2) - - Firebase/Analytics (9.6.0): + - Firebase/Analytics (10.0.0): - Firebase/Core - - Firebase/Core (9.6.0): + - Firebase/Core (10.0.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 9.6.0) - - Firebase/CoreOnly (9.6.0): - - FirebaseCore (= 9.6.0) - - Firebase/Messaging (9.6.0): + - FirebaseAnalytics (~> 10.0.0) + - Firebase/CoreOnly (10.0.0): + - FirebaseCore (= 10.0.0) + - Firebase/Messaging (10.0.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 9.6.0) - - FirebaseAnalytics (9.6.0): - - FirebaseAnalytics/AdIdSupport (= 9.6.0) - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseMessaging (~> 10.0.0) + - FirebaseAnalytics (10.0.0): + - FirebaseAnalytics/AdIdSupport (= 10.0.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/MethodSwizzler (~> 7.8) + - GoogleUtilities/Network (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (9.6.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleAppMeasurement (= 9.6.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseAnalytics/AdIdSupport (10.0.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleAppMeasurement (= 10.0.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/MethodSwizzler (~> 7.8) + - GoogleUtilities/Network (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (9.6.0): - - FirebaseCoreDiagnostics (~> 9.0) - - FirebaseCoreInternal (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Logger (~> 7.7) - - FirebaseCoreDiagnostics (9.6.0): - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Logger (~> 7.7) - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCoreInternal (9.6.0): - - "GoogleUtilities/NSData+zlib (~> 7.7)" - - FirebaseInstallations (9.6.0): - - FirebaseCore (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/UserDefaults (~> 7.7) + - FirebaseCore (10.0.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreInternal (10.0.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseInstallations (10.0.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (9.6.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Reachability (~> 7.7) - - GoogleUtilities/UserDefaults (~> 7.7) + - FirebaseMessaging (10.0.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement (9.6.0): - - GoogleAppMeasurement/AdIdSupport (= 9.6.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement (10.0.0): + - GoogleAppMeasurement/AdIdSupport (= 10.0.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/MethodSwizzler (~> 7.8) + - GoogleUtilities/Network (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (9.6.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 9.6.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement/AdIdSupport (10.0.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.0.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/MethodSwizzler (~> 7.8) + - GoogleUtilities/Network (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (9.6.0): - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement/WithoutAdIdSupport (10.0.0): + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/MethodSwizzler (~> 7.8) + - GoogleUtilities/Network (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" - nanopb (< 2.30910.0, >= 2.30908.0) - GoogleDataTransport (9.2.0): - GoogleUtilities/Environment (~> 7.7) @@ -110,7 +104,7 @@ PODS: - KakaoSDKUser (2.11.3): - KakaoSDKAuth (= 2.11.3) - Kingfisher (7.4.0) - - lottie-ios (3.4.4) + - lottie-ios (3.5.0) - Moya (15.0.0): - Moya/Core (= 15.0.0) - Moya/Core (15.0.0): @@ -151,7 +145,6 @@ SPEC REPOS: - Firebase - FirebaseAnalytics - FirebaseCore - - FirebaseCoreDiagnostics - FirebaseCoreInternal - FirebaseInstallations - FirebaseMessaging @@ -184,14 +177,13 @@ CHECKOUT OPTIONS: SPEC CHECKSUMS: Alamofire: d368e1ff8a298e6dde360e35a3e68e6c610e7204 - Firebase: 5ae8b7cf8efce559a653aef0ad95bab3f427c351 - FirebaseAnalytics: 89ad762c6c3852a685794174757e2c60a36b6a82 - FirebaseCore: 2082fffcd855f95f883c0a1641133eb9bbe76d40 - FirebaseCoreDiagnostics: 99a495094b10a57eeb3ae8efa1665700ad0bdaa6 - FirebaseCoreInternal: bca76517fe1ed381e989f5e7d8abb0da8d85bed3 - FirebaseInstallations: 0a115432c4e223c5ab20b0dbbe4cbefa793a0e8e - FirebaseMessaging: a4d7910e4af663c9cbfc1071c5bef34651690949 - GoogleAppMeasurement: 6de2b1a69e4326eb82ee05d138f6a5cb7311bcb1 + Firebase: 1b810f3d0c0532e27a48f1961f8c0400a668a2cf + FirebaseAnalytics: 9921a52739f4ab66099da31b6e0243db78a3ac0a + FirebaseCore: 97f48a3a567a72b8d4daa0f03c3aadb78df4e995 + FirebaseCoreInternal: 5eb3960335da5ea30115d57d39db6988c4ad06f3 + FirebaseInstallations: 7f1c9ae6bd9df6abe9c74124b38fa8740aba5df4 + FirebaseMessaging: 8916bf5edb1dbfac74665a181e4d1ab3a78a08a2 + GoogleAppMeasurement: 7e48a3249792ac35d6f18f107f63f199a7e9d0ce GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f GoogleUtilities: 1d20a6ad97ef46f67bbdec158ce00563a671ebb7 JJFloatingActionButton: fdc3aefb0f28f04d0f988fa25d5fac97028a9ea7 @@ -199,7 +191,7 @@ SPEC CHECKSUMS: KakaoSDKCommon: b4235203f67a5b6ee2df75eaf9bbc863c6d92e09 KakaoSDKUser: 9a42e9b74855ce876b071c841418aa6726534010 Kingfisher: 596b207973051aae5e4c54a1c1cb39837ea10d36 - lottie-ios: 8f97d3271e155c2d688875c29cd3c74908aef5f8 + lottie-ios: c55158d67d0629a260625cc2ded2052b829e3c3e Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb From 25d17f59f7ddf94a16b5d1afe8918fd78729d79d Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 11 Oct 2022 16:08:29 +0900 Subject: [PATCH 065/107] =?UTF-8?q?[Feat]=20#668=20-=20impact=20feedback?= =?UTF-8?q?=20generator=20=ED=9A=A8=EA=B3=BC=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 다음 level 로의 거리가 짧아 페이징의 느낌을 살리기 위해 다이얼 같은 피드백 효과를 부여 --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index ae99460a..869ab130 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -22,6 +22,7 @@ class UpgradeFlakeDialogueVC: UIViewController { SparkFlake(leftDay: 0) ] private var sparkUpgradeFlakes: [UpgradeFlake] = [] + private var impactFeedbackGenerator: UIImpactFeedbackGenerator? public var leftDay: Int? @@ -43,6 +44,7 @@ class UpgradeFlakeDialogueVC: UIViewController { setLayout() setDelegate() setCollectionView() + setImpactFeedbackGenerator() } } @@ -96,6 +98,11 @@ extension UpgradeFlakeDialogueVC { } } + private func setImpactFeedbackGenerator() { + impactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light) + impactFeedbackGenerator?.prepare() + } + // MARK: - @objc Methods @objc @@ -142,6 +149,9 @@ extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { let index: Int = Int(round(contentOffsetX / (halfOfCollectionViewWidth - halfOfLineSpacing))) if sparkUpgradeFlakes.count > index && index >= 0 { + if levelTitle.text != sparkUpgradeFlakes[index].levelText { + impactFeedbackGenerator?.impactOccurred() + } levelTitle.text = sparkUpgradeFlakes[index].levelText subtitle.text = sparkUpgradeFlakes[index].upgradeText } From bf3d739af5670998ce7f0e47be380e4b112704ce Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 11:58:46 +0900 Subject: [PATCH 066/107] =?UTF-8?q?[Fix]=20#668=20-=20upgradeFlakeImageVie?= =?UTF-8?q?w=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EA=B8=B0=EC=A4=80?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift index 11e40b01..80d86ab5 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift @@ -49,7 +49,7 @@ class UpgradeFlakeCVC: UICollectionViewCell { upgradeFlakeImageView.snp.makeConstraints { $0.leading.trailing.equalToSuperview() - $0.top.equalToSuperview().inset(53) + $0.bottom.equalTo(contentView.snp.centerY).offset(20) $0.height.equalTo(upgradeFlakeImageView.snp.width) } } From b5eab73eed8e72d80f439c5c78604b36b0205112 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 12:01:42 +0900 Subject: [PATCH 067/107] =?UTF-8?q?[Add]=20#668=20-=20UpgradeFlakeCarousel?= =?UTF-8?q?Layout=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - flow layout 관련은 모두 클래스로 분리 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 4 +++ .../Dialogue/UpgradeFlakeDialogueVC.swift | 32 ++----------------- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 3c7f8373..b41bbccd 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -183,6 +183,7 @@ F82F580E27930FD4003E4174 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = F82F580D27930FD4003E4174 /* GoogleService-Info.plist */; }; F82F58112793B3FF003E4174 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = F82F58102793B3FF003E4174 /* .swiftlint.yml */; }; F8404E8B27AB835F004AEDC3 /* SendSparkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8404E8A27AB835F004AEDC3 /* SendSparkButton.swift */; }; + F84492B328F573B500A298B9 /* UpgradeFlakeCarouselLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = F84492B228F573B500A298B9 /* UpgradeFlakeCarouselLayout.swift */; }; F849521427FFDB8B00D91B6B /* NewNotice.swift in Sources */ = {isa = PBXBuildFile; fileRef = F849521327FFDB8B00D91B6B /* NewNotice.swift */; }; F85036CC27E2567C00F02751 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85036CB27E2567C00F02751 /* NotificationService.swift */; }; F85036D027E2567C00F02751 /* SparkNotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = F85036C927E2567C00F02751 /* SparkNotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -439,6 +440,7 @@ F82F58102793B3FF003E4174 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; F8368FAA278F5DFF00110B74 /* Spark-iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Spark-iOS.entitlements"; sourceTree = ""; }; F8404E8A27AB835F004AEDC3 /* SendSparkButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendSparkButton.swift; sourceTree = ""; }; + F84492B228F573B500A298B9 /* UpgradeFlakeCarouselLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradeFlakeCarouselLayout.swift; sourceTree = ""; }; F849521327FFDB8B00D91B6B /* NewNotice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewNotice.swift; sourceTree = ""; }; F85036C927E2567C00F02751 /* SparkNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SparkNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; }; F85036CB27E2567C00F02751 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; @@ -840,6 +842,7 @@ 2B0CF77327BFEDAC003C2E21 /* BottomButton.swift */, F821812B27DE21FE00DDFBF8 /* SparkNavigationBar */, F821812C27DE223100DDFBF8 /* SparkTabBar */, + F84492B228F573B500A298B9 /* UpgradeFlakeCarouselLayout.swift */, ); path = Classes; sourceTree = ""; @@ -1771,6 +1774,7 @@ F8F6D6FE2797D8BD00725537 /* HabitRoomDetail.swift in Sources */, EBD0D09427DBBC270007E5AF /* SendSparkCellDelegate.swift in Sources */, F8096F442784221900B71D38 /* Cell.swift in Sources */, + F84492B328F573B500A298B9 /* UpgradeFlakeCarouselLayout.swift in Sources */, F86C68B727955ABA009A5296 /* SparkFlake.swift in Sources */, EB625E8A278F29D300C43DE9 /* CarouselLayout.swift in Sources */, F88BA14228F16FA800F48BD0 /* UpgradeFlakeCVC.swift in Sources */, diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 869ab130..babe1f2e 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -85,11 +85,11 @@ extension UpgradeFlakeDialogueVC { } private func setCollectionView() { - collectionView.showsHorizontalScrollIndicator = false collectionView.register(UpgradeFlakeCVC.self, forCellWithReuseIdentifier: Const.Cell.Identifier.upgradeFlakeCVC) - collectionViewFlowlayout.collectionView?.isPagingEnabled = true - collectionViewFlowlayout.scrollDirection = .horizontal + collectionView.showsHorizontalScrollIndicator = false + collectionView.backgroundColor = .clear + collectionView.collectionViewLayout = UpgradeFlakeCarouselLayout() } private func setSparkFlakes() { @@ -111,32 +111,6 @@ extension UpgradeFlakeDialogueVC { } } -// MARK: - UICollectionViewDelegateFlowLayout - -extension UpgradeFlakeDialogueVC: UICollectionViewDelegateFlowLayout { - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - let width: CGFloat = (backgroundView.frame.width - 16) / 3 - let height: CGFloat = collectionView.frame.height - - return CGSize(width: width, height: height) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { - return 48 - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { - return 0 - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - let cellWidth: CGFloat = (backgroundView.frame.width - 16) / 3 - let insets: CGFloat = (collectionView.frame.width - cellWidth) / 2 - - return UIEdgeInsets(top: 0, left: insets, bottom: 0, right: insets) - } -} - // MARK: - UICollectionViewDelegate extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { From ffa6f05fddac20df9ebabdd3b5440a5d93e3a7fb Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 19:32:26 +0900 Subject: [PATCH 068/107] =?UTF-8?q?[Fix]=20#668=20-=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=95=EB=A7=88=EB=8B=A4=20=ED=96=85=ED=8B=B1=20=ED=9A=A8?= =?UTF-8?q?=EA=B3=BC=20=EB=B6=80=EC=97=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 간격을 수정 - 중앙 flake 의 크기를 120 고정. 양쪽 flake 크기를 80으로 고정. --- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index babe1f2e..481fd27c 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -114,13 +114,11 @@ extension UpgradeFlakeDialogueVC { // MARK: - UICollectionViewDelegate extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { - // TODO: - paging 되면서 sutitle, levettitle 변경 func scrollViewDidScroll(_ scrollView: UIScrollView) { - let halfOfLineSpacing: CGFloat = 24.0 + let invisuableFlakeSpace: CGFloat = 30.0 let halfOfCollectionViewWidth: CGFloat = collectionView.frame.width / 2 let contentOffsetX: CGFloat = scrollView.contentOffset.x - - let index: Int = Int(round(contentOffsetX / (halfOfCollectionViewWidth - halfOfLineSpacing))) + let index: Int = Int(round(contentOffsetX / (halfOfCollectionViewWidth - invisuableFlakeSpace))) if sparkUpgradeFlakes.count > index && index >= 0 { if levelTitle.text != sparkUpgradeFlakes[index].levelText { From e65a52ea3811287a8db543a0976a3fd5698d422f Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 19:32:58 +0900 Subject: [PATCH 069/107] =?UTF-8?q?[Add]=20#668=20-=20=EA=B7=B8=EB=9D=BC?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=EC=85=98=20=EB=B7=B0=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 481fd27c..2cb4f52f 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -32,6 +32,10 @@ class UpgradeFlakeDialogueVC: UIViewController { private let levelTitle = UILabel() private let subtitle = UILabel() private let checkButton = UIButton() + private let leftGradientView = UIView() + private let rightGradientView = UIView() + private let leftGradientLayer = CAGradientLayer() + private let rightGradientLayer = CAGradientLayer() // MARK: - View Life Cycle @@ -158,7 +162,7 @@ extension UpgradeFlakeDialogueVC { $0.height.equalTo(backgroundView.snp.width).multipliedBy(1.2) } - backgroundView.addSubviews([collectionView, levelTitle, subtitle, checkButton]) + backgroundView.addSubviews([collectionView, levelTitle, subtitle, checkButton, leftGradientView, rightGradientView]) collectionView.snp.makeConstraints { $0.leading.trailing.top.equalToSuperview() @@ -180,5 +184,19 @@ extension UpgradeFlakeDialogueVC { $0.leading.trailing.equalToSuperview().inset(106) $0.height.equalTo(checkButton.snp.width).multipliedBy(0.4) } + + leftGradientView.snp.makeConstraints { + $0.leading.equalTo(collectionView.snp.leading) + $0.width.equalTo(100) + $0.height.equalTo(120) + $0.bottom.equalTo(collectionView.snp.centerY).offset(20) + } + + rightGradientView.snp.makeConstraints { + $0.trailing.equalTo(collectionView.snp.trailing) + $0.width.equalTo(100) + $0.height.equalTo(120) + $0.bottom.equalTo(collectionView.snp.centerY).offset(20) + } } } From a138fc4283bdea63917e09c31f90a0c5d87f1671 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 22:11:19 +0900 Subject: [PATCH 070/107] =?UTF-8?q?[Feat]=20#668=20-=20carousel=20?= =?UTF-8?q?=ED=9A=A8=EA=B3=BC=EC=99=80=20=ED=8E=98=EC=9D=B4=EC=A7=95=20?= =?UTF-8?q?=ED=9A=A8=EA=B3=BC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Classes/UpgradeFlakeCarouselLayout.swift | 118 ++++++++++++++++++ .../Dialogue/UpgradeFlakeDialogueVC.swift | 6 +- 2 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift diff --git a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift new file mode 100644 index 00000000..e8254dd3 --- /dev/null +++ b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift @@ -0,0 +1,118 @@ +// +// UpgradeFlakeCarouselLayout.swift +// Spark-iOS +// +// Created by kimhyungyu on 2022/10/11. +// + +import UIKit + +class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { + + public var sideItemScale: CGFloat = 80 / 120 + public var spacing: CGFloat = 30 + public var leftDay: Int? + + private var isSetup: Bool = false + + override public func prepare() { + super.prepare() + if isSetup == false { + setupLayout() + isSetup = true + } + } + + private func setupLayout() { + guard let collectionView = self.collectionView else {return} + let collectionViewSize = collectionView.bounds.size + + self.itemSize = CGSize(width: 120, height: collectionViewSize.height) + + let insets: CGFloat = (collectionViewSize.width - 120) / 2 + self.sectionInset = UIEdgeInsets(top: 0, left: insets, bottom: 0, right: insets) + + self.minimumLineSpacing = spacing + self.scrollDirection = .horizontal + self.collectionView?.isPagingEnabled = false + + let index: CGFloat + guard let leftDay else { return } + + if 65 >= leftDay && leftDay > 62 { + index = 0 + } else if 62 >= leftDay && leftDay > 58 { + index = 1 + } else if 58 >= leftDay && leftDay > 32 { + index = 2 + } else if 32 >= leftDay && leftDay > 6 { + index = 3 + } else if 6 >= leftDay && leftDay > 0 { + index = 4 + } else { + index = 5 + } + + let halfOfCollectionViewWidth: CGFloat = collectionView.frame.width / 2 + let invisuableFlakeSpace: CGFloat = 30.0 + + let contentOffset: CGPoint = CGPoint(x: index * (halfOfCollectionViewWidth - invisuableFlakeSpace), y: collectionView.frame.minY) + + DispatchQueue.main.async { + self.collectionView?.setContentOffset(contentOffset, animated: false) + } + } + + public override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool { + return true + } + + public override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + guard let superAttributes = super.layoutAttributesForElements(in: rect), + let attributes = NSArray(array: superAttributes, copyItems: true) as? [UICollectionViewLayoutAttributes] else { return nil } + + return attributes.map { self.transformLayoutAttributes(attributes: $0) } + } + + private func transformLayoutAttributes(attributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes { + guard let collectionView = self.collectionView else { return attributes } + let collectionCenter = collectionView.frame.size.width / 2 + let contentOffset = collectionView.contentOffset.x + let center = attributes.center.x - contentOffset + + let maxDistance = self.itemSize.width + self.minimumLineSpacing + let distance = min(abs(collectionCenter - center), maxDistance) + let ratio = (maxDistance - distance) / maxDistance + let scale = ratio * (1 - sideItemScale) + sideItemScale + + let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size) + let dist = attributes.frame.midX - visibleRect.midX + var transform = CATransform3DScale(CATransform3DIdentity, scale, scale, 1) + attributes.transform3D = transform + + return attributes + } + + // MARK: paging + + override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint { + guard let collectionView = self.collectionView else { + let latestOffset = super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity) + return latestOffset + } + + let targetRect = CGRect(x: proposedContentOffset.x, y: 0, width: collectionView.frame.width, height: collectionView.frame.height) + let horizontalCenter = proposedContentOffset.x + collectionView.frame.width / 2 + guard let rectAttributes = super.layoutAttributesForElements(in: targetRect) else { return .zero } + var offsetAdjustment = CGFloat.greatestFiniteMagnitude + + for layoutAttributes in rectAttributes { + let itemHorizontalCenter = layoutAttributes.center.x + if (itemHorizontalCenter - horizontalCenter).magnitude < offsetAdjustment.magnitude { + offsetAdjustment = itemHorizontalCenter - horizontalCenter + } + } + + return CGPoint(x: proposedContentOffset.x + offsetAdjustment, y: proposedContentOffset.y) + } +} diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 2cb4f52f..49d547eb 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -93,7 +93,11 @@ extension UpgradeFlakeDialogueVC { collectionView.showsHorizontalScrollIndicator = false collectionView.backgroundColor = .clear - collectionView.collectionViewLayout = UpgradeFlakeCarouselLayout() + + let collectionViewLayout = UpgradeFlakeCarouselLayout() + collectionViewLayout.leftDay = self.leftDay + + collectionView.collectionViewLayout = collectionViewLayout } private func setSparkFlakes() { From c5d9fb06b159f1a5cad8a888572a8eb4069e2aeb Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 23:27:13 +0900 Subject: [PATCH 071/107] =?UTF-8?q?[Fix]=20#668=20-=20=ED=96=85=ED=8B=B1?= =?UTF-8?q?=20=EA=B8=B0=EC=A4=80=EA=B3=BC=20=ED=95=B4=EB=8B=B9=20spark=20f?= =?UTF-8?q?laek=20=EC=97=90=20=EB=8C=80=ED=95=9C=20=EB=A0=88=EB=B2=A8?= =?UTF-8?q?=EC=9C=84=EC=B9=98=EB=A1=9C=20=EC=8A=A4=ED=81=AC=EB=A1=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 간격을 수정 - 다음 중앙까지의 간격 150 에 대한 햅틱 효과와 텍스트 변화 - 해당 spark flake 로 스크롤을 이동시킴 --- .../Source/Classes/UpgradeFlakeCarouselLayout.swift | 5 +---- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift index e8254dd3..2e36bc6f 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift @@ -52,11 +52,8 @@ class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { } else { index = 5 } - - let halfOfCollectionViewWidth: CGFloat = collectionView.frame.width / 2 - let invisuableFlakeSpace: CGFloat = 30.0 - let contentOffset: CGPoint = CGPoint(x: index * (halfOfCollectionViewWidth - invisuableFlakeSpace), y: collectionView.frame.minY) + let contentOffset: CGPoint = CGPoint(x: index * 150, y: collectionView.frame.minY) DispatchQueue.main.async { self.collectionView?.setContentOffset(contentOffset, animated: false) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 49d547eb..174cdcb6 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -123,10 +123,8 @@ extension UpgradeFlakeDialogueVC { extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { func scrollViewDidScroll(_ scrollView: UIScrollView) { - let invisuableFlakeSpace: CGFloat = 30.0 - let halfOfCollectionViewWidth: CGFloat = collectionView.frame.width / 2 let contentOffsetX: CGFloat = scrollView.contentOffset.x - let index: Int = Int(round(contentOffsetX / (halfOfCollectionViewWidth - invisuableFlakeSpace))) + let index: Int = Int(round(contentOffsetX / 150)) if sparkUpgradeFlakes.count > index && index >= 0 { if levelTitle.text != sparkUpgradeFlakes[index].levelText { From dcdb3a352bd1ba250752f2751fed180a5a12a379 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 12 Oct 2022 23:28:20 +0900 Subject: [PATCH 072/107] =?UTF-8?q?[Design]=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 화면이 커짐에 따라 글씨 크기는 고정인데 터치영역이 넓어지는 것이 부자연스러워서 고정시켰습니다. - 그라데이션 뷰의 크기를 적당히 조절하였습니다. --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 174cdcb6..0baa0244 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -183,20 +183,21 @@ extension UpgradeFlakeDialogueVC { checkButton.snp.makeConstraints { $0.bottom.equalToSuperview().inset(28) - $0.leading.trailing.equalToSuperview().inset(106) - $0.height.equalTo(checkButton.snp.width).multipliedBy(0.4) + $0.width.equalTo(123) + $0.height.equalTo(48) + $0.centerX.equalToSuperview() } leftGradientView.snp.makeConstraints { $0.leading.equalTo(collectionView.snp.leading) - $0.width.equalTo(100) + $0.width.equalTo(80) $0.height.equalTo(120) $0.bottom.equalTo(collectionView.snp.centerY).offset(20) } rightGradientView.snp.makeConstraints { $0.trailing.equalTo(collectionView.snp.trailing) - $0.width.equalTo(100) + $0.width.equalTo(80) $0.height.equalTo(120) $0.bottom.equalTo(collectionView.snp.centerY).offset(20) } From 9b42f29f32a82d192298e1fbda120e71d8639f62 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 03:23:59 +0900 Subject: [PATCH 073/107] =?UTF-8?q?[Design]=20#668=20-=20background=20?= =?UTF-8?q?=ED=88=AC=EB=AA=85=EB=8F=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 0baa0244..b8c0f440 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -56,7 +56,7 @@ class UpgradeFlakeDialogueVC: UIViewController { extension UpgradeFlakeDialogueVC { private func setUI() { - view.backgroundColor = .sparkBlack.withAlphaComponent(0.7) + view.backgroundColor = .sparkBlack.withAlphaComponent(0.8) collectionView.backgroundColor = .clear From 532214f0e3e8d06c638ac07b01d1df8c7c39049c Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 03:31:25 +0900 Subject: [PATCH 074/107] =?UTF-8?q?[Design]=20#668=20-=20collection=20view?= =?UTF-8?q?=20=EC=82=AC=EC=9D=B4=EC=A6=88=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?line=20spacing=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift | 4 ++-- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift index 2e36bc6f..d356e865 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift @@ -32,7 +32,7 @@ class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { let insets: CGFloat = (collectionViewSize.width - 120) / 2 self.sectionInset = UIEdgeInsets(top: 0, left: insets, bottom: 0, right: insets) - self.minimumLineSpacing = spacing + self.minimumLineSpacing = collectionViewSize.width / 10 self.scrollDirection = .horizontal self.collectionView?.isPagingEnabled = false @@ -53,7 +53,7 @@ class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { index = 5 } - let contentOffset: CGPoint = CGPoint(x: index * 150, y: collectionView.frame.minY) + let contentOffset: CGPoint = CGPoint(x: index * (120 + collectionViewSize.width / 10), y: collectionView.frame.minY) DispatchQueue.main.async { self.collectionView?.setContentOffset(contentOffset, animated: false) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index b8c0f440..c77581eb 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -124,7 +124,7 @@ extension UpgradeFlakeDialogueVC { extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { func scrollViewDidScroll(_ scrollView: UIScrollView) { let contentOffsetX: CGFloat = scrollView.contentOffset.x - let index: Int = Int(round(contentOffsetX / 150)) + let index: Int = Int(round(contentOffsetX / (120 + scrollView.frame.width / 10))) if sparkUpgradeFlakes.count > index && index >= 0 { if levelTitle.text != sparkUpgradeFlakes[index].levelText { From 6fb70549ec93f3a7bb5e933b511f1cb181aa7721 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 03:31:48 +0900 Subject: [PATCH 075/107] =?UTF-8?q?[Delete]=20#668=20-=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=95=88=ED=95=98=EB=8A=94=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Classes/UpgradeFlakeCarouselLayout.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift index d356e865..71d26f30 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift @@ -81,10 +81,7 @@ class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { let distance = min(abs(collectionCenter - center), maxDistance) let ratio = (maxDistance - distance) / maxDistance let scale = ratio * (1 - sideItemScale) + sideItemScale - - let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size) - let dist = attributes.frame.midX - visibleRect.midX - var transform = CATransform3DScale(CATransform3DIdentity, scale, scale, 1) + let transform = CATransform3DScale(CATransform3DIdentity, scale, scale, 1) attributes.transform3D = transform return attributes From 204f2f22b3d9a8fa54d36826123c7aed72147938 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 03:32:53 +0900 Subject: [PATCH 076/107] =?UTF-8?q?[Refactor]=20#668=20-=20setGradient=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=20=EA=B8=B0=EB=B3=B8=ED=8C=8C?= =?UTF-8?q?=EB=9D=BC=EB=AF=B8=ED=84=B0=20=EC=B6=94=EA=B0=80=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS/Source/Extensions/UIView+.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Extensions/UIView+.swift b/Spark-iOS/Spark-iOS/Source/Extensions/UIView+.swift index 90354227..36d2ee25 100644 --- a/Spark-iOS/Spark-iOS/Source/Extensions/UIView+.swift +++ b/Spark-iOS/Spark-iOS/Source/Extensions/UIView+.swift @@ -14,12 +14,12 @@ extension UIView { } extension UIView { - func setGradient(color1: UIColor, color2: UIColor) { + func setGradient(color1: UIColor, color2: UIColor, startPoint: CGPoint = CGPoint(x: 1.0, y: 0.8), endPoint: CGPoint = CGPoint(x: 1.0, y: 0.0)) { let gradient: CAGradientLayer = CAGradientLayer() gradient.colors = [color1.cgColor, color2.cgColor] gradient.locations = [0.0, 1.0] - gradient.startPoint = CGPoint(x: 1.0, y: 0.8) - gradient.endPoint = CGPoint(x: 1.0, y: 0.0) + gradient.startPoint = startPoint + gradient.endPoint = endPoint gradient.frame = bounds layer.addSublayer(gradient) } From 8c2f954fe3179657eba8c122853b0f5d80df631e Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Thu, 13 Oct 2022 04:25:56 +0900 Subject: [PATCH 077/107] =?UTF-8?q?[Fix]=20#655=20-=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=20=ED=95=B8=EB=93=A4=EB=A7=81=20=EB=B0=A9=EC=8B=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift index b4e27df9..ececdef6 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift @@ -63,7 +63,8 @@ final class MoyaLoggerPlugin: PluginType { } func onFail(_ error: MoyaError) { - guard error.errorCode != 6 else { return } + guard let isExplicitlyCanclled = error.asAFError?.isExplicitlyCancelledError, + !isExplicitlyCanclled else { return } var log = "------------------- 네트워크 오류" log.append("(에러코드: \(error.errorCode)) -------------------\n") log.append("3️⃣ \(error.failureReason ?? error.errorDescription ?? "unknown error")\n") From 1c758ddb24ca2e9fac4fbf2896821e8aa55de357 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Thu, 13 Oct 2022 04:26:47 +0900 Subject: [PATCH 078/107] =?UTF-8?q?[Refactor]=20#655=20-=20RequestContaine?= =?UTF-8?q?r=20=EB=94=95=EC=85=94=EB=84=88=EB=A6=AC=20=ED=98=95=ED=83=9C?= =?UTF-8?q?=EB=A1=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Plugin/RequestContainer.swift | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift index 8fe6b702..fc80e6ff 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift @@ -9,22 +9,36 @@ import Foundation import Moya +typealias APIType = RequestContainer.CancellableAPIType + class RequestContainer { + static let shared = RequestContainer() - private var requestArray: [Cancellable] = [] + enum CancellableAPIType: CaseIterable { + case notice + case home + case storage + case feed + } - private init() { } + private var requestDictionary: [CancellableAPIType: [Cancellable]] = [:] + + private init() { + CancellableAPIType.allCases.forEach { + requestDictionary[$0] = [] as [Cancellable] + } + } - public func doCleanRequest(request: Cancellable) { - requestArray.forEach { $0.cancel() } - requestArray.removeAll() - requestArray.append(request) + public func doCleanRequest(request: Cancellable, key: APIType) { + requestDictionary[key]?.forEach { $0.cancel() } + requestDictionary[key]?.removeAll() + requestDictionary[key]?.append(request) } } extension Cancellable { - func doCleanRequest() { - RequestContainer.shared.doCleanRequest(request: self) + func doCleanRequest(from apiType: APIType) { + RequestContainer.shared.doCleanRequest(request: self, key: apiType) } } From d1947081f5b1a86084dbf922cc0b71318c2029ca Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Thu, 13 Oct 2022 04:27:02 +0900 Subject: [PATCH 079/107] =?UTF-8?q?[Feat]=20#655=20-=20=EA=B0=81=20API?= =?UTF-8?q?=EC=97=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/NetworkServices/Feed/FeedAPI.swift | 2 +- .../Source/NetworkServices/Home/HomeAPI.swift | 2 +- .../NetworkServices/MyRoom/MyRoomAPI.swift | 4 ++-- .../NetworkServices/Notice/NoticeAPI.swift | 8 ++++---- .../ViewControllers/TabBar/StorageVC.swift | 18 +++++++++--------- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Feed/FeedAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Feed/FeedAPI.swift index a7614f80..79420e6f 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Feed/FeedAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Feed/FeedAPI.swift @@ -29,7 +29,7 @@ public class FeedAPI { case .failure(let err): print(err) } - } + }.doCleanRequest(from: .feed) } private func judgeFeedFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Home/HomeAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Home/HomeAPI.swift index bb02f43b..f080a759 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Home/HomeAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Home/HomeAPI.swift @@ -28,7 +28,7 @@ public class HomeAPI { case .failure(let err): print(err) } - } + }.doCleanRequest(from: .home) } private func judgeHabitRoomFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift index b7ac84ab..c5ee6fe8 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift @@ -16,7 +16,7 @@ public class MyRoomAPI { self.userProvider = MoyaProvider(plugins: [MoyaLoggerPlugin(viewController: viewController)]) } - func myRoomFetch(roomType: String, lastID: Int, size: Int, completion: @escaping (NetworkResult) -> Void) { + func myRoomFetch(roomType: String, lastID: Int, size: Int, needClean: Bool = false, completion: @escaping (NetworkResult) -> Void) { userProvider.request(.myRoomFetch(roomType: roomType, lastID: lastID, size: size)) { (result) in switch result { case .success(let response): @@ -29,7 +29,7 @@ public class MyRoomAPI { case .failure(let err): print(err) } - } + }.doCleanRequest(from: .storage) } private func judgeMyRoomFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift index 84c105e0..fc1e24f3 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Notice/NoticeAPI.swift @@ -29,7 +29,7 @@ public class NoticeAPI { case . failure(let err): print(err) } - }.doCleanRequest() + }.doCleanRequest(from: .notice) } private func judgeActiveFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { @@ -65,7 +65,7 @@ public class NoticeAPI { case . failure(let err): print(err) } - }.doCleanRequest() + }.doCleanRequest(from: .notice) } private func judgeServiceFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { @@ -99,7 +99,7 @@ public class NoticeAPI { case .failure(let err): print(err) } - }.doCleanRequest() + }.doCleanRequest(from: .notice) } func serviceRead(completion: @escaping(NetworkResult) -> Void) { @@ -113,7 +113,7 @@ public class NoticeAPI { case .failure(let err): print(err) } - }.doCleanRequest() + }.doCleanRequest(from: .notice) } private func judgeStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift index 947624f2..8a1fd1d5 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift @@ -104,14 +104,14 @@ class StorageVC: UIViewController { group.enter() getOnGoingRoomWithAPI(lastID: self.onGoingRoomLastID, size: self.myRoomCountSize) { group.leave() - } - group.enter() - getFailRoomWithAPI(lastID: self.failRoomLastID, size: self.myRoomCountSize) { - group.leave() - } - group.enter() - getCompleteRoomWithAPI(lastID: self.completeRoomLastID, size: self.myRoomCountSize) { - group.leave() + group.enter() + self.getFailRoomWithAPI(lastID: self.failRoomLastID, size: self.myRoomCountSize) { + group.leave() + } + group.enter() + self.getCompleteRoomWithAPI(lastID: self.completeRoomLastID, size: self.myRoomCountSize) { + group.leave() + } } group.notify(queue: .main) { self.doneCV.reloadData() @@ -594,7 +594,7 @@ extension StorageVC: UICollectionViewDelegate, UICollectionViewDataSource { extension StorageVC { func getOnGoingRoomWithAPI(lastID: Int, size: Int, completion: @escaping () -> Void) { - MyRoomAPI(viewController: self).myRoomFetch(roomType: "ONGOING", lastID: lastID, size: size) { response in + MyRoomAPI(viewController: self).myRoomFetch(roomType: "ONGOING", lastID: lastID, size: size, needClean: true) { response in switch response { case .success(let data): if let myRoom = data as? MyRoom { From 6192af16435be28e55974047a105fe8e847bb0c5 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 04:35:29 +0900 Subject: [PATCH 080/107] =?UTF-8?q?[Design]=20#668=20-=20UpgradeFlakeDialo?= =?UTF-8?q?gue=20storyboard=20=EB=A1=9C=20=EB=B7=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialogue/UpgradeFlakeDialogue.storyboard | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard index 3ae76e57..5d9de605 100644 --- a/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard @@ -6,6 +6,7 @@ + @@ -16,9 +17,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From fba8a2b1e1e36859157f43b2e071d373a2a3782d Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 04:36:05 +0900 Subject: [PATCH 081/107] =?UTF-8?q?[Delete]=20#668=20-=20codebase=20?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=91=EC=84=B1=ED=95=9C=20UI=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 54 ------------------- 1 file changed, 54 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index c77581eb..8fbafbba 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -7,8 +7,6 @@ import UIKit -import SnapKit - class UpgradeFlakeDialogueVC: UIViewController { // MARK: - Properties @@ -151,55 +149,3 @@ extension UpgradeFlakeDialogueVC: UICollectionViewDataSource { return cell } } - -// MARK: - Layout - -extension UpgradeFlakeDialogueVC { - private func setLayout() { - view.addSubview(backgroundView) - - backgroundView.snp.makeConstraints { - $0.leading.trailing.equalToSuperview().inset(20) - $0.centerY.equalToSuperview() - $0.height.equalTo(backgroundView.snp.width).multipliedBy(1.2) - } - - backgroundView.addSubviews([collectionView, levelTitle, subtitle, checkButton, leftGradientView, rightGradientView]) - - collectionView.snp.makeConstraints { - $0.leading.trailing.top.equalToSuperview() - $0.height.equalTo(collectionView.snp.width).multipliedBy(0.9) - } - - levelTitle.snp.makeConstraints { - $0.bottom.equalTo(collectionView.snp.bottom).offset(-72) - $0.centerX.equalToSuperview() - } - - subtitle.snp.makeConstraints { - $0.centerY.equalTo(levelTitle.snp.bottom).offset(32) - $0.centerX.equalToSuperview() - } - - checkButton.snp.makeConstraints { - $0.bottom.equalToSuperview().inset(28) - $0.width.equalTo(123) - $0.height.equalTo(48) - $0.centerX.equalToSuperview() - } - - leftGradientView.snp.makeConstraints { - $0.leading.equalTo(collectionView.snp.leading) - $0.width.equalTo(80) - $0.height.equalTo(120) - $0.bottom.equalTo(collectionView.snp.centerY).offset(20) - } - - rightGradientView.snp.makeConstraints { - $0.trailing.equalTo(collectionView.snp.trailing) - $0.width.equalTo(80) - $0.height.equalTo(120) - $0.bottom.equalTo(collectionView.snp.centerY).offset(20) - } - } -} From 329191905cb83e41f20b066aa4f6fdee878fab2c Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 04:37:01 +0900 Subject: [PATCH 082/107] =?UTF-8?q?[Refactor]=20#668=20-=20UI=20Components?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialogue/UpgradeFlakeDialogueVC.swift | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 8fbafbba..67121004 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -24,16 +24,15 @@ class UpgradeFlakeDialogueVC: UIViewController { public var leftDay: Int? - private let backgroundView = UIView() + @IBOutlet weak var collectionView: UICollectionView! + @IBOutlet weak var levelTitleLabel: UILabel! + @IBOutlet weak var subtitleLabel: UILabel! + @IBOutlet weak var backgroundView: UIView! + @IBOutlet weak var checkButton: UIButton! + @IBOutlet weak var leftGradientView: UIView! + @IBOutlet weak var rightGradientView: UIView! + private let collectionViewFlowlayout = UICollectionViewFlowLayout() - private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionViewFlowlayout) - private let levelTitle = UILabel() - private let subtitle = UILabel() - private let checkButton = UIButton() - private let leftGradientView = UIView() - private let rightGradientView = UIView() - private let leftGradientLayer = CAGradientLayer() - private let rightGradientLayer = CAGradientLayer() // MARK: - View Life Cycle @@ -60,21 +59,28 @@ extension UpgradeFlakeDialogueVC { backgroundView.backgroundColor = .sparkWhite - levelTitle.textColor = .sparkPinkred - levelTitle.font = .enMediumItatlicFont(ofSize: 24) + levelTitleLabel.textColor = .sparkPinkred + levelTitleLabel.font = .enMediumItatlicFont(ofSize: 24) - subtitle.tintColor = .sparkDeepGray - subtitle.font = .p1TitleLight - subtitle.textAlignment = .center - subtitle.numberOfLines = 2 + subtitleLabel.tintColor = .sparkDeepGray + subtitleLabel.font = .p1TitleLight + subtitleLabel.textAlignment = .center + subtitleLabel.numberOfLines = 2 checkButton.setTitle("확인했어요", for: .normal) checkButton.setTitleColor(.sparkWhite, for: .normal) checkButton.backgroundColor = .sparkBlack checkButton.titleLabel?.font = .btn1Default - levelTitle.text = sparkUpgradeFlakes[0].levelText - subtitle.text = sparkUpgradeFlakes[0].upgradeText + levelTitleLabel.text = sparkUpgradeFlakes[0].levelText + subtitleLabel.text = sparkUpgradeFlakes[0].upgradeText + + leftGradientView.backgroundColor = .clear + rightGradientView.backgroundColor = .clear + + leftGradientView.isUserInteractionEnabled = false + rightGradientView.isUserInteractionEnabled = false + } } private func addTargets() { @@ -125,11 +131,11 @@ extension UpgradeFlakeDialogueVC: UICollectionViewDelegate { let index: Int = Int(round(contentOffsetX / (120 + scrollView.frame.width / 10))) if sparkUpgradeFlakes.count > index && index >= 0 { - if levelTitle.text != sparkUpgradeFlakes[index].levelText { + if levelTitleLabel.text != sparkUpgradeFlakes[index].levelText { impactFeedbackGenerator?.impactOccurred() } - levelTitle.text = sparkUpgradeFlakes[index].levelText - subtitle.text = sparkUpgradeFlakes[index].upgradeText + levelTitleLabel.text = sparkUpgradeFlakes[index].levelText + subtitleLabel.text = sparkUpgradeFlakes[index].upgradeText } } } From 917b16a4d1dfb5229cdf9058c56508a9413553a1 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 04:37:43 +0900 Subject: [PATCH 083/107] =?UTF-8?q?[Feat]=20#668=20-=20gradient=20view=20?= =?UTF-8?q?=EC=97=90=20gradient=20layer=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift index 67121004..35695ebe 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Dialogue/UpgradeFlakeDialogueVC.swift @@ -42,10 +42,10 @@ class UpgradeFlakeDialogueVC: UIViewController { setSparkFlakes() setUI() addTargets() - setLayout() setDelegate() setCollectionView() setImpactFeedbackGenerator() + setGradientLayer() } } @@ -81,6 +81,10 @@ extension UpgradeFlakeDialogueVC { leftGradientView.isUserInteractionEnabled = false rightGradientView.isUserInteractionEnabled = false } + + private func setGradientLayer() { + leftGradientView.setGradient(color1: .init(white: 1, alpha: 1), color2: .init(white: 1, alpha: 0), startPoint: CGPoint(x: 0.0, y: 0.5), endPoint: CGPoint(x: 1.0, y: 0.5)) + rightGradientView.setGradient(color1: .init(white: 1, alpha: 1), color2: .init(white: 1, alpha: 0), startPoint: CGPoint(x: 1.0, y: 0.5), endPoint: CGPoint(x: 0.0, y: 0.5)) } private func addTargets() { From 702ebd5043c94b1e733f523b58544f5b8e0d5bda Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Thu, 13 Oct 2022 04:40:09 +0900 Subject: [PATCH 084/107] =?UTF-8?q?[Design]=20#668=20-=20UIButton=20?= =?UTF-8?q?=EC=9D=98=20font=20=EC=84=A4=EC=A0=95=ED=95=98=EA=B8=B0=20?= =?UTF-8?q?=EC=9C=84=ED=95=B4=EC=84=9C=20style=20=EC=9D=84=20default=20?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard b/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard index 5d9de605..1ffd33c5 100644 --- a/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard +++ b/Spark-iOS/Spark-iOS/Resource/Storyboards/Dialogue/UpgradeFlakeDialogue.storyboard @@ -56,14 +56,14 @@ - From 27cd4d718976aadb3ebc0b0f3e9d7683f4fac1f2 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Thu, 13 Oct 2022 04:41:14 +0900 Subject: [PATCH 085/107] =?UTF-8?q?[Fix]=20#655=20-=20=EB=85=B8=ED=8B=B0?= =?UTF-8?q?=EC=8A=A4=20=ED=83=AD=20=EC=A0=84=ED=99=98=20=EA=B0=84=EC=97=90?= =?UTF-8?q?=20=EC=9D=B8=EB=8D=B1=EC=8A=A4=20=EC=97=90=EB=9F=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift | 4 ++-- .../Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift index ececdef6..5a763c62 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/MoyaLoggerPlugin.swift @@ -63,8 +63,8 @@ final class MoyaLoggerPlugin: PluginType { } func onFail(_ error: MoyaError) { - guard let isExplicitlyCanclled = error.asAFError?.isExplicitlyCancelledError, - !isExplicitlyCanclled else { return } + guard let isExplicitlyCancelled = error.asAFError?.isExplicitlyCancelledError, + !isExplicitlyCancelled else { return } var log = "------------------- 네트워크 오류" log.append("(에러코드: \(error.errorCode)) -------------------\n") log.append("3️⃣ \(error.failureReason ?? error.errorDescription ?? "unknown error")\n") diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift index 32e52c40..d6a42d35 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift @@ -202,7 +202,6 @@ class NoticeVC: UIViewController { makeDrawAboveButton(button: activeButton) activeLastID = -1 - activeList.removeAll() let group = DispatchGroup() @@ -234,7 +233,6 @@ class NoticeVC: UIViewController { makeDrawAboveButton(button: serviceButton) serviceLastID = -1 - serviceList.removeAll() let group = DispatchGroup() @@ -361,6 +359,7 @@ extension NoticeVC { case .success(let data): if let active = data as? ActiveNotice { self.newService = active.newService + self.activeList.removeAll() self.activeList.append(contentsOf: active.notices) if self.activeList.isEmpty { self.setEmptyView() @@ -387,6 +386,7 @@ extension NoticeVC { case .success(let data): if let service = data as? ServiceNotice { self.newActive = service.newActive + self.serviceList.removeAll() self.serviceList.append(contentsOf: service.notices) if self.serviceList.isEmpty { self.setEmptyView() From e12975a892470eea787c0df2e56409a4967c1232 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 16 Oct 2022 22:04:29 +0900 Subject: [PATCH 086/107] =?UTF-8?q?[Fix]=20#668=20-=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=97=90=EC=85=8B=20=EC=9D=B4=EB=A6=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sparkFlakeSparkFlake1.imageset/Contents.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json index b40c1c54..02709ba8 100644 --- a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json +++ b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json @@ -1,23 +1,23 @@ { "images" : [ { - "filename" : "sparkFlakeSparkFlake1.png", + "filename" : "sparkFlakeSparkflake1.png", "idiom" : "universal", "scale" : "1x" }, { - "scale" : "2x", - "filename" : "sparkFlakeSparkFlake1@2x.png", - "idiom" : "universal" + "filename" : "sparkFlakeSparkflake1@2x.png", + "idiom" : "universal", + "scale" : "2x" }, { + "filename" : "sparkFlakeSparkflake1@3x.png", "idiom" : "universal", - "filename" : "sparkFlakeSparkFlake1@3x.png", "scale" : "3x" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} From eea1d72937b21f000b1f5c706ca417ed7a97a492 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 18 Oct 2022 00:08:02 +0900 Subject: [PATCH 087/107] =?UTF-8?q?[Feat]=20#668=20-=20=EC=83=88=20?= =?UTF-8?q?=EC=8A=B5=EA=B4=80=EB=B0=A9=EC=97=90=EC=84=9C=EB=B6=80=ED=84=B0?= =?UTF-8?q?=20level1=20=ED=8C=9D=EC=97=85=20=EB=9D=84=EC=9A=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/ViewControllers/HabitRoom/HabitRoomVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index f6ffeadb..fc512571 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -292,7 +292,7 @@ extension HabitRoomVC { private func presentToUpgradeFlakeDialogueVC() { if let leftDay = habitRoomDetail?.leftDay, let isTermNew = habitRoomDetail?.isTermNew { - if (leftDay == 62 || leftDay == 58 || leftDay == 32 || leftDay == 6 || leftDay == 0) && isTermNew { + if (leftDay == 65 || leftDay == 62 || leftDay == 58 || leftDay == 32 || leftDay == 6 || leftDay == 0) && isTermNew { guard let upgradeFlakeDialogueVC = UIStoryboard(name: Const.Storyboard.Name.UpgradeFlakeDialogue, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.UpgradeFlakeDialogue) as? UpgradeFlakeDialogueVC else { return } upgradeFlakeDialogueVC.leftDay = habitRoomDetail?.leftDay From 4d57799ebb85b1ca5e16b6c0553c322dc4249801 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 25 Oct 2022 14:30:33 +0900 Subject: [PATCH 088/107] =?UTF-8?q?[Fix]=20#655=20-=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RequestContainer에 Store 기능 추가 및 MyRoomAPI에 needClean으로 분기 --- .../Source/NetworkServices/MyRoom/MyRoomAPI.swift | 9 +++++++-- .../Source/NetworkServices/Plugin/RequestContainer.swift | 8 ++++++++ .../Source/ViewControllers/TabBar/StorageVC.swift | 3 ++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift index c5ee6fe8..7b784eab 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/MyRoom/MyRoomAPI.swift @@ -17,7 +17,7 @@ public class MyRoomAPI { } func myRoomFetch(roomType: String, lastID: Int, size: Int, needClean: Bool = false, completion: @escaping (NetworkResult) -> Void) { - userProvider.request(.myRoomFetch(roomType: roomType, lastID: lastID, size: size)) { (result) in + let cancellable = userProvider.request(.myRoomFetch(roomType: roomType, lastID: lastID, size: size)) { (result) in switch result { case .success(let response): let statusCode = response.statusCode @@ -29,7 +29,12 @@ public class MyRoomAPI { case .failure(let err): print(err) } - }.doCleanRequest(from: .storage) + } + if needClean { + cancellable.doCleanRequest(from: .storage) + } else { + cancellable.store(from: .storage) + } } private func judgeMyRoomFetchStatus(by statusCode: Int, _ data: Data) -> NetworkResult { diff --git a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift index fc80e6ff..e40b7775 100644 --- a/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift +++ b/Spark-iOS/Spark-iOS/Source/NetworkServices/Plugin/RequestContainer.swift @@ -35,10 +35,18 @@ class RequestContainer { requestDictionary[key]?.removeAll() requestDictionary[key]?.append(request) } + + public func store(request: Cancellable, key: APIType) { + requestDictionary[key]?.append(request) + } } extension Cancellable { func doCleanRequest(from apiType: APIType) { RequestContainer.shared.doCleanRequest(request: self, key: apiType) } + + func store(from apiType: APIType) { + RequestContainer.shared.store(request: self, key: apiType) + } } diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift index 8a1fd1d5..40d04333 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/TabBar/StorageVC.swift @@ -103,7 +103,6 @@ class StorageVC: UIViewController { let group = DispatchGroup.init() group.enter() getOnGoingRoomWithAPI(lastID: self.onGoingRoomLastID, size: self.myRoomCountSize) { - group.leave() group.enter() self.getFailRoomWithAPI(lastID: self.failRoomLastID, size: self.myRoomCountSize) { group.leave() @@ -112,6 +111,8 @@ class StorageVC: UIViewController { self.getCompleteRoomWithAPI(lastID: self.completeRoomLastID, size: self.myRoomCountSize) { group.leave() } + + group.leave() } group.notify(queue: .main) { self.doneCV.reloadData() From 8f84f878f8a292bc085ebd2b8ef33d275db0a6e0 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 25 Oct 2022 15:53:02 +0900 Subject: [PATCH 089/107] =?UTF-8?q?[Fix]=20#655=20-=20=EC=A3=BC=EC=84=9D?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift | 2 -- 1 file changed, 2 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift index d6a42d35..0ecb047e 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/Notice/NoticeVC.swift @@ -150,14 +150,12 @@ class NoticeVC: UIViewController { private func bindButton() { activeButton.rx.tap -// .throttle(.seconds(3), latest: false, scheduler: MainScheduler.instance) .subscribe(onNext: { self.touchActiveButton() }) .disposed(by: disposeBag) serviceButton.rx.tap -// .throttle(.seconds(3), latest: false, scheduler: MainScheduler.instance) .subscribe(onNext: { self.touchServiceButton() }) From a6749b4da27d530634898fe3f10f3c3347535e15 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Tue, 25 Oct 2022 16:19:18 +0900 Subject: [PATCH 090/107] =?UTF-8?q?[Fix]=20#617=20-=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EC=82=AC=EC=A7=84=20=EB=8D=94=EB=B3=B4=EA=B8=B0=20=EB=B7=B0=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=82=AC=EC=9D=B4=EC=A6=88=20lar?= =?UTF-8?q?ge=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift index d4cea8f9..0fd67deb 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift @@ -66,7 +66,7 @@ class MoreStorageCVC: UICollectionViewCell { timerCount: String?) { switch status { case "DONE": - certificationImage.updateImage(mainImage, placeholder: .sparkDarkGray) + certificationImage.updateImage(mainImage, type: .large, placeholder: .sparkDarkGray) case "REST": certificationImage.image = UIImage(named: "stickerRestBigMybox") default: @@ -94,7 +94,7 @@ class MoreStorageCVC: UICollectionViewCell { status: String) { switch status { case "DONE": - certificationImage.updateImage(mainImage, type: .small, placeholder: .sparkDarkGray) + certificationImage.updateImage(mainImage, type: .large, placeholder: .sparkDarkGray) self.isUserInteractionEnabled = true case "REST": certificationImage.image = UIImage(named: "stickerRestBigMybox") From e55d6e93e09e0f010884c0306c425a67bb6ac264 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Thu, 27 Oct 2022 23:05:45 +0900 Subject: [PATCH 091/107] =?UTF-8?q?[Fix]=20#617=20-=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EC=82=AC=EC=A7=84=20=EB=AA=A8=EC=95=84=EB=B3=B4=EA=B8=B0=20?= =?UTF-8?q?=EB=A6=AC=EC=82=AC=EC=9D=B4=EC=A7=95=20=EC=82=AC=EC=9D=B4?= =?UTF-8?q?=EC=A6=88=20medium=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift index 0fd67deb..47680743 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/StorageMore/MoreStorageCVC.swift @@ -66,7 +66,7 @@ class MoreStorageCVC: UICollectionViewCell { timerCount: String?) { switch status { case "DONE": - certificationImage.updateImage(mainImage, type: .large, placeholder: .sparkDarkGray) + certificationImage.updateImage(mainImage, type: .medium, placeholder: .sparkDarkGray) case "REST": certificationImage.image = UIImage(named: "stickerRestBigMybox") default: @@ -94,7 +94,7 @@ class MoreStorageCVC: UICollectionViewCell { status: String) { switch status { case "DONE": - certificationImage.updateImage(mainImage, type: .large, placeholder: .sparkDarkGray) + certificationImage.updateImage(mainImage, type: .medium, placeholder: .sparkDarkGray) self.isUserInteractionEnabled = true case "REST": certificationImage.image = UIImage(named: "stickerRestBigMybox") From 5a3dc12e500ea357834c5f61c3a81572c034278a Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 01:27:20 +0900 Subject: [PATCH 092/107] =?UTF-8?q?[Chore]=20#673=20-=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=97=90=EC=85=8B=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contents.json | 0 .../sparkFlakeSparkflake1.png} | Bin .../sparkFlakeSparkflake1@2x.png} | Bin .../sparkFlakeSparkflake1@3x.png} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename Spark-iOS/Spark-iOS/Resource/Assets.xcassets/{sparkFlakeSparkFlake1.imageset => sparkFlakeSparkflake1.imageset}/Contents.json (100%) rename Spark-iOS/Spark-iOS/Resource/Assets.xcassets/{sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1.png => sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1.png} (100%) rename Spark-iOS/Spark-iOS/Resource/Assets.xcassets/{sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@2x.png => sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1@2x.png} (100%) rename Spark-iOS/Spark-iOS/Resource/Assets.xcassets/{sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@3x.png => sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1@3x.png} (100%) diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/Contents.json similarity index 100% rename from Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/Contents.json rename to Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/Contents.json diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1.png similarity index 100% rename from Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1.png rename to Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1.png diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@2x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1@2x.png similarity index 100% rename from Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@2x.png rename to Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1@2x.png diff --git a/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@3x.png b/Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1@3x.png similarity index 100% rename from Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkFlake1.imageset/sparkFlakeSparkFlake1@3x.png rename to Spark-iOS/Spark-iOS/Resource/Assets.xcassets/sparkFlakeSparkflake1.imageset/sparkFlakeSparkflake1@3x.png From d306aba76e2928ca04be74f14645c2eed04acdcf Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 01:31:23 +0900 Subject: [PATCH 093/107] =?UTF-8?q?[Chore]=20#673=20-=20fastlane=20fastfil?= =?UTF-8?q?e=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slack webhook url 변경 --- Spark-iOS/fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 8092e218..63d0465e 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -79,7 +79,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -98,7 +98,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 6e233d403e514ebd5fe50518a14294a2203337bb Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 01:47:48 +0900 Subject: [PATCH 094/107] =?UTF-8?q?[Chore]=20#673=20-=20fastlane=20fastfil?= =?UTF-8?q?e=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slack webhook url 변경 --- Spark-iOS/fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 63d0465e..3d398f2f 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -48,7 +48,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -79,7 +79,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -98,7 +98,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 136ad6fc4018b505e46185de08f4089a467d9392 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 01:48:05 +0900 Subject: [PATCH 095/107] =?UTF-8?q?[Chore]=20#673=20-=20=EB=B9=8C=EB=93=9C?= =?UTF-8?q?=20=EB=B2=88=ED=98=B8=201=EB=A1=9C=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index a0d5f85c..5b7db8c8 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -2029,7 +2029,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2067,7 +2067,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2166,7 +2166,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; From 89d8c29835cef56294279962d1e5bee060323ce3 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 02:04:03 +0900 Subject: [PATCH 096/107] =?UTF-8?q?[Chore]=20#673=20-=20=EC=88=98=EB=8F=99?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=EB=A5=BC=20=EC=9C=84=ED=95=9C=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 3d398f2f..1db7e515 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -67,7 +67,7 @@ platform :ios do skip_metadata: false, skip_screenshots: true, submit_for_review: true, - automatic_release: true, + automatic_release: false, force: true ) version = get_version_number( From eacf0d541d4e7e447854fd63d959ad5d509e4283 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 02:35:11 +0900 Subject: [PATCH 097/107] =?UTF-8?q?[Chore]=20#673=20-=20TestFlight=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=82=B4=EC=97=AD=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=B4=20lane=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/fastlane/Fastfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 1db7e515..0f133a56 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -36,8 +36,7 @@ platform :ios do api_key_path: "fastlane/key.json", distribute_external: true, groups: ["SparkBetaTestGroup"], - changelog: "- 수출 규정 문서 추가 -- fastlane 에서 테스트 세부사항 작성" + changelog: "- 개발자 QA 중 Level 1 의 spark flake 이미지가 보이지 않아서 수정하였습니다." ) version = get_version_number( xcodeproj: "Spark-iOS.xcodeproj", From cf6d1261f8688c063042734f473d9a3fee148eac Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Fri, 28 Oct 2022 16:40:00 +0900 Subject: [PATCH 098/107] =?UTF-8?q?[Chore]=20#673=20-=20fastlane=20fastfil?= =?UTF-8?q?e=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slack webhook url 변경 --- Spark-iOS/fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 0f133a56..f8139c28 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -47,7 +47,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -78,7 +78,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -97,7 +97,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From 5a43f3ad64a60756aabece8800052d4293a602e2 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sat, 29 Oct 2022 22:58:09 +0900 Subject: [PATCH 099/107] =?UTF-8?q?[Chore]=20#676=20-=20release=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build app 수정 --- Spark-iOS/fastlane/Fastfile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index f8139c28..b90e9bf3 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -60,7 +60,17 @@ platform :ios do get_certificates get_provisioning_profile increment_version_number(version_number: options[:version]) - build_app(workspace: "Spark-iOS.xcworkspace", scheme: "Spark-release") + build_app( + workspace: "Spark-iOS.xcworkspace", + scheme: "Spark-beta", + export_method: "app-store", + export_options: { + provisioningProfiles: { + "com.TeamSparker.Spark" => "Spark AppStore", + "com.TeamSparker.Spark.SparkNotificationService" => "SparkNotificationService AppStore" + } + } + ) upload_to_app_store( api_key_path: "fastlane/key.json", skip_metadata: false, From b5bb34c873d6ce4e2da5cd810d7c51c13a21f18e Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 30 Oct 2022 10:48:04 +0900 Subject: [PATCH 100/107] =?UTF-8?q?[Chore]=20#676=20-=20release=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - IDFA 없음 - precheck 할 때 앱 구매 없음 --- Spark-iOS/fastlane/Fastfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index b90e9bf3..9275250d 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -77,7 +77,9 @@ platform :ios do skip_screenshots: true, submit_for_review: true, automatic_release: false, - force: true + force: true, + precheck_include_in_app_purchases: false, + submission_information: { add_id_info_uses_idfa: false } ) version = get_version_number( xcodeproj: "Spark-iOS.xcodeproj", From 487d81c5a726298452c04cc3c2ac7838d1382afa Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 30 Oct 2022 10:48:21 +0900 Subject: [PATCH 101/107] =?UTF-8?q?[Chore]=20#676=20-=20release=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - slack url 변경 --- Spark-iOS/fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 9275250d..48d216d9 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -47,7 +47,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 TestFlight 에 등록되었습니다!🔥", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -90,7 +90,7 @@ platform :ios do username: "항상건강해야한다콩이", icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "성공적으로 앱을 등록했습니다!💫", - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } @@ -109,7 +109,7 @@ platform :ios do icon_url: "https://user-images.githubusercontent.com/69136340/194049016-4b1f747f-99ed-4a14-a28d-2ed9a26fe0e3.png", message: "에러 발생!!! 발생!!🚨 : #{exception}", success: false, - slack_url: "https://hooks.slack.com/services/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", + slack_url: "https://hooks.slack.com/services/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", payload: { "Version": version + "(" + build + ")" } From d254705e789cad40a51d0497674ec5d7d30e1764 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Sun, 30 Oct 2022 10:48:45 +0900 Subject: [PATCH 102/107] =?UTF-8?q?[Chore]=20#676=20-=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 1.1.0 --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index 5b7db8c8..ed5bba4b 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -2047,7 +2047,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2085,7 +2085,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2184,7 +2184,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; From 2337208dff89b188a9d86dd822f3afc27a38cbd4 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Mon, 31 Oct 2022 09:01:33 +0900 Subject: [PATCH 103/107] =?UTF-8?q?[Chore]=20#676=20-=20release=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - xcodeproj 지정 --- Spark-iOS/fastlane/Fastfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 48d216d9..0aa65af5 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -59,7 +59,10 @@ platform :ios do if options[:version] get_certificates get_provisioning_profile - increment_version_number(version_number: options[:version]) + increment_version_number( + version_number: options[:version], + xcodeproj: "Spark-iOS.xcodeproj" + ) build_app( workspace: "Spark-iOS.xcworkspace", scheme: "Spark-beta", From 4820cbedebd9d8a6f2479af5669d225279fced5b Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Tue, 1 Nov 2022 13:03:17 +0900 Subject: [PATCH 104/107] =?UTF-8?q?[Design]=20#678=20-=20UpgradeFlakeCVC?= =?UTF-8?q?=20Y=EC=B6=95=20=EC=A4=91=EC=8B=AC=EC=9D=84=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=EC=9C=BC=EB=A1=9C=20=EC=B6=95=EC=86=8C=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Cells/HabitRoom/UpgradeFlakeCVC.swift | 2 +- .../Source/Classes/UpgradeFlakeCarouselLayout.swift | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift index 80d86ab5..430cf79b 100644 --- a/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift +++ b/Spark-iOS/Spark-iOS/Source/Cells/HabitRoom/UpgradeFlakeCVC.swift @@ -49,7 +49,7 @@ class UpgradeFlakeCVC: UICollectionViewCell { upgradeFlakeImageView.snp.makeConstraints { $0.leading.trailing.equalToSuperview() - $0.bottom.equalTo(contentView.snp.centerY).offset(20) + $0.centerY.equalTo(contentView.snp.centerY) $0.height.equalTo(upgradeFlakeImageView.snp.width) } } diff --git a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift index 71d26f30..a35b010d 100644 --- a/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift +++ b/Spark-iOS/Spark-iOS/Source/Classes/UpgradeFlakeCarouselLayout.swift @@ -15,6 +15,9 @@ class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { private var isSetup: Bool = false + private let flakeSize: CGFloat = 120 + private let itemPadding: CGFloat = 53 + override public func prepare() { super.prepare() if isSetup == false { @@ -27,10 +30,10 @@ class UpgradeFlakeCarouselLayout: UICollectionViewFlowLayout { guard let collectionView = self.collectionView else {return} let collectionViewSize = collectionView.bounds.size - self.itemSize = CGSize(width: 120, height: collectionViewSize.height) + self.itemSize = CGSize(width: flakeSize, height: itemPadding + flakeSize + itemPadding) - let insets: CGFloat = (collectionViewSize.width - 120) / 2 - self.sectionInset = UIEdgeInsets(top: 0, left: insets, bottom: 0, right: insets) + let insets: CGFloat = (collectionViewSize.width - flakeSize) / 2 + self.sectionInset = UIEdgeInsets(top: 0, left: insets, bottom: collectionViewSize.height - (itemPadding + flakeSize + itemPadding), right: insets) self.minimumLineSpacing = collectionViewSize.width / 10 self.scrollDirection = .horizontal From 90f0114ee96e6159447905e1a904cf2b04a602b9 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 2 Nov 2022 12:33:24 +0900 Subject: [PATCH 105/107] =?UTF-8?q?[Design]=20#682=20-=20=EB=B6=88?= =?UTF-8?q?=EA=BD=83=20=EA=B2=B0=EC=A0=95=20=EB=A1=9C=EB=93=9C=EB=A7=B5=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/ViewControllers/HabitRoom/HabitRoomVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift index fc512571..ba111c66 100644 --- a/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift +++ b/Spark-iOS/Spark-iOS/Source/ViewControllers/HabitRoom/HabitRoomVC.swift @@ -384,7 +384,7 @@ extension HabitRoomVC { private func presentToMoreAlert() { let alert = SparkActionSheet() - alert.addAction(SparkAction("불꽃 결정 로드맵") { + alert.addAction(SparkAction("불꽃 결정 레벨") { self.dismiss(animated: true) { guard let nextVC = UIStoryboard(name: Const.Storyboard.Name.UpgradeFlakeDialogue, bundle: nil).instantiateViewController(withIdentifier: Const.ViewController.Identifier.UpgradeFlakeDialogue) as? UpgradeFlakeDialogueVC else { return } From d50887945b0b7b0ff9e1f5c8262cbe2f6d53fb34 Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 2 Nov 2022 13:13:40 +0900 Subject: [PATCH 106/107] =?UTF-8?q?[Chore]=20#684=20-=20release=20lane=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build number 증가시키는 명령어 추가 --- Spark-iOS/fastlane/Fastfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Spark-iOS/fastlane/Fastfile b/Spark-iOS/fastlane/Fastfile index 0aa65af5..d42ed094 100644 --- a/Spark-iOS/fastlane/Fastfile +++ b/Spark-iOS/fastlane/Fastfile @@ -59,6 +59,7 @@ platform :ios do if options[:version] get_certificates get_provisioning_profile + increment_build_number(xcodeproj: "Spark-iOS.xcodeproj") increment_version_number( version_number: options[:version], xcodeproj: "Spark-iOS.xcodeproj" From f80a2ac31de7edcf5495db4893ae64bba03afb2b Mon Sep 17 00:00:00 2001 From: hyun99999 Date: Wed, 2 Nov 2022 13:14:14 +0900 Subject: [PATCH 107/107] =?UTF-8?q?[Chore]=20#684=20-=20app=20extension=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj index ed5bba4b..116c6aab 100644 --- a/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj +++ b/Spark-iOS/Spark-iOS.xcodeproj/project.pbxproj @@ -2029,7 +2029,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2067,7 +2067,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2166,7 +2166,7 @@ CODE_SIGN_ENTITLEMENTS = "Spark-iOS/Spark-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "Spark-iOS/Resource/Info.plist"; @@ -2199,7 +2199,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2211,7 +2211,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark.SparkNotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -2226,7 +2226,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2238,7 +2238,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark.SparkNotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -2253,7 +2253,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 49; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = T8C9SSEX5G; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SparkNotificationService/Info.plist; @@ -2265,7 +2265,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.TeamSparker.Spark.SparkNotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES;