From c623d905e66b25c385c523a350fd9be8c86db148 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 27 Feb 2022 12:04:16 +0900 Subject: [PATCH 001/166] Initial commit --- .gitignore | 113 +++++ .../project.pbxproj | 429 ++++++++++++++++++ .../AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 ++++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 + .../Base.lproj/Main.storyboard | 24 + 3dollar-in-my-pocket-manager/Info.plist | 25 + .../SceneDelegate.swift | 52 +++ .../ViewController.swift | 19 + 11 files changed, 838 insertions(+) create mode 100644 .gitignore create mode 100644 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj create mode 100644 3dollar-in-my-pocket-manager/AppDelegate.swift create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Base.lproj/LaunchScreen.storyboard create mode 100644 3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard create mode 100644 3dollar-in-my-pocket-manager/Info.plist create mode 100644 3dollar-in-my-pocket-manager/SceneDelegate.swift create mode 100644 3dollar-in-my-pocket-manager/ViewController.swift diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3ee782a --- /dev/null +++ b/.gitignore @@ -0,0 +1,113 @@ + +# Created by https://www.gitignore.io/api/swift,xcode,cocoapods +# Edit at https://www.gitignore.io/?templates=swift,xcode,cocoapods + +### CocoaPods ### +## CocoaPods GitIgnore Template + +# CocoaPods - Only use to conserve bandwidth / Save time on Pushing +# - Also handy if you have a large number of dependant pods +# - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE +Pods/ + +### Swift ### +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +.build/ +# Add this line if you want to avoid checking in Xcode SPM integration. +# .swiftpm/xcode + +# CocoaPods +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# 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 + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) + +## Xcode Patch +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +/*.gcno + +### Xcode Patch ### +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.gitignore.io/api/swift,xcode,cocoapods +R.generated.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1dba4ae --- /dev/null +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -0,0 +1,429 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 6E1AA1BA27CB215700C96D92 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B927CB215700C96D92 /* Base.framework */; platformFilter = ios; }; + 6E1AA1BB27CB215700C96D92 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B927CB215700C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; + 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; + 6EB94EA827CB208F00609E77 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA727CB208F00609E77 /* ViewController.swift */; }; + 6EB94EAB27CB208F00609E77 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EA927CB208F00609E77 /* Main.storyboard */; }; + 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; + 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6E1AA1B627CB210800C96D92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6EFDFA4227C657C9007BF8FD; + remoteInfo = Base; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 6E1AA1BC27CB215700C96D92 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 6E1AA1BB27CB215700C96D92 /* Base.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; + 6E1AA1B927CB215700C96D92 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-dnitfhvnkrdaryaqvbwknfooeggx/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 6EB94EA727CB208F00609E77 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 6EB94EAA27CB208F00609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 6EB94EAC27CB209000609E77 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 6EB94EAF27CB209000609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6EB94E9D27CB208F00609E77 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6E1AA1BA27CB215700C96D92 /* Base.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6E1AA1B327CB210800C96D92 /* Products */ = { + isa = PBXGroup; + children = ( + 6E1AA1B727CB210800C96D92 /* Base.framework */, + ); + name = Products; + sourceTree = ""; + }; + 6E1AA1B827CB215700C96D92 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6E1AA1B927CB215700C96D92 /* Base.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 6EB94E9727CB208E00609E77 = { + isa = PBXGroup; + children = ( + 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */, + 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */, + 6EB94EA127CB208F00609E77 /* Products */, + 6E1AA1B827CB215700C96D92 /* Frameworks */, + ); + sourceTree = ""; + }; + 6EB94EA127CB208F00609E77 /* Products */ = { + isa = PBXGroup; + children = ( + 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */, + ); + name = Products; + sourceTree = ""; + }; + 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { + isa = PBXGroup; + children = ( + 6EB94EA327CB208F00609E77 /* AppDelegate.swift */, + 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */, + 6EB94EA727CB208F00609E77 /* ViewController.swift */, + 6EB94EA927CB208F00609E77 /* Main.storyboard */, + 6EB94EAC27CB209000609E77 /* Assets.xcassets */, + 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */, + 6EB94EB127CB209000609E77 /* Info.plist */, + ); + path = "3dollar-in-my-pocket-manager"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6EB94E9F27CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6EB94EB427CB209000609E77 /* Build configuration list for PBXNativeTarget "3dollar-in-my-pocket-manager" */; + buildPhases = ( + 6EB94E9C27CB208F00609E77 /* Sources */, + 6EB94E9D27CB208F00609E77 /* Frameworks */, + 6EB94E9E27CB208F00609E77 /* Resources */, + 6E1AA1BC27CB215700C96D92 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "3dollar-in-my-pocket-manager"; + productName = "3dollar-in-my-pocket-manager"; + productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6EB94E9827CB208E00609E77 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1320; + LastUpgradeCheck = 1320; + TargetAttributes = { + 6EB94E9F27CB208F00609E77 = { + CreatedOnToolsVersion = 13.2.1; + }; + }; + }; + buildConfigurationList = 6EB94E9B27CB208E00609E77 /* Build configuration list for PBXProject "3dollar-in-my-pocket-manager" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 6EB94E9727CB208E00609E77; + productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6E1AA1B327CB210800C96D92 /* Products */; + ProjectRef = 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6EB94E9F27CB208F00609E77 /* 3dollar-in-my-pocket-manager */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6E1AA1B727CB210800C96D92 /* Base.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Base.framework; + remoteRef = 6E1AA1B627CB210800C96D92 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 6EB94E9E27CB208F00609E77 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, + 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, + 6EB94EAB27CB208F00609E77 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6EB94E9C27CB208F00609E77 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6EB94EA827CB208F00609E77 /* ViewController.swift in Sources */, + 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, + 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 6EB94EA927CB208F00609E77 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6EB94EAA27CB208F00609E77 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6EB94EAF27CB209000609E77 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 6EB94EB227CB209000609E77 /* Debug */ = { + 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 = 14.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 = Debug; + }; + 6EB94EB327CB209000609E77 /* Release */ = { + 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-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + 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 = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 6EB94EB527CB209000609E77 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = X975A2HM62; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 6EB94EB627CB209000609E77 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = X975A2HM62; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6EB94E9B27CB208E00609E77 /* Build configuration list for PBXProject "3dollar-in-my-pocket-manager" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6EB94EB227CB209000609E77 /* Debug */, + 6EB94EB327CB209000609E77 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6EB94EB427CB209000609E77 /* Build configuration list for PBXNativeTarget "3dollar-in-my-pocket-manager" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6EB94EB527CB209000609E77 /* Debug */, + 6EB94EB627CB209000609E77 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6EB94E9827CB208E00609E77 /* Project object */; +} diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift new file mode 100644 index 0000000..659fd3d --- /dev/null +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// 3dollar-in-my-pocket-manager +// +// Created by Hyun Sik Yoo on 2022/02/27. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AccentColor.colorset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Base.lproj/LaunchScreen.storyboard b/3dollar-in-my-pocket-manager/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard b/3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift new file mode 100644 index 0000000..028618b --- /dev/null +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// 3dollar-in-my-pocket-manager +// +// Created by Hyun Sik Yoo on 2022/02/27. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/3dollar-in-my-pocket-manager/ViewController.swift b/3dollar-in-my-pocket-manager/ViewController.swift new file mode 100644 index 0000000..abdc00e --- /dev/null +++ b/3dollar-in-my-pocket-manager/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// 3dollar-in-my-pocket-manager +// +// Created by Hyun Sik Yoo on 2022/02/27. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + From ce546446b2323a7a5c497c9f365570d82c907f83 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 27 Feb 2022 15:23:33 +0900 Subject: [PATCH 002/166] =?UTF-8?q?feat:=20Main=20Storyboard=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 32 ++++++------------- .../Base.lproj/Main.storyboard | 24 -------------- 3dollar-in-my-pocket-manager/Info.plist | 2 -- .../SceneDelegate.swift | 10 +++--- 4 files changed, 16 insertions(+), 52 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 1dba4ae..dee27d9 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -7,14 +7,13 @@ objects = { /* Begin PBXBuildFile section */ - 6E1AA1BA27CB215700C96D92 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B927CB215700C96D92 /* Base.framework */; platformFilter = ios; }; - 6E1AA1BB27CB215700C96D92 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B927CB215700C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EA827CB208F00609E77 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA727CB208F00609E77 /* ViewController.swift */; }; - 6EB94EAB27CB208F00609E77 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EA927CB208F00609E77 /* Main.storyboard */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; + 6EE0CF9327CB4FEC0027A426 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EE0CF9227CB4FEC0027A426 /* Base.framework */; platformFilter = ios; }; + 6EE0CF9427CB4FEC0027A426 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EE0CF9227CB4FEC0027A426 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -28,13 +27,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E1AA1BC27CB215700C96D92 /* Embed Frameworks */ = { + 6EE0CF9527CB4FEC0027A426 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E1AA1BB27CB215700C96D92 /* Base.framework in Embed Frameworks */, + 6EE0CF9427CB4FEC0027A426 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -43,15 +42,14 @@ /* Begin PBXFileReference section */ 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; - 6E1AA1B927CB215700C96D92 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-dnitfhvnkrdaryaqvbwknfooeggx/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 6EB94EA727CB208F00609E77 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 6EB94EAA27CB208F00609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 6EB94EAC27CB209000609E77 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6EB94EAF27CB209000609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6EE0CF9227CB4FEC0027A426 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -59,7 +57,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6E1AA1BA27CB215700C96D92 /* Base.framework in Frameworks */, + 6EE0CF9327CB4FEC0027A426 /* Base.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -77,7 +75,7 @@ 6E1AA1B827CB215700C96D92 /* Frameworks */ = { isa = PBXGroup; children = ( - 6E1AA1B927CB215700C96D92 /* Base.framework */, + 6EE0CF9227CB4FEC0027A426 /* Base.framework */, ); name = Frameworks; sourceTree = ""; @@ -106,7 +104,6 @@ 6EB94EA327CB208F00609E77 /* AppDelegate.swift */, 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */, 6EB94EA727CB208F00609E77 /* ViewController.swift */, - 6EB94EA927CB208F00609E77 /* Main.storyboard */, 6EB94EAC27CB209000609E77 /* Assets.xcassets */, 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */, 6EB94EB127CB209000609E77 /* Info.plist */, @@ -124,7 +121,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E1AA1BC27CB215700C96D92 /* Embed Frameworks */, + 6EE0CF9527CB4FEC0027A426 /* Embed Frameworks */, ); buildRules = ( ); @@ -191,7 +188,6 @@ files = ( 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, - 6EB94EAB27CB208F00609E77 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -211,14 +207,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - 6EB94EA927CB208F00609E77 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 6EB94EAA27CB208F00609E77 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -358,7 +346,7 @@ INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; LD_RUNPATH_SEARCH_PATHS = ( @@ -386,7 +374,7 @@ INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard b/3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard deleted file mode 100644 index 25a7638..0000000 --- a/3dollar-in-my-pocket-manager/Base.lproj/Main.storyboard +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index dd3c9af..0eb786d 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -15,8 +15,6 @@ Default Configuration UISceneDelegateClassName $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index 028618b..15fd238 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -13,10 +13,12 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } + guard let windowScene = (scene as? UIWindowScene) else { return } + + window = UIWindow(frame: windowScene.coordinateSpace.bounds) + window?.windowScene = windowScene + window?.rootViewController = ViewController(nibName: nil, bundle: nil) + window?.makeKeyAndVisible() } func sceneDidDisconnect(_ scene: UIScene) { From d9b7a32be2644e71fb9599637761c6fdf8e0b75d Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 27 Feb 2022 15:40:05 +0900 Subject: [PATCH 003/166] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EB=B7=B0=20=EA=B7=B8=EB=A6=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 183 ++++++++++++++++-- .../AppDelegate.swift | 21 +- ...c0f6d37fef00af1216ca2324971546583450 1.png | Bin 0 -> 366 bytes ...6d37fef00af1216ca2324971546583450 1@2x.png | Bin 0 -> 583 bytes ...6d37fef00af1216ca2324971546583450 1@3x.png | Bin 0 -> 921 bytes .../ic_apple.imageset/Contents.json | 23 +++ .../ic_kakao.imageset/Contents.json | 23 +++ .../ic_kakao.imageset/ic_logo_kakao.png | Bin 0 -> 447 bytes .../ic_kakao.imageset/ic_logo_kakao@2x.png | Bin 0 -> 756 bytes .../ic_kakao.imageset/ic_logo_kakao@3x.png | Bin 0 -> 1050 bytes .../ic_naver.imageset/Contents.json | 23 +++ .../ic_naver.imageset/ic_logo_naver.png | Bin 0 -> 303 bytes .../ic_naver.imageset/ic_logo_naver@2x.png | Bin 0 -> 428 bytes .../ic_naver.imageset/ic_logo_naver@3x.png | Bin 0 -> 548 bytes .../SceneDelegate.swift | 15 +- .../ViewController.swift | 19 -- .../membership/sign-in/SignInView.swift | 40 ++++ .../sign-in/SignInViewController.swift | 19 ++ .../sign-in/subviews/SocialSigninButton.swift | 86 ++++++++ .../extensions/BaseViewExtensions.swift | 14 ++ .../extensions/UIColorExtensions.swift | 9 + .../extensions/UIFontExtensions.swift | 27 +++ .../resources/fonts/AppleSDGothicNeoEB00.ttf | Bin 0 -> 3785784 bytes 23 files changed, 457 insertions(+), 45 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_naver.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_naver.imageset/ic_logo_naver.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_naver.imageset/ic_logo_naver@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_naver.imageset/ic_logo_naver@3x.png delete mode 100644 3dollar-in-my-pocket-manager/ViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift create mode 100644 3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/extensions/UIFontExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/resources/fonts/AppleSDGothicNeoEB00.ttf diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index dee27d9..b3b58a1 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -9,11 +9,22 @@ /* Begin PBXBuildFile section */ 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; - 6EB94EA827CB208F00609E77 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA727CB208F00609E77 /* ViewController.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; - 6EE0CF9327CB4FEC0027A426 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EE0CF9227CB4FEC0027A426 /* Base.framework */; platformFilter = ios; }; - 6EE0CF9427CB4FEC0027A426 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EE0CF9227CB4FEC0027A426 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; + 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; + 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; + 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839127CB39E300278E14 /* RxRelay */; }; + 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839327CB39E300278E14 /* RxSwift */; }; + 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839827CB3A1700278E14 /* SignInView.swift */; }; + 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */; }; + 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */; }; + 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */; }; + 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */; }; + 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */; }; + 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A827CB456F00278E14 /* SignInViewController.swift */; }; + 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED883AA27CB46BD00278E14 /* Base.framework */; platformFilter = ios; }; + 6EE0CF9927CB51F00027A426 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED883AA27CB46BD00278E14 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -27,13 +38,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EE0CF9527CB4FEC0027A426 /* Embed Frameworks */ = { + 6EE0CF9A27CB51F00027A426 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EE0CF9427CB4FEC0027A426 /* Base.framework in Embed Frameworks */, + 6EE0CF9927CB51F00027A426 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -45,11 +56,17 @@ 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 6EB94EA727CB208F00609E77 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 6EB94EAC27CB209000609E77 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6EB94EAF27CB209000609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6EE0CF9227CB4FEC0027A426 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6ED8839827CB3A1700278E14 /* SignInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInView.swift; sourceTree = ""; }; + 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialSigninButton.swift; sourceTree = ""; }; + 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewExtensions.swift; sourceTree = ""; }; + 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AppleSDGothicNeoEB00.ttf; sourceTree = ""; }; + 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFontExtensions.swift; sourceTree = ""; }; + 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; + 6ED883A827CB456F00278E14 /* SignInViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInViewController.swift; sourceTree = ""; }; + 6ED883AA27CB46BD00278E14 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -57,7 +74,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6EE0CF9327CB4FEC0027A426 /* Base.framework in Frameworks */, + 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, + 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, + 6ED8838D27CB398300278E14 /* Then in Frameworks */, + 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, + 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, + 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -75,7 +97,7 @@ 6E1AA1B827CB215700C96D92 /* Frameworks */ = { isa = PBXGroup; children = ( - 6EE0CF9227CB4FEC0027A426 /* Base.framework */, + 6ED883AA27CB46BD00278E14 /* Base.framework */, ); name = Frameworks; sourceTree = ""; @@ -101,9 +123,11 @@ 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { isa = PBXGroup; children = ( + 6ED883A027CB3C3A00278E14 /* resources */, + 6ED8839D27CB3BA600278E14 /* extensions */, + 6ED8839527CB39EE00278E14 /* domains */, 6EB94EA327CB208F00609E77 /* AppDelegate.swift */, 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */, - 6EB94EA727CB208F00609E77 /* ViewController.swift */, 6EB94EAC27CB209000609E77 /* Assets.xcassets */, 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */, 6EB94EB127CB209000609E77 /* Info.plist */, @@ -111,6 +135,66 @@ path = "3dollar-in-my-pocket-manager"; sourceTree = ""; }; + 6ED8839527CB39EE00278E14 /* domains */ = { + isa = PBXGroup; + children = ( + 6ED8839627CB39F600278E14 /* membership */, + ); + path = domains; + sourceTree = ""; + }; + 6ED8839627CB39F600278E14 /* membership */ = { + isa = PBXGroup; + children = ( + 6ED8839727CB39FB00278E14 /* sign-in */, + ); + path = membership; + sourceTree = ""; + }; + 6ED8839727CB39FB00278E14 /* sign-in */ = { + isa = PBXGroup; + children = ( + 6ED8839A27CB3A6C00278E14 /* subviews */, + 6ED8839827CB3A1700278E14 /* SignInView.swift */, + 6ED883A827CB456F00278E14 /* SignInViewController.swift */, + ); + path = "sign-in"; + sourceTree = ""; + }; + 6ED8839A27CB3A6C00278E14 /* subviews */ = { + isa = PBXGroup; + children = ( + 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */, + ); + path = subviews; + sourceTree = ""; + }; + 6ED8839D27CB3BA600278E14 /* extensions */ = { + isa = PBXGroup; + children = ( + 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */, + 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */, + 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */, + ); + path = extensions; + sourceTree = ""; + }; + 6ED883A027CB3C3A00278E14 /* resources */ = { + isa = PBXGroup; + children = ( + 6ED883A127CB3C5D00278E14 /* fonts */, + ); + path = resources; + sourceTree = ""; + }; + 6ED883A127CB3C5D00278E14 /* fonts */ = { + isa = PBXGroup; + children = ( + 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */, + ); + path = fonts; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -121,13 +205,20 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6EE0CF9527CB4FEC0027A426 /* Embed Frameworks */, + 6EE0CF9A27CB51F00027A426 /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "3dollar-in-my-pocket-manager"; + packageProductDependencies = ( + 6ED8838927CB395B00278E14 /* SnapKit */, + 6ED8838C27CB398300278E14 /* Then */, + 6ED8838F27CB39E300278E14 /* RxCocoa */, + 6ED8839127CB39E300278E14 /* RxRelay */, + 6ED8839327CB39E300278E14 /* RxSwift */, + ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; productType = "com.apple.product-type.application"; @@ -156,6 +247,11 @@ Base, ); mainGroup = 6EB94E9727CB208E00609E77; + packageReferences = ( + 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */, + 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */, + 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */, + ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; projectReferences = ( @@ -186,6 +282,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, ); @@ -198,9 +295,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6EB94EA827CB208F00609E77 /* ViewController.swift in Sources */, + 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, + 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, + 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */, + 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, + 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, + 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -346,6 +448,7 @@ INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = ""; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -374,6 +477,7 @@ INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = ""; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -412,6 +516,61 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SnapKit/SnapKit.git"; + requirement = { + branch = develop; + kind = branch; + }; + }; + 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/devxoul/Then"; + requirement = { + branch = master; + kind = branch; + }; + }; + 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ReactiveX/RxSwift.git"; + requirement = { + branch = main; + kind = branch; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 6ED8838927CB395B00278E14 /* SnapKit */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */; + productName = SnapKit; + }; + 6ED8838C27CB398300278E14 /* Then */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */; + productName = Then; + }; + 6ED8838F27CB39E300278E14 /* RxCocoa */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxCocoa; + }; + 6ED8839127CB39E300278E14 /* RxRelay */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxRelay; + }; + 6ED8839327CB39E300278E14 /* RxSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxSwift; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6EB94E9827CB208E00609E77 /* Project object */; } diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 659fd3d..f3ed6d0 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -9,28 +9,33 @@ import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate { - - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { // Override point for customization after application launch. return true } // MARK: UISceneSession Lifecycle - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + func application( + _ application: UIApplication, + configurationForConnecting connectingSceneSession: UISceneSession, + options: UIScene.ConnectionOptions + ) -> UISceneConfiguration { // Called when a new scene session is being created. // Use this method to select a configuration to create the new scene with. return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + func application( + _ application: UIApplication, + didDiscardSceneSessions sceneSessions: Set + ) { // Called when the user discards a scene session. // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } - - } diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1.png new file mode 100644 index 0000000000000000000000000000000000000000..1aaaca78ffd33e58eb1921e9be1b19ccf912adc7 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9S!3HE7rssMADb50q$YKTtZeb8+WSBKa0w~B> z9OUlAu5*SfT2h;axuH2VAVVmrajaMqfGz-{+H?Z~HdR)r* zr;%6UBKy^Y6Yu33*gVjB(Y$%%_D!le677Ek%6;eP`(#zkT6bYd>b9-oQkKgmZdtn` z`@vVa+MpvQwV^S!p@UC;r8s0*(%3%A^o;5i_~5?XYP@5#YA;{ICimo`T?@ooeL4}+(x KpUXO@geCy{AB!yj literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d6ab1c54365b6d4cbd20ba52bdf2eae34f4529c4 GIT binary patch literal 583 zcmV-N0=WH&P)iypZV9Xwr87ne$CFzJ3B!3(m?DHF^g_^$S@HRB1{F8Q%l@CL@uD5JR;-} zVaB1H$pDc%A_vO3c8ElYJ}9TgA@W5`z(d-E$SKhSPpKpJi8Z1Z86?$7)e-NYktiV^ zh~s$Y?+M!R$nc)iL{t$UF!Sn=I3OO8My81~xK{}CMr;uyM1H(YJFx__f?`S9ZouqI z2~$X{CwZ9UlXyRaxY3FPf1e9UerOF*tJRL1fA$(&<5D z4FOqE7I}e~w7J&jX6WV|W?BEomeD?ioydYMQxDx-%7QIZ1l|0|f-Un6-IU9ME%OT9 zw90}l^90>=$$~8thHm(%(Q6lMnJegL837At6#B0NW}7IMGNmv_NFPGGM70#!_awuF zq|Bg4nV6K}|H@%sGI>IViv`30^mFDamci`C+9T7CfXph3Y$8c^ltg$tsZA!shpmW$ z%sf&I->XEkD6)t&GnXY1J_F|>gDk)tzFZGIihn;uw7^`ij>Eijf>tG8$yUlvegVUR VWQ5%lHQ4|F002ovPDHLkV1m~P^Y;J% literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..37e646186a30a60b0f53e010036c9b8bc99bed88 GIT binary patch literal 921 zcmV;K17`e*P)#^m20{9wo%GVhzb-QP_j{?t~Jy!yV=g9S;Rep?z=%YK9Vy!5u~dFM4XsDjG#~!MF5>yyoIJ9SQRg-cxEb;@=PQ$F8J} zw4MG!akG@cYX?0}*CQcT&{p~t?nkdbbU8(rSk6~P>*)h{|9(EEGMK$dYf&Z>>4_45 zH0UFEBZNBIKrhkH!#JPsX*vrfAZ__p0zX_yAJZ9#!D9LpNWH>wd`4%Fi3l^9UZJa? z1Gz#qQR5}KnG<`O{0HPJ-L@6hLPs<6{Xo|sg075IG>(Jt`YNYY+5LA9gSps0(_Km7|%#gTX-E(1YwVopgOkmaH^P z9ZVZsp?Z;iB}-A()9d`ohm8zmxmU}mTaXO9;B`5jVPDt;U02AoC2V#o>)5gixc~|Y zYjUzBBHJY!FoKYtSW{CowbGffipDZ({v%t4doaSd4_#O2h9l444ol0zqZn%$?lRJ^ zXdGJ+6Pb7P1F2Uy%8zs@N}vHqz0y%0Mj5mNNW0=;UPYO!RWh|00FZV7)Axv2Fo}a~ z`wiz^g(Q^~sx3$Wxu1prP000;W1^@s654Bdt00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP+Ma_+I z?rL?x1nwrWj)Rhx_8oMNn#e)Nqiv)?Nrdt3SqmaM3`*q3;t!aSyvjA?b%_*uKc7xk%RRl$bJd;(GNcZi{>9?Sp$002ovPDHLkV1ncqwXy&J literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a980469b6a0f1cf10b6a4b0d588e985ed78ee196 GIT binary patch literal 756 zcmV8U5(DG)@OurByy3#sA0Sb$-3x6;;A>uc(!Vozj!U%@WFYojS8ObfeE`DlEpFwAf zJ6!@AOoOXCJ#_s;E)hpcg)sb0zA99QMnJE{)O6a!02%3ZI-fZ`3vu#^mrC`?@E7cwM<0n+hf_s} z6Du}+UGfc-7rpm~4x@>lEDokSwlSX?BEX^^p5tV7(BXEXV>F03sIHJGB8~^uU!~cQ ztRQTwCCdns=c9`TGHoxfD^UcQ#`wZAvt{c@K8XMmG!WB*`|U)tW{O~&S1phzV%kFH zw76<)J@QlQ@#0vbh_RNSLKLAv5NK^<)8hnTfF=>FuP0SRoU1hEG-$Y~zHqB22&dK- zu}jDnNt><0NrY8zB!k?U5G#PTS9#8roxKsPkobXhk|My8sXUFZHmXsG_~IVXVOpJ? zyW7!I>WrEDa&aq^j5S*d=z}bN=rX@h-^mtCFp!FGJw48YEXJDb`BPvRY3=NPg_~!+ z&cSt&Y?p|}vh^2|r;YM<0!ugvzS;a>{>mJP4=tOUO)70pHfv%0Omd(sJHCx4C_>zK zT^X~1QKI~%zKu{5#YB*KJ3q|F7(#;|x4QPONFfo@hdquZ$nHx+_|&E4SOvL7yi%%b mm~EE(u4rrCrp`f literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d4f0adcd19a635ad02db061fc3b3c0568b34c63 GIT binary patch literal 1050 zcmV+#1m*jQP)T7Y48sr| zL_~Ul5!47Q@2Hy}xv~1S>PpHICM3jsz#OzYGiZNNstw1CRZT0#j?0mQ|=E6LWrRy}_V$OdkpXy~q=@W>64jr23jJu^JHzk(35z%^#&%KEMo`m5-p!owz$?&3bOENJ?1igprd5=>>RHLDeljNXZtpItE7$mPDN{++ALrV1I}5N`so2z~6&Z3#YAcm+Kx?Q3+>%(d)2~MEM8Jl5XD8jd`8jNg ztQAa(uAEk{<;KvLfn%PA;W}x4jd4u1qDflF;Byt@bN*aYQaa4ty% zEunZ6ixgrUnC%S_(=J-fRh&vn5148W`_)NX0cd;nVt3(}BtK^|Hsm`}Ps$S)=d=gm zR1#@4xo-uE>E@_2b-SOAyBlYAwSRM#L;E?)ByciU=7srqa#p&`hgM~8@1h{hAl0_gOPZ{5ofkLFwla^L_~qi}xn`L; z`8}Dd3gVY#Jb1fAqpR^D1N)_U0VOFroQ`b%XuZx+bAsxdXM!&KC$j{eFF1Af`#s_0 w{xcib?%#7iiAh?zfA!PQi_4|O{>@YW|E61X?YE69fc|0dboFyt=akR{0Qq2a*8l(j literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_naver.imageset/ic_logo_naver@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_naver.imageset/ic_logo_naver@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f904e25cfbb5e5c05f45628af1983aabb52c41 GIT binary patch literal 428 zcmV;d0aN~oP)%036yXpqyyNI?%#H_Gkma5vixINdD&g> z9#9lTQ4|UM^zk)t-$Un}$JSjp$b~;_3p3dgWFI0M7*R-&Q;6Kbgi2zLwSx(j1lh89 zVL&NCj*hfaOU$wM5TlkL&k>C$2ysY|Lx{`};gVooG&}FLxFm?In>!`QPLWn_38vKv z$z)4hVtqHxY$6(|&#pq^rQ;lH;~q(*r_(e|jKpil(X=9$)I^9JVmmjErHv!X!e&}s zU_d4j(O6=8hXLsmyQbAA#5no{(`tbbxkN;x_u0J~OUDk8b8H_F;T${OAWAEn#F|!* z5MUhu2fFzX?kTpnn-5`^SV`^XeEEaXQk(@Ik;M!QiWVTu=sL|X0Vv2= z9OUlAu8^apBljF z%EYC?6(s@$?5<9-4a`al`A+E`ahPPb{rDT>$tU;Mz1cH8=N>~E7<^kl_jq*jq8~l) zKYK{LV6!ay7%i@$q^)A*5>T$8V7$bvkC*ENPv^Cbv!)45mlb+@^|+rRP|&tTv&Ch# z_m!sXK+aAx!4PgoFU60$R4mK96fXu9zPaMGs5eSFoabfvn<-h1NghY0s$4!6>Z~-= zY@LjdXV2U!4_%gHezq!)ZmgZK!pURH`JBh0PF}e{V$l|}d7_sz`}htowP8tb`_l2y zqKy5FPVSvq%Pfz*=GMZOe^sWM>Fs~H?833tZ+w<*`zWNC zy8WY3^_`i?;V)eoKIWPKzA=?cbG2AVw5Mk7o*0k4x@kF&x6gPc``BmKx`H>4RGE&y h SignInViewController { + return SignInViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.signInView + } + + override func viewDidLoad() { + super.viewDidLoad() + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift new file mode 100644 index 0000000..89d09ba --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift @@ -0,0 +1,86 @@ +import UIKit + +import Base +import RxSwift +import RxCocoa + +final class SocialSigninButton: BaseView { + enum SocialType { + case apple + case kakao + case naver + } + + fileprivate let tapGesture = UITapGestureRecognizer() + + private let iconImage = UIImageView() + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textAlignment = .center + } + + init(socialType: SocialType) { + super.init(frame: .zero) + + self.bind(socialType: socialType) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func setup() { + self.layer.cornerRadius = 20 + self.addGestureRecognizer(self.tapGesture) + self.addSubViews([ + self.iconImage, + self.titleLabel + ]) + } + + override func bindConstraints() { + self.iconImage.snp.makeConstraints { make in + make.width.equalTo(24) + make.height.equalTo(24) + make.right.equalTo(self.titleLabel.snp.left).offset(-8) + make.centerY.equalTo(self.titleLabel) + } + + self.titleLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + } + + self.snp.makeConstraints { make in + make.height.equalTo(40) + } + } + + private func bind(socialType: SocialType) { + switch socialType { + case .apple: + self.iconImage.image = UIImage(named: "ic_apple") + self.titleLabel.text = "Sign in with Apple" + self.titleLabel.textColor = UIColor(r: 0, g: 0, b: 0) + self.backgroundColor = UIColor(r: 255, g: 255, b: 255) + + case .kakao: + self.iconImage.image = UIImage(named: "ic_kakao") + self.titleLabel.text = "카카오 계정으로 로그인" + self.titleLabel.textColor = UIColor(r: 56, g: 30, b: 31) + self.backgroundColor = UIColor(r: 247, g: 227, b: 23) + + case .naver: + self.iconImage.image = UIImage(named: "ic_naver") + self.titleLabel.text = "네이버 계정으로 로그인" + self.titleLabel.textColor = UIColor(r: 255, g: 255, b: 255) + self.backgroundColor = UIColor(r: 93, g: 195, b: 81) + } + } +} + +extension Reactive where Base: SocialSigninButton { + var tap: ControlEvent { + return ControlEvent(events: base.tapGesture.rx.event.map { _ in }) + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift b/3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift new file mode 100644 index 0000000..9da2a63 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift @@ -0,0 +1,14 @@ +import UIKit + +import Base +import RxSwift +import Then +import SnapKit + +extension BaseView { + static var _disposeBag = DisposeBag() + + var disposeBag: DisposeBag { + return Self._disposeBag + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift new file mode 100644 index 0000000..81c1857 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -0,0 +1,9 @@ +import UIKit + +extension UIColor { + /// r: 250, g: 250, b: 250 + static let gray0 = UIColor(r: 250, g: 250, b: 250) + + + +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIFontExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIFontExtensions.swift new file mode 100644 index 0000000..0857e9c --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/UIFontExtensions.swift @@ -0,0 +1,27 @@ +import UIKit + +extension UIFont { + static func light(size: CGFloat) -> UIFont? { + return Self.init(name: "AppleSDGothicNeo-Light", size: size) + } + + static func semiBold(size: CGFloat) -> UIFont? { + return Self.init(name: "AppleSDGothicNeo-SemiBold", size: size) + } + + static func bold(size: CGFloat) -> UIFont? { + return Self.init(name: "AppleSDGothicNeo-Bold", size: size) + } + + static func regular(size: CGFloat) -> UIFont? { + return Self.init(name: "AppleSDGothicNeo-Regular", size: size) + } + + static func medium(size: CGFloat) -> UIFont? { + return Self.init(name: "AppleSDGothicNeo-Medium", size: size) + } + + static func extraBold(size: CGFloat) -> UIFont? { + return Self.init(name: "AppleSDGothicNeoEB00", size: size) + } +} diff --git a/3dollar-in-my-pocket-manager/resources/fonts/AppleSDGothicNeoEB00.ttf b/3dollar-in-my-pocket-manager/resources/fonts/AppleSDGothicNeoEB00.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d293d595ab22eda5bfb1271b95cdd228ecd5a51d GIT binary patch literal 3785784 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 z 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

L)}YlIM~4^|X;kh`9&`4)v?@dJKd@%Syz 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]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%0DbbV0)yd`)7oa*+ZaB&g1 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 Os@jV4Ku|m)9tL8gHw7S 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

WOFDFvT=&eH*Xh&gL4JOko&b#| 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⁢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 z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t{zv{t z{zv{t{zv{t{zv{t{zv{t{zv{t{zv{N{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw?{wMw? z{wMw?{wMw?{wMw?{wMxt{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY{%8JY z{%8JY{%8Id{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli z{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulli{ulmN z{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82 z{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82 z{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82{#X82 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 literal 0 HcmV?d00001 From d2818be19a898c01ea2aa5b3a2cf0bef2f769f4b Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 27 Feb 2022 16:17:33 +0900 Subject: [PATCH 004/166] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4?= =?UTF-8?q?=ED=86=A1=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=A7=A4=EB=8B=88?= =?UTF-8?q?=EC=A0=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 99 ++++++++++++++++++- .../AppDelegate.swift | 7 -- .../SceneDelegate.swift | 17 ++-- .../extensions/StringExtensions.swift | 7 ++ .../social-sign-in/KakaoManager.swift | 80 +++++++++++++++ .../models/errors/BaseError.swift | 28 ++++++ .../strings/en.lproj/Localizations.strings | 5 + 7 files changed, 228 insertions(+), 15 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/extensions/StringExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift create mode 100644 3dollar-in-my-pocket-manager/models/errors/BaseError.swift create mode 100644 3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index b3b58a1..63aeab6 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -25,6 +25,13 @@ 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A827CB456F00278E14 /* SignInViewController.swift */; }; 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED883AA27CB46BD00278E14 /* Base.framework */; platformFilter = ios; }; 6EE0CF9927CB51F00027A426 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED883AA27CB46BD00278E14 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */; }; + 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */; }; + 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */; }; + 6EE0CFA527CB573E0027A426 /* KakaoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFA427CB573E0027A426 /* KakaoManager.swift */; }; + 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */; }; + 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EE0CFAF27CB5BA40027A426 /* Localizations.strings */; }; + 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -67,6 +74,10 @@ 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; 6ED883A827CB456F00278E14 /* SignInViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInViewController.swift; sourceTree = ""; }; 6ED883AA27CB46BD00278E14 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6EE0CFA427CB573E0027A426 /* KakaoManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoManager.swift; sourceTree = ""; }; + 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseError.swift; sourceTree = ""; }; + 6EE0CFAE27CB5BA40027A426 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizations.strings; sourceTree = ""; }; + 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -74,12 +85,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */, + 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */, + 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -123,6 +137,8 @@ 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { isa = PBXGroup; children = ( + 6EE0CFA627CB5B620027A426 /* models */, + 6EE0CF9B27CB54A70027A426 /* managers */, 6ED883A027CB3C3A00278E14 /* resources */, 6ED8839D27CB3BA600278E14 /* extensions */, 6ED8839527CB39EE00278E14 /* domains */, @@ -175,6 +191,7 @@ 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */, 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */, 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */, + 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -182,6 +199,7 @@ 6ED883A027CB3C3A00278E14 /* resources */ = { isa = PBXGroup; children = ( + 6EE0CFAA27CB5B970027A426 /* strings */, 6ED883A127CB3C5D00278E14 /* fonts */, ); path = resources; @@ -195,6 +213,46 @@ path = fonts; sourceTree = ""; }; + 6EE0CF9B27CB54A70027A426 /* managers */ = { + isa = PBXGroup; + children = ( + 6EE0CF9C27CB54AE0027A426 /* social-sign-in */, + ); + path = managers; + sourceTree = ""; + }; + 6EE0CF9C27CB54AE0027A426 /* social-sign-in */ = { + isa = PBXGroup; + children = ( + 6EE0CFA427CB573E0027A426 /* KakaoManager.swift */, + ); + path = "social-sign-in"; + sourceTree = ""; + }; + 6EE0CFA627CB5B620027A426 /* models */ = { + isa = PBXGroup; + children = ( + 6EE0CFA727CB5B650027A426 /* errors */, + ); + path = models; + sourceTree = ""; + }; + 6EE0CFA727CB5B650027A426 /* errors */ = { + isa = PBXGroup; + children = ( + 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */, + ); + path = errors; + sourceTree = ""; + }; + 6EE0CFAA27CB5B970027A426 /* strings */ = { + isa = PBXGroup; + children = ( + 6EE0CFAF27CB5BA40027A426 /* Localizations.strings */, + ); + path = strings; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -218,6 +276,9 @@ 6ED8838F27CB39E300278E14 /* RxCocoa */, 6ED8839127CB39E300278E14 /* RxRelay */, 6ED8839327CB39E300278E14 /* RxSwift */, + 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */, + 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */, + 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -251,6 +312,7 @@ 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */, 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */, 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */, + 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -283,6 +345,7 @@ buildActionMask = 2147483647; files = ( 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, + 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */, 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, ); @@ -298,11 +361,14 @@ 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, + 6EE0CFA527CB573E0027A426 /* KakaoManager.swift in Sources */, 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */, 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */, + 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, + 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -317,6 +383,14 @@ name = LaunchScreen.storyboard; sourceTree = ""; }; + 6EE0CFAF27CB5BA40027A426 /* Localizations.strings */ = { + isa = PBXVariantGroup; + children = ( + 6EE0CFAE27CB5BA40027A426 /* en */, + ); + name = Localizations.strings; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -457,7 +531,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager"; + PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager-dev"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -542,6 +616,14 @@ kind = branch; }; }; + 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kakao/kakao-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -570,6 +652,21 @@ package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; productName = RxSwift; }; + 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKAuth; + }; + 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKCommon; + }; + 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKUser; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 6EB94E9827CB208E00609E77 /* Project object */; diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index f3ed6d0..1afb645 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -1,10 +1,3 @@ -// -// AppDelegate.swift -// 3dollar-in-my-pocket-manager -// -// Created by Hyun Sik Yoo on 2022/02/27. -// - import UIKit @main diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index d852d8a..90c27d7 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -1,12 +1,7 @@ -// -// SceneDelegate.swift -// 3dollar-in-my-pocket-manager -// -// Created by Hyun Sik Yoo on 2022/02/27. -// - import UIKit +import KakaoSDKAuth + class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? @@ -23,6 +18,14 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { self.window?.rootViewController = SignInViewController.instance() self.window?.makeKeyAndVisible() } + + func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { + if let url = URLContexts.first?.url { + if (AuthApi.isKakaoTalkLoginUrl(url)) { + _ = AuthController.handleOpenUrl(url: url) + } + } + } func sceneDidDisconnect(_ scene: UIScene) { // Called as the scene is being released by the system. diff --git a/3dollar-in-my-pocket-manager/extensions/StringExtensions.swift b/3dollar-in-my-pocket-manager/extensions/StringExtensions.swift new file mode 100644 index 0000000..53e3c65 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/StringExtensions.swift @@ -0,0 +1,7 @@ +import Foundation + +extension String { + var localized: String { + return NSLocalizedString(self, tableName: "Localizations", value: self, comment: "") + } +} diff --git a/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift b/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift new file mode 100644 index 0000000..c96b190 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift @@ -0,0 +1,80 @@ +import RxSwift +import KakaoSDKUser +import KakaoSDKCommon + +struct KakaoManager { + /// 카카오톡으로 로그인을 하고 성공하면 token을 반환합니다. + func signIn() -> Observable { + return .create { observer in + if (UserApi.isKakaoTalkLoginAvailable()) { + self.signInWithKakaoTalk(observer: observer) + } else { + self.signInWithKakaoAccount(observer: observer) + } + + return Disposables.create() + } + } + + /// 카카오톡으로 로그인하기 + private func signInWithKakaoTalk(observer: AnyObserver) { + UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in + if let sdkError = error as? SdkError { + if sdkError.isClientFailed { + switch sdkError.getClientError().reason { + case .Cancelled: + break + + default: + let errorMessage = sdkError.getApiError().info?.msg ?? "" + let error = BaseError.custom(errorMessage) + + observer.onError(error) + } + } + } + else { + if let accessToken = oauthToken?.accessToken { + observer.onNext(accessToken) + observer.onCompleted() + } else { + let error = BaseError.custom("토큰이 비었습니다.") + + observer.onError(error) + } + } + } + } + + /// 카카오 웹뷰로 로그인하기 + private func signInWithKakaoAccount(observer: AnyObserver) { + UserApi.shared.loginWithKakaoAccount {(oauthToken, error) in + if let error = error { + if let sdkError = error as? SdkError { + if sdkError.isClientFailed { + switch sdkError.getClientError().reason { + case .Cancelled: + break + + default: + let errorMessage = sdkError.getApiError().info?.msg ?? "" + let error = BaseError.custom(errorMessage) + + observer.onError(error) + } + } + } + } + else { + if let accessToken = oauthToken?.accessToken { + observer.onNext(accessToken) + observer.onCompleted() + } else { + let error = BaseError.custom("토큰이 비었습니다.") + + observer.onError(error) + } + } + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/errors/BaseError.swift b/3dollar-in-my-pocket-manager/models/errors/BaseError.swift new file mode 100644 index 0000000..1c124ff --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/errors/BaseError.swift @@ -0,0 +1,28 @@ +import Foundation + +enum BaseError: LocalizedError { + case custom(String) + case unknown + case timeout + case failDecoding + case nilValue + + var errorDescription: String? { + switch self { + case .custom(let message): + return message + + case .unknown: + return "error_unknown".localized + + case .timeout: + return "error_time_out".localized + + case .failDecoding: + return "error_fail_decode".localized + + case .nilValue: + return "error_nil_value".localized + } + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings new file mode 100644 index 0000000..717295d --- /dev/null +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -0,0 +1,5 @@ +// Error +"error_unknown" = "알 수 없는 에러입니다."; +"error_time_out" = "알 수 없는 에러입니다.\n잠시후 다시 시도해주세요."; +"error_fail_decode" = "알 수 없는 형태의 데이터입니다."; +"error_nil_value" = "값이 없습니다."; From 2c490573b97da06d7b7dc9516903b08f3ce71ec9 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 27 Feb 2022 16:43:50 +0900 Subject: [PATCH 005/166] =?UTF-8?q?feat:=20=EC=95=A0=ED=94=8C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EB=A7=A4=EB=8B=88=EC=A0=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 45 ++++++++++-- .../membership/sign-in/SignInReactor.swift | 44 ++++++++++++ .../sign-in/subviews/SocialSigninButton.swift | 6 -- .../social-sign-in/AppleSignInManager.swift | 71 +++++++++++++++++++ ...Manager.swift => KakaoSignInManager.swift} | 8 ++- .../models/presentation/SocialType.swift | 7 ++ 6 files changed, 170 insertions(+), 11 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift create mode 100644 3dollar-in-my-pocket-manager/managers/social-sign-in/AppleSignInManager.swift rename 3dollar-in-my-pocket-manager/managers/social-sign-in/{KakaoManager.swift => KakaoSignInManager.swift} (93%) create mode 100644 3dollar-in-my-pocket-manager/models/presentation/SocialType.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 63aeab6..fcc435e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -28,10 +28,14 @@ 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */; }; 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */; }; 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */; }; - 6EE0CFA527CB573E0027A426 /* KakaoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFA427CB573E0027A426 /* KakaoManager.swift */; }; + 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFA427CB573E0027A426 /* KakaoSignInManager.swift */; }; 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */; }; 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EE0CFAF27CB5BA40027A426 /* Localizations.strings */; }; 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */; }; + 6EE0CFB327CB5D560027A426 /* SignInReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */; }; + 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFB527CB5D850027A426 /* ReactorKit */; }; + 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB827CB5DF90027A426 /* SocialType.swift */; }; + 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -74,10 +78,13 @@ 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; 6ED883A827CB456F00278E14 /* SignInViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInViewController.swift; sourceTree = ""; }; 6ED883AA27CB46BD00278E14 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; - 6EE0CFA427CB573E0027A426 /* KakaoManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoManager.swift; sourceTree = ""; }; + 6EE0CFA427CB573E0027A426 /* KakaoSignInManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoSignInManager.swift; sourceTree = ""; }; 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseError.swift; sourceTree = ""; }; 6EE0CFAE27CB5BA40027A426 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizations.strings; sourceTree = ""; }; 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; + 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInReactor.swift; sourceTree = ""; }; + 6EE0CFB827CB5DF90027A426 /* SocialType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialType.swift; sourceTree = ""; }; + 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleSignInManager.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -93,6 +100,7 @@ 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */, + 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -173,6 +181,7 @@ 6ED8839A27CB3A6C00278E14 /* subviews */, 6ED8839827CB3A1700278E14 /* SignInView.swift */, 6ED883A827CB456F00278E14 /* SignInViewController.swift */, + 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */, ); path = "sign-in"; sourceTree = ""; @@ -224,7 +233,8 @@ 6EE0CF9C27CB54AE0027A426 /* social-sign-in */ = { isa = PBXGroup; children = ( - 6EE0CFA427CB573E0027A426 /* KakaoManager.swift */, + 6EE0CFA427CB573E0027A426 /* KakaoSignInManager.swift */, + 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */, ); path = "social-sign-in"; sourceTree = ""; @@ -232,6 +242,7 @@ 6EE0CFA627CB5B620027A426 /* models */ = { isa = PBXGroup; children = ( + 6EE0CFB727CB5DED0027A426 /* presentation */, 6EE0CFA727CB5B650027A426 /* errors */, ); path = models; @@ -253,6 +264,14 @@ path = strings; sourceTree = ""; }; + 6EE0CFB727CB5DED0027A426 /* presentation */ = { + isa = PBXGroup; + children = ( + 6EE0CFB827CB5DF90027A426 /* SocialType.swift */, + ); + path = presentation; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -279,6 +298,7 @@ 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */, 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */, 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */, + 6EE0CFB527CB5D850027A426 /* ReactorKit */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -313,6 +333,7 @@ 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */, 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */, 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, + 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -360,14 +381,17 @@ files = ( 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, + 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, - 6EE0CFA527CB573E0027A426 /* KakaoManager.swift in Sources */, + 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */, 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, + 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, + 6EE0CFB327CB5D560027A426 /* SignInReactor.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -624,6 +648,14 @@ minimumVersion = 2.0.0; }; }; + 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ReactorKit/ReactorKit.git"; + requirement = { + branch = master; + kind = branch; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -667,6 +699,11 @@ package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; productName = KakaoSDKUser; }; + 6EE0CFB527CB5D850027A426 /* ReactorKit */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */; + productName = ReactorKit; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 6EB94E9827CB208E00609E77 /* Project object */; diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift new file mode 100644 index 0000000..90c8baf --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift @@ -0,0 +1,44 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class SignInReactor: Reactor { + enum Action { + case tapSignInButton(socialType: SocialType) + } + + enum Mutation { + case pushSignUp(socialType: SocialType, token: String) + case pushWait + case goToMain + } + + struct State { + + } + + var initialState = State() + let pushSignUpPublisher = PublishRelay<(SocialType, String)>() + let pushWaitPublisher = PublishRelay() + let goToMainPublisher = PublishRelay() + private let kakaoSignInManager: KakaoSignInManagerProtocol + private let appleSignInManager: AppleSignInManagerProtocol + + init( + kakaoManager: KakaoSignInManagerProtocol, + appleSignInManager: AppleSignInManagerProtocol + ) { + self.kakaoSignInManager = kakaoManager + self.appleSignInManager = appleSignInManager + } + + func mutate(action: Action) -> Observable { + return .empty() + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + return newState + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift index 89d09ba..cfcfeb3 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift @@ -5,12 +5,6 @@ import RxSwift import RxCocoa final class SocialSigninButton: BaseView { - enum SocialType { - case apple - case kakao - case naver - } - fileprivate let tapGesture = UITapGestureRecognizer() private let iconImage = UIImageView() diff --git a/3dollar-in-my-pocket-manager/managers/social-sign-in/AppleSignInManager.swift b/3dollar-in-my-pocket-manager/managers/social-sign-in/AppleSignInManager.swift new file mode 100644 index 0000000..9929a5e --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/social-sign-in/AppleSignInManager.swift @@ -0,0 +1,71 @@ +import AuthenticationServices + +import RxSwift + +protocol AppleSignInManagerProtocol { + func signIn() -> Observable +} + +final class AppleSigninManager: NSObject, AppleSignInManagerProtocol { + static let shared = AppleSigninManager() + + private var publisher = PublishSubject() + + func signIn() -> Observable { + self.publisher = PublishSubject() + + let appleIDProvider = ASAuthorizationAppleIDProvider() + let request = appleIDProvider.createRequest() + + request.requestedScopes = [.fullName, .email] + + let authController = ASAuthorizationController(authorizationRequests: [request]) + + authController.delegate = self + authController.performRequests() + return self.publisher + } +} + +extension AppleSigninManager: ASAuthorizationControllerDelegate { + func authorizationController( + controller: ASAuthorizationController, + didCompleteWithError error: Error + ) { + if let authorizationError = error as? ASAuthorizationError { + switch authorizationError.code { + case .canceled: + break + + case .failed, .invalidResponse, .notHandled, .unknown: + let error = BaseError.custom(authorizationError.localizedDescription) + + self.publisher.onError(error) + + default: + let error = BaseError.custom(error.localizedDescription) + + self.publisher.onError(error) + } + } else { + let error = BaseError.custom("error is instance of \(error.self). not ASAuthorizationError") + + self.publisher.onError(error) + } + } + + func authorizationController( + controller: ASAuthorizationController, + didCompleteWithAuthorization authorization: ASAuthorization + ) { + if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential, + let accessToken = String(data: appleIDCredential.identityToken!, encoding: .utf8) { + self.publisher.onNext(accessToken) + self.publisher.onCompleted() + } else { + let signInError = BaseError.custom("credential is not ASAuthorizationAppleIDCredential") + + self.publisher.onError(signInError) + } + } +} diff --git a/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift b/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoSignInManager.swift similarity index 93% rename from 3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift rename to 3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoSignInManager.swift index c96b190..57570a5 100644 --- a/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoManager.swift +++ b/3dollar-in-my-pocket-manager/managers/social-sign-in/KakaoSignInManager.swift @@ -2,7 +2,13 @@ import RxSwift import KakaoSDKUser import KakaoSDKCommon -struct KakaoManager { +protocol KakaoSignInManagerProtocol { + func signIn() -> Observable +} + +final class KakaoSignInManager: KakaoSignInManagerProtocol { + static let shared = KakaoSignInManager() + /// 카카오톡으로 로그인을 하고 성공하면 token을 반환합니다. func signIn() -> Observable { return .create { observer in diff --git a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift new file mode 100644 index 0000000..3c4432c --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift @@ -0,0 +1,7 @@ +import Foundation + +enum SocialType { + case apple + case kakao + case naver +} From 5b52271aee0c31740d62c77470b886ed9c279cda Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 27 Feb 2022 16:56:40 +0900 Subject: [PATCH 006/166] =?UTF-8?q?wip:=20HTTPUtils=EA=B5=AC=ED=98=84?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 39 ++++++++++ 3dollar-in-my-pocket-manager/Info.plist | 2 + .../extensions/BundleExtensions.swift | 11 +++ .../utils/HTTPUtils.swift | 76 +++++++++++++++++++ .../utils/UserDefaultsUtils.swift | 33 ++++++++ 5 files changed, 161 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/utils/HTTPUtils.swift create mode 100644 3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index fcc435e..d623686 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -36,6 +36,10 @@ 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFB527CB5D850027A426 /* ReactorKit */; }; 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB827CB5DF90027A426 /* SocialType.swift */; }; 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */; }; + 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */; }; + 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFC027CB64E40027A426 /* Alamofire */; }; + 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */; }; + 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -85,6 +89,9 @@ 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInReactor.swift; sourceTree = ""; }; 6EE0CFB827CB5DF90027A426 /* SocialType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialType.swift; sourceTree = ""; }; 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleSignInManager.swift; sourceTree = ""; }; + 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPUtils.swift; sourceTree = ""; }; + 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleExtensions.swift; sourceTree = ""; }; + 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -97,6 +104,7 @@ 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, + 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */, @@ -145,6 +153,7 @@ 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { isa = PBXGroup; children = ( + 6EE0CFBC27CB64B00027A426 /* utils */, 6EE0CFA627CB5B620027A426 /* models */, 6EE0CF9B27CB54A70027A426 /* managers */, 6ED883A027CB3C3A00278E14 /* resources */, @@ -201,6 +210,7 @@ 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */, 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */, 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */, + 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -272,6 +282,15 @@ path = presentation; sourceTree = ""; }; + 6EE0CFBC27CB64B00027A426 /* utils */ = { + isa = PBXGroup; + children = ( + 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */, + 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */, + ); + path = utils; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -299,6 +318,7 @@ 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */, 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */, 6EE0CFB527CB5D850027A426 /* ReactorKit */, + 6EE0CFC027CB64E40027A426 /* Alamofire */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -334,6 +354,7 @@ 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */, 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */, + 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -384,11 +405,14 @@ 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, + 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */, + 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, + 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SignInReactor.swift in Sources */, @@ -537,6 +561,7 @@ 6EB94EB527CB209000609E77 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + API_URL = "https://dev.threedollars.co.kr/"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -566,6 +591,7 @@ 6EB94EB627CB209000609E77 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + API_URL = "https://dev.threedollars.co.kr/"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -656,6 +682,14 @@ kind = branch; }; }; + 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Alamofire/Alamofire.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -704,6 +738,11 @@ package = 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */; productName = ReactorKit; }; + 6EE0CFC027CB64E40027A426 /* Alamofire */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */; + productName = Alamofire; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 6EB94E9827CB208E00609E77 /* Project object */; diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 0eb786d..71559f4 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,6 +2,8 @@ + API_URL + $(API_URL) UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift new file mode 100644 index 0000000..24c5ced --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift @@ -0,0 +1,11 @@ +import Foundation + +extension Bundle { + static var apiURL: String { + guard let apiURL = Bundle.main.infoDictionary?["API_URL"] as? String else { + fatalError("API_URL이 정의되지 않았습니다.") + } + + return apiURL + } +} diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift new file mode 100644 index 0000000..4fbc297 --- /dev/null +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -0,0 +1,76 @@ +import Foundation + +import Alamofire + +struct HTTPUtils { + static let url = Bundle.apiURL + + static let defaultSession: Session = { + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 4 + + return Session(configuration: configuration) + }() + + static let fileUploadSession: Session = { + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 30 + + return Session(configuration: configuration) + }() + + static func jsonHeader() -> HTTPHeaders { + var headers = ["Accept": "application/json"] as HTTPHeaders + + headers.add(self.defaultUserAgent) + return headers + } + + static func defaultHeader() -> HTTPHeaders { + var headers = ["Authorization": UserDefaultsUtil().getUserToken()] as HTTPHeaders + + headers.add(self.defaultUserAgent) + return headers + } + + static func jsonWithTokenHeader() -> HTTPHeaders { + var headers = [ + "Accept": "application/json", + "Authorization": UserDefaultsUtil().getUserToken() + ] as HTTPHeaders + + headers.add(self.defaultUserAgent) + return headers + } + + // Timeout header 테스트용으로 추가하는 함수 + static func addTimeoutHeader(headers: HTTPHeaders) -> HTTPHeaders { + let timeOutHeader = HTTPHeader(name: "X-3DOLLAR-SLEEP-MILLISECONDS", value: "4000") + var newHeaders = headers + + newHeaders.add(timeOutHeader) + return newHeaders + } + + static let defaultUserAgent: HTTPHeader = { + let info = Bundle.main.infoDictionary + let executable = (info?[kCFBundleExecutableKey as String] as? String) ?? + (ProcessInfo.processInfo.arguments.first?.split(separator: "/").last.map(String.init)) ?? + "Unknown" + let bundle = info?[kCFBundleIdentifierKey as String] as? String ?? "Unknown" + let appVersion = info?["CFBundleShortVersionString"] as? String ?? "Unknown" + let appBuild = info?[kCFBundleVersionKey as String] as? String ?? "Unknown" + + let osNameVersion: String = { + let version = ProcessInfo.processInfo.operatingSystemVersion + let versionString = "\(version.majorVersion).\(version.minorVersion).\(version.patchVersion)" + let osName: String = "iOS" + + return "\(osName) \(versionString)" + }() + + let userAgent = "\(appVersion) (\(bundle); build:\(appBuild); \(osNameVersion))" + + return .userAgent(userAgent) + }() +} diff --git a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift new file mode 100644 index 0000000..2b473d1 --- /dev/null +++ b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift @@ -0,0 +1,33 @@ +import Foundation + +struct UserDefaultsUtils { + private let KEY_TOKEN = "KEY_TOKEN" + private let KEY_USER_ID = "KEY_USER_ID" + + let instance: UserDefaults + + init(name: String? = nil) { + if let name = name { + UserDefaults().removePersistentDomain(forName: name) + instance = UserDefaults(suiteName: name)! + } else { + instance = UserDefaults.standard + } + } + + func setUserToken(token: String) { + self.instance.set(token, forKey: UserDefaultsUtil.KEY_TOKEN) + } + + func getUserToken() -> String { + return self.instance.string(forKey: UserDefaultsUtil.KEY_TOKEN) ?? "" + } + + func setUserId(id: Int) { + self.instance.set(id, forKey: UserDefaultsUtil.KEY_USER_ID) + } + + func getUserId() -> Int { + return self.instance.integer(forKey: UserDefaultsUtil.KEY_USER_ID) + } +} From 69ee53e8aecba0a25567bd62321810e62c51e2c9 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 27 Feb 2022 20:55:19 +0900 Subject: [PATCH 007/166] =?UTF-8?q?wip:=20SignInReacotr=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 80 +++++++++++++++++-- .../membership/sign-in/SignInReactor.swift | 5 +- .../extensions/AFDataResponseExtensions.swift | 13 +++ .../extensions/ObserverExtensions.swift | 39 +++++++++ .../models/dto/request/LoginRequest.swift | 12 +++ .../models/dto/request/Requestable.swift | 3 + .../models/dto/response/LoginResponse.swift | 18 +++++ .../dto/response/ResponseContainer.swift | 19 +++++ .../models/errors/HTTPError.swift | 30 +++++++ .../models/presentation/SocialType.swift | 8 +- .../strings/en.lproj/Localizations.strings | 8 ++ .../services/AuthService.swift | 31 +++++++ .../utils/HTTPUtils.swift | 13 +-- .../utils/UserDefaultsUtils.swift | 26 +++--- 14 files changed, 269 insertions(+), 36 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/extensions/AFDataResponseExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/Requestable.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/LoginResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/ResponseContainer.swift create mode 100644 3dollar-in-my-pocket-manager/models/errors/HTTPError.swift create mode 100644 3dollar-in-my-pocket-manager/services/AuthService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index d623686..5233caf 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -7,6 +7,16 @@ objects = { /* Begin PBXBuildFile section */ + 6E1F549E27CB76520050BBBA /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; + 6E1F549F27CB76520050BBBA /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; + 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; + 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */; }; + 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AB27CB94EB0050BBBA /* Requestable.swift */; }; + 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AD27CB97D20050BBBA /* AFDataResponseExtensions.swift */; }; + 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; + 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; + 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -23,8 +33,6 @@ 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */; }; 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */; }; 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A827CB456F00278E14 /* SignInViewController.swift */; }; - 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED883AA27CB46BD00278E14 /* Base.framework */; platformFilter = ios; }; - 6EE0CF9927CB51F00027A426 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6ED883AA27CB46BD00278E14 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */; }; 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */; }; 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */; }; @@ -53,13 +61,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EE0CF9A27CB51F00027A426 /* Embed Frameworks */ = { + 6E1F54A027CB76520050BBBA /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EE0CF9927CB51F00027A426 /* Base.framework in Embed Frameworks */, + 6E1F549F27CB76520050BBBA /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -68,6 +76,15 @@ /* Begin PBXFileReference section */ 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; + 6E1F549D27CB76520050BBBA /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-dnitfhvnkrdaryaqvbwknfooeggx/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; + 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; + 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequest.swift; sourceTree = ""; }; + 6E1F54AB27CB94EB0050BBBA /* Requestable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Requestable.swift; sourceTree = ""; }; + 6E1F54AD27CB97D20050BBBA /* AFDataResponseExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AFDataResponseExtensions.swift; sourceTree = ""; }; + 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObserverExtensions.swift; sourceTree = ""; }; + 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; + 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -81,7 +98,6 @@ 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFontExtensions.swift; sourceTree = ""; }; 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; 6ED883A827CB456F00278E14 /* SignInViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInViewController.swift; sourceTree = ""; }; - 6ED883AA27CB46BD00278E14 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6EE0CFA427CB573E0027A426 /* KakaoSignInManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoSignInManager.swift; sourceTree = ""; }; 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseError.swift; sourceTree = ""; }; 6EE0CFAE27CB5BA40027A426 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizations.strings; sourceTree = ""; }; @@ -106,8 +122,8 @@ 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, + 6E1F549E27CB76520050BBBA /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, - 6EE0CF9827CB51F00027A426 /* Base.framework in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, ); @@ -127,11 +143,46 @@ 6E1AA1B827CB215700C96D92 /* Frameworks */ = { isa = PBXGroup; children = ( - 6ED883AA27CB46BD00278E14 /* Base.framework */, + 6E1F549D27CB76520050BBBA /* Base.framework */, ); name = Frameworks; sourceTree = ""; }; + 6E1F54A127CB785B0050BBBA /* dto */ = { + isa = PBXGroup; + children = ( + 6E1F54A827CB7D540050BBBA /* request */, + 6E1F54A727CB7C350050BBBA /* response */, + ); + path = dto; + sourceTree = ""; + }; + 6E1F54A427CB79B80050BBBA /* services */ = { + isa = PBXGroup; + children = ( + 6E1F54A527CB7A130050BBBA /* AuthService.swift */, + ); + path = services; + sourceTree = ""; + }; + 6E1F54A727CB7C350050BBBA /* response */ = { + isa = PBXGroup; + children = ( + 6E1F54A227CB79120050BBBA /* LoginResponse.swift */, + 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */, + ); + path = response; + sourceTree = ""; + }; + 6E1F54A827CB7D540050BBBA /* request */ = { + isa = PBXGroup; + children = ( + 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */, + 6E1F54AB27CB94EB0050BBBA /* Requestable.swift */, + ); + path = request; + sourceTree = ""; + }; 6EB94E9727CB208E00609E77 = { isa = PBXGroup; children = ( @@ -153,6 +204,7 @@ 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { isa = PBXGroup; children = ( + 6E1F54A427CB79B80050BBBA /* services */, 6EE0CFBC27CB64B00027A426 /* utils */, 6EE0CFA627CB5B620027A426 /* models */, 6EE0CF9B27CB54A70027A426 /* managers */, @@ -211,6 +263,8 @@ 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */, 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */, 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */, + 6E1F54AD27CB97D20050BBBA /* AFDataResponseExtensions.swift */, + 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -252,6 +306,7 @@ 6EE0CFA627CB5B620027A426 /* models */ = { isa = PBXGroup; children = ( + 6E1F54A127CB785B0050BBBA /* dto */, 6EE0CFB727CB5DED0027A426 /* presentation */, 6EE0CFA727CB5B650027A426 /* errors */, ); @@ -262,6 +317,7 @@ isa = PBXGroup; children = ( 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */, + 6E1F54B127CB98540050BBBA /* HTTPError.swift */, ); path = errors; sourceTree = ""; @@ -301,7 +357,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6EE0CF9A27CB51F00027A426 /* Embed Frameworks */, + 6E1F54A027CB76520050BBBA /* Embed Frameworks */, ); buildRules = ( ); @@ -402,17 +458,25 @@ files = ( 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, + 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, + 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, + 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, + 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, + 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, + 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, + 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, + 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SignInReactor.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift index 90c8baf..37a8af2 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift @@ -23,13 +23,16 @@ final class SignInReactor: Reactor { let goToMainPublisher = PublishRelay() private let kakaoSignInManager: KakaoSignInManagerProtocol private let appleSignInManager: AppleSignInManagerProtocol + private let authService: AuthServiceProtocol init( kakaoManager: KakaoSignInManagerProtocol, - appleSignInManager: AppleSignInManagerProtocol + appleSignInManager: AppleSignInManagerProtocol, + authService: AuthServiceProtocol ) { self.kakaoSignInManager = kakaoManager self.appleSignInManager = appleSignInManager + self.authService = authService } func mutate(action: Action) -> Observable { diff --git a/3dollar-in-my-pocket-manager/extensions/AFDataResponseExtensions.swift b/3dollar-in-my-pocket-manager/extensions/AFDataResponseExtensions.swift new file mode 100644 index 0000000..93cdc44 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/AFDataResponseExtensions.swift @@ -0,0 +1,13 @@ +import Alamofire + +extension AFDataResponse { + func isSuccess() -> Bool { + if let statusCode = self.response?.statusCode, + statusCode == 200 { + return true + } else { + return false + } + } +} + diff --git a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift new file mode 100644 index 0000000..7e55781 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift @@ -0,0 +1,39 @@ +import RxSwift +import Alamofire +import Base + +extension AnyObserver { + func processHTTPError(response: AFDataResponse) { + if let statusCode = response.response?.statusCode { + if let httpError = HTTPError(rawValue: statusCode) { + self.onError(httpError) + } else { + if let value = response.value { + if let responseContainer: ResponseContainer = JsonUtils.decode(object: value) { + self.onError(BaseError.custom(responseContainer.message)) + } + } else { + self.onError(BaseError.unknown) + } + } + } else { + switch response.result { + case .failure(let error): + if error._code == 13 { + self.onError(BaseError.timeout) + } + default: + break + } + } + } + + func processValue(response: DataResponse) { + if let value = response.value { + self.onNext(value as! Element) + self.onCompleted() + } else { + self.onError(BaseError.nilValue) + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift new file mode 100644 index 0000000..dc5d23d --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift @@ -0,0 +1,12 @@ +import Foundation + +struct LoginRequest: Requestable { + let socialType: SocialType + let token: String + + var params: [String : Any] { + return [ + "socialType": socialType.rawValue + ] + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/Requestable.swift b/3dollar-in-my-pocket-manager/models/dto/request/Requestable.swift new file mode 100644 index 0000000..742f856 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/Requestable.swift @@ -0,0 +1,3 @@ +protocol Requestable { + var params: [String: Any] { get } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/LoginResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/LoginResponse.swift new file mode 100644 index 0000000..9095085 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/LoginResponse.swift @@ -0,0 +1,18 @@ +import Foundation + +struct LoginResponse: Decodable { + let bossId: String + let token: String + + enum CodingKeys: String, CodingKey { + case bossId + case token + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.bossId = try values.decodeIfPresent(String.self, forKey: .bossId) ?? "" + self.token = try values.decodeIfPresent(String.self, forKey: .token) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/ResponseContainer.swift b/3dollar-in-my-pocket-manager/models/dto/response/ResponseContainer.swift new file mode 100644 index 0000000..e533ab8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/ResponseContainer.swift @@ -0,0 +1,19 @@ +struct ResponseContainer: Decodable { + let data: T? + let message: String + let resultCode: String + + enum CodingKeys: String, CodingKey { + case data + case message + case resultCode + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.data = try values.decodeIfPresent(T.self, forKey: .data) + self.message = try values.decodeIfPresent(String.self, forKey: .message) ?? "" + self.resultCode = try values.decodeIfPresent(String.self, forKey: .resultCode) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift b/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift new file mode 100644 index 0000000..9d40558 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift @@ -0,0 +1,30 @@ +public enum HTTPError: Int, Error { + case badRequest = 400 + case unauthorized = 401 + case forbidden = 403 + case notFound = 404 + case internalServierError = 500 + case badGateway = 502 + case maintenance = 503 +} + +extension HTTPError { + public var description: String { + switch self { + case .badRequest: + return "http_error_bad_request".localized + case .unauthorized: + return "http_error_unauthorized".localized + case .forbidden: + return "http_error_forbidden".localized + case .notFound: + return "http_error_not_found".localized + case .internalServierError: + return "http_error_internal_server_error".localized + case .badGateway: + return "http_error_bad_gateway".localized + case .maintenance: + return "http_error_maintenance".localized + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift index 3c4432c..e1ae9ac 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift @@ -1,7 +1,7 @@ import Foundation -enum SocialType { - case apple - case kakao - case naver +enum SocialType: String { + case apple = "APPLE" + case kakao = "GOOGLE" + case naver = "NAVER" } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 717295d..bf588b8 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -3,3 +3,11 @@ "error_time_out" = "알 수 없는 에러입니다.\n잠시후 다시 시도해주세요."; "error_fail_decode" = "알 수 없는 형태의 데이터입니다."; "error_nil_value" = "값이 없습니다."; +"http_error_bad_request" = "요청에 오류가 있습니다.\n다시 확인해주세요."; +"http_error_unauthorized" = "세션이 만료되었습니다.\n다시 로그인해주세요."; +"http_error_forbidden" = "탈퇴한 사용자입니다."; +"http_error_not_found" = "없는 데이터입니다."; +"http_error_internal_server_error" = "서버에서 오류가 발생했습니다.\n잠시 후 다시 시도해주세요!"; +"http_error_bad_gateway" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; +"http_error_maintenance" = "서버 점검중입니다.\n잠시 후 다시 시도해주세요."; +"http_error_timeout" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift new file mode 100644 index 0000000..683f806 --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -0,0 +1,31 @@ +import Alamofire +import RxSwift + +protocol AuthServiceProtocol { + func login(socialType: SocialType, token: String) -> Observable +} + +struct AuthService: AuthServiceProtocol { + func login(socialType: SocialType, token: String) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/auth/login" + let parameters = LoginRequest(socialType: socialType, token: token).params + let headers = HTTPUtils.jsonHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .post, + parameters: parameters, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } +} diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift index 4fbc297..ddf9baa 100644 --- a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -27,7 +27,7 @@ struct HTTPUtils { } static func defaultHeader() -> HTTPHeaders { - var headers = ["Authorization": UserDefaultsUtil().getUserToken()] as HTTPHeaders + var headers = ["Authorization": UserDefaultsUtils().userToken] as HTTPHeaders headers.add(self.defaultUserAgent) return headers @@ -36,22 +36,13 @@ struct HTTPUtils { static func jsonWithTokenHeader() -> HTTPHeaders { var headers = [ "Accept": "application/json", - "Authorization": UserDefaultsUtil().getUserToken() + "Authorization": UserDefaultsUtils().userToken ] as HTTPHeaders headers.add(self.defaultUserAgent) return headers } - // Timeout header 테스트용으로 추가하는 함수 - static func addTimeoutHeader(headers: HTTPHeaders) -> HTTPHeaders { - let timeOutHeader = HTTPHeader(name: "X-3DOLLAR-SLEEP-MILLISECONDS", value: "4000") - var newHeaders = headers - - newHeaders.add(timeOutHeader) - return newHeaders - } - static let defaultUserAgent: HTTPHeader = { let info = Bundle.main.infoDictionary let executable = (info?[kCFBundleExecutableKey as String] as? String) ?? diff --git a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift index 2b473d1..412727f 100644 --- a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift @@ -15,19 +15,21 @@ struct UserDefaultsUtils { } } - func setUserToken(token: String) { - self.instance.set(token, forKey: UserDefaultsUtil.KEY_TOKEN) - } - - func getUserToken() -> String { - return self.instance.string(forKey: UserDefaultsUtil.KEY_TOKEN) ?? "" - } - - func setUserId(id: Int) { - self.instance.set(id, forKey: UserDefaultsUtil.KEY_USER_ID) + var userToken: String { + set { + self.instance.set(newValue, forKey: self.KEY_TOKEN) + } + get { + return self.instance.string(forKey: self.KEY_TOKEN) ?? "" + } } - func getUserId() -> Int { - return self.instance.integer(forKey: UserDefaultsUtil.KEY_USER_ID) + var userId: Int { + set { + self.instance.set(newValue, forKey: self.KEY_USER_ID) + } + get { + return self.instance.integer(forKey: self.KEY_USER_ID) + } } } From 0b1d5700d8f29770dcf15fe395c5a672ff260e56 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 8 Mar 2022 21:20:40 +0900 Subject: [PATCH 008/166] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20API=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 50 +++- .../AppDelegate.swift | 14 +- 3dollar-in-my-pocket-manager/Info.plist | 18 ++ .../SceneDelegate.swift | 2 +- .../domains/base/BaseReactor.swift | 6 + .../domains/base/BaseViewController.swift | 9 + .../membership/sign-in/SignInReactor.swift | 47 ---- .../sign-in/SignInViewController.swift | 19 -- .../sign-in/SigninCoordinator.swift | 23 ++ .../membership/sign-in/SigninReactor.swift | 108 +++++++++ .../{SignInView.swift => SigninView.swift} | 8 +- .../sign-in/SigninViewController.swift | 69 ++++++ .../extensions/BundleExtensions.swift | 8 + .../services/AuthService.swift | 12 +- .../utils/NetworkActivityLogger.swift | 221 ++++++++++++++++++ 15 files changed, 524 insertions(+), 90 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift delete mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift delete mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninReactor.swift rename 3dollar-in-my-pocket-manager/domains/membership/sign-in/{SignInView.swift => SigninView.swift} (80%) create mode 100644 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninViewController.swift create mode 100644 3dollar-in-my-pocket-manager/utils/NetworkActivityLogger.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 5233caf..ba7b67f 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5727D77AF50084480C /* BaseReactor.swift */; }; + 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5927D77B790084480C /* BaseViewController.swift */; }; + 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */; }; + 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */; }; 6E1F549E27CB76520050BBBA /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; 6E1F549F27CB76520050BBBA /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; @@ -26,13 +30,13 @@ 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839127CB39E300278E14 /* RxRelay */; }; 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839327CB39E300278E14 /* RxSwift */; }; - 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839827CB3A1700278E14 /* SignInView.swift */; }; + 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839827CB3A1700278E14 /* SigninView.swift */; }; 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */; }; 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */; }; 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */; }; 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */; }; 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */; }; - 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A827CB456F00278E14 /* SignInViewController.swift */; }; + 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A827CB456F00278E14 /* SigninViewController.swift */; }; 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */; }; 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */; }; 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */; }; @@ -40,7 +44,7 @@ 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */; }; 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EE0CFAF27CB5BA40027A426 /* Localizations.strings */; }; 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */; }; - 6EE0CFB327CB5D560027A426 /* SignInReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */; }; + 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB227CB5D560027A426 /* SigninReactor.swift */; }; 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFB527CB5D850027A426 /* ReactorKit */; }; 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB827CB5DF90027A426 /* SocialType.swift */; }; 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */; }; @@ -75,6 +79,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 6E142D5727D77AF50084480C /* BaseReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseReactor.swift; sourceTree = ""; }; + 6E142D5927D77B790084480C /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; + 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninCoordinator.swift; sourceTree = ""; }; + 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkActivityLogger.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; 6E1F549D27CB76520050BBBA /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-dnitfhvnkrdaryaqvbwknfooeggx/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; @@ -91,18 +99,18 @@ 6EB94EAC27CB209000609E77 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6EB94EAF27CB209000609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6ED8839827CB3A1700278E14 /* SignInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInView.swift; sourceTree = ""; }; + 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialSigninButton.swift; sourceTree = ""; }; 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewExtensions.swift; sourceTree = ""; }; 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AppleSDGothicNeoEB00.ttf; sourceTree = ""; }; 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFontExtensions.swift; sourceTree = ""; }; 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; - 6ED883A827CB456F00278E14 /* SignInViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInViewController.swift; sourceTree = ""; }; + 6ED883A827CB456F00278E14 /* SigninViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninViewController.swift; sourceTree = ""; }; 6EE0CFA427CB573E0027A426 /* KakaoSignInManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoSignInManager.swift; sourceTree = ""; }; 6EE0CFA827CB5B6C0027A426 /* BaseError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseError.swift; sourceTree = ""; }; 6EE0CFAE27CB5BA40027A426 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizations.strings; sourceTree = ""; }; 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; - 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInReactor.swift; sourceTree = ""; }; + 6EE0CFB227CB5D560027A426 /* SigninReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninReactor.swift; sourceTree = ""; }; 6EE0CFB827CB5DF90027A426 /* SocialType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialType.swift; sourceTree = ""; }; 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleSignInManager.swift; sourceTree = ""; }; 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPUtils.swift; sourceTree = ""; }; @@ -132,6 +140,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 6E142D5627D77AEA0084480C /* base */ = { + isa = PBXGroup; + children = ( + 6E142D5727D77AF50084480C /* BaseReactor.swift */, + 6E142D5927D77B790084480C /* BaseViewController.swift */, + ); + path = base; + sourceTree = ""; + }; 6E1AA1B327CB210800C96D92 /* Products */ = { isa = PBXGroup; children = ( @@ -223,6 +240,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6E142D5627D77AEA0084480C /* base */, 6ED8839627CB39F600278E14 /* membership */, ); path = domains; @@ -240,9 +258,10 @@ isa = PBXGroup; children = ( 6ED8839A27CB3A6C00278E14 /* subviews */, - 6ED8839827CB3A1700278E14 /* SignInView.swift */, - 6ED883A827CB456F00278E14 /* SignInViewController.swift */, - 6EE0CFB227CB5D560027A426 /* SignInReactor.swift */, + 6ED8839827CB3A1700278E14 /* SigninView.swift */, + 6ED883A827CB456F00278E14 /* SigninViewController.swift */, + 6EE0CFB227CB5D560027A426 /* SigninReactor.swift */, + 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */, ); path = "sign-in"; sourceTree = ""; @@ -343,6 +362,7 @@ children = ( 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */, 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */, + 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */, ); path = utils; sourceTree = ""; @@ -461,6 +481,7 @@ 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, + 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, @@ -468,18 +489,21 @@ 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, - 6ED8839927CB3A1700278E14 /* SignInView.swift in Sources */, + 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, - 6ED883A927CB456F00278E14 /* SignInViewController.swift in Sources */, + 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, + 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, + 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, - 6EE0CFB327CB5D560027A426 /* SignInReactor.swift in Sources */, + 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, + 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -639,6 +663,7 @@ INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + KAKAO_APP_KEY = b623fd2160694c4c2cb08e64df491d1c; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -669,6 +694,7 @@ INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + KAKAO_APP_KEY = b623fd2160694c4c2cb08e64df491d1c; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 1afb645..3a3791a 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -1,12 +1,15 @@ import UIKit +import KakaoSDKCommon + @main class AppDelegate: UIResponder, UIApplicationDelegate { func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { - // Override point for customization after application launch. + self.initializeKakaoSDK() + self.initializeNetworkLogger() return true } @@ -30,5 +33,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } + + private func initializeKakaoSDK() { + KakaoSDK.initSDK(appKey: Bundle.kakaoAppKey) + } + + private func initializeNetworkLogger() { + NetworkActivityLogger.shared.startLogging() + NetworkActivityLogger.shared.level = .debug + } } diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 71559f4..bd0c1cc 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,8 +2,26 @@ + KAKAO_APP_KEY + $(KAKAO_APP_KEY) API_URL $(API_URL) + LSApplicationQueriesSchemes + + kakaokompassauth + kakaolink + + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + kakaob623fd2160694c4c2cb08e64df491d1c + + + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index 90c27d7..d207401 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -15,7 +15,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { self.window = UIWindow(frame: windowScene.coordinateSpace.bounds) self.window?.windowScene = windowScene - self.window?.rootViewController = SignInViewController.instance() + self.window?.rootViewController = SigninViewController.instance() self.window?.makeKeyAndVisible() } diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift b/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift new file mode 100644 index 0000000..83dc693 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift @@ -0,0 +1,6 @@ +import RxSwift +import RxCocoa + +class BaseReactor { + let showErrorAlert = PublishRelay() +} diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift b/3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift new file mode 100644 index 0000000..80ab690 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift @@ -0,0 +1,9 @@ +import UIKit + +import Base +import RxSwift + +class BaseViewController: Base.BaseViewController { + var disposeBag = DisposeBag() + var eventDisposeBag = DisposeBag() +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift deleted file mode 100644 index 37a8af2..0000000 --- a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInReactor.swift +++ /dev/null @@ -1,47 +0,0 @@ -import ReactorKit -import RxSwift -import RxCocoa - -final class SignInReactor: Reactor { - enum Action { - case tapSignInButton(socialType: SocialType) - } - - enum Mutation { - case pushSignUp(socialType: SocialType, token: String) - case pushWait - case goToMain - } - - struct State { - - } - - var initialState = State() - let pushSignUpPublisher = PublishRelay<(SocialType, String)>() - let pushWaitPublisher = PublishRelay() - let goToMainPublisher = PublishRelay() - private let kakaoSignInManager: KakaoSignInManagerProtocol - private let appleSignInManager: AppleSignInManagerProtocol - private let authService: AuthServiceProtocol - - init( - kakaoManager: KakaoSignInManagerProtocol, - appleSignInManager: AppleSignInManagerProtocol, - authService: AuthServiceProtocol - ) { - self.kakaoSignInManager = kakaoManager - self.appleSignInManager = appleSignInManager - self.authService = authService - } - - func mutate(action: Action) -> Observable { - return .empty() - } - - func reduce(state: State, mutation: Mutation) -> State { - var newState = state - - return newState - } -} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInViewController.swift deleted file mode 100644 index 2b15931..0000000 --- a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInViewController.swift +++ /dev/null @@ -1,19 +0,0 @@ -import Foundation - -import Base - -final class SignInViewController: BaseViewController { - private let signInView = SignInView() - - static func instance() -> SignInViewController { - return SignInViewController(nibName: nil, bundle: nil) - } - - override func loadView() { - self.view = self.signInView - } - - override func viewDidLoad() { - super.viewDidLoad() - } -} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninCoordinator.swift new file mode 100644 index 0000000..40c6c27 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninCoordinator.swift @@ -0,0 +1,23 @@ +import UIKit + +protocol SigninCoordinator: AnyObject { + func pushSignup(socialType: SocialType, token: String) + + func pushWaiting() + + func goToMain() +} + +extension SigninCoordinator { + func pushSignup(socialType: SocialType, token: String) { + + } + + func pushWaiting() { + + } + + func goToMain() { + + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninReactor.swift new file mode 100644 index 0000000..2f82aed --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninReactor.swift @@ -0,0 +1,108 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class SigninReactor: BaseReactor, Reactor { + enum Action { + case tapSignInButton(socialType: SocialType) + } + + enum Mutation { + case pushSignUp(socialType: SocialType, token: String) + case pushWaiting + case goToMain + case showErrorAlert(Error) + } + + struct State { + + } + + var initialState = State() + let pushSignUpPublisher = PublishRelay<(SocialType, String)>() + let pushWaitingPublisher = PublishRelay() + let goToMainPublisher = PublishRelay() + private let kakaoSignInManager: KakaoSignInManagerProtocol + private let appleSignInManager: AppleSignInManagerProtocol + private let authService: AuthServiceProtocol + + init( + kakaoManager: KakaoSignInManagerProtocol, + appleSignInManager: AppleSignInManagerProtocol, + authService: AuthServiceProtocol + ) { + self.kakaoSignInManager = kakaoManager + self.appleSignInManager = appleSignInManager + self.authService = authService + } + + func mutate(action: Action) -> Observable { + switch action { + case .tapSignInButton(let socialType): + return self.signinWithSocial(socialType: socialType) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + let newState = state + + switch mutation { + case .pushSignUp(let socialType, let token): + self.pushSignUpPublisher.accept((socialType, token)) + + case .pushWaiting: + self.pushWaitingPublisher.accept(()) + + case .goToMain: + self.goToMainPublisher.accept(()) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func signinWithSocial(socialType: SocialType) -> Observable { + switch socialType { + case .apple: + return self.appleSignInManager.signIn() + .flatMap { [weak self] token -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + + return self.signin(socialType: socialType, token: token) + } + + case .kakao: + return self.kakaoSignInManager.signIn() + .flatMap { [weak self] token -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + + return self.signin(socialType: socialType, token: token) + } + + case .naver: + return .empty() + } + } + + private func signin(socialType: SocialType, token: String) -> Observable { + return self.authService.login(socialType: socialType, token: token) + .map { _ in .goToMain } + .catch { error -> Observable in + if let httpError = error as? HTTPError { + switch httpError { + case .notFound: + return .just(.pushSignUp(socialType: socialType, token: token)) + + case .forbidden: + return .just(.pushWaiting) + + default: + break + } + } + return .just(.showErrorAlert(error)) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInView.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninView.swift similarity index 80% rename from 3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInView.swift rename to 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninView.swift index d4c8669..041a69d 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SignInView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninView.swift @@ -2,12 +2,12 @@ import UIKit import Base -final class SignInView: BaseView { - private let appleButton = SocialSigninButton(socialType: .apple) +final class SigninView: BaseView { + let appleButton = SocialSigninButton(socialType: .apple) - private let kakaoButton = SocialSigninButton(socialType: .kakao) + let kakaoButton = SocialSigninButton(socialType: .kakao) - private let naverButton = SocialSigninButton(socialType: .naver) + let naverButton = SocialSigninButton(socialType: .naver) override func setup() { self.backgroundColor = .gray0 diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninViewController.swift new file mode 100644 index 0000000..58d5da6 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninViewController.swift @@ -0,0 +1,69 @@ +import UIKit + +import ReactorKit + + +final class SigninViewController: BaseViewController, View, SigninCoordinator { + private let signinView = SigninView() + private let signinReactor = SigninReactor( + kakaoManager: KakaoSignInManager.shared, + appleSignInManager: AppleSigninManager.shared, + authService: AuthService() + ) + private weak var coordinator: SigninCoordinator? + + static func instance() -> SigninViewController { + return SigninViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.signinView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.reactor = self.signinReactor + } + + override func bindEvent() { + self.signinReactor.pushSignUpPublisher + .asDriver(onErrorJustReturn: (.apple, "")) + .drive { [weak self] (socialType, token) in + self?.coordinator?.pushSignup(socialType: socialType, token: token) + } + .disposed(by: self.eventDisposeBag) + + self.signinReactor.pushWaitingPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] _ in + self?.coordinator?.pushWaiting() + }) + .disposed(by: self.eventDisposeBag) + + self.signinReactor.goToMainPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] _ in + self?.coordinator?.goToMain() + }) + .disposed(by: self.eventDisposeBag) + } + + func bind(reactor: SigninReactor) { + // Bind Action + self.signinView.appleButton.rx.tap + .map { Reactor.Action.tapSignInButton(socialType: .apple) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.signinView.kakaoButton.rx.tap + .map { Reactor.Action.tapSignInButton(socialType: .kakao) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.signinView.naverButton.rx.tap + .map { Reactor.Action.tapSignInButton(socialType: .naver) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift index 24c5ced..85a7d93 100644 --- a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift @@ -8,4 +8,12 @@ extension Bundle { return apiURL } + + static var kakaoAppKey: String { + guard let kakaoAppKey = Bundle.main.infoDictionary?["KAKAO_APP_KEY"] as? String else { + fatalError("KAKAO_APP_KEY가 정의되지 않았습니다.") + } + + return kakaoAppKey + } } diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 683f806..99e86b8 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -13,15 +13,15 @@ struct AuthService: AuthServiceProtocol { let headers = HTTPUtils.jsonHeader() HTTPUtils.defaultSession.request( - urlString, - method: .post, - parameters: parameters, - headers: headers + urlString, + method: .post, + parameters: parameters, + headers: headers ).responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(response: response) } else { - observer.processHTTPError(response: response) + observer.processHTTPError(response: response) } } diff --git a/3dollar-in-my-pocket-manager/utils/NetworkActivityLogger.swift b/3dollar-in-my-pocket-manager/utils/NetworkActivityLogger.swift new file mode 100644 index 0000000..c92688c --- /dev/null +++ b/3dollar-in-my-pocket-manager/utils/NetworkActivityLogger.swift @@ -0,0 +1,221 @@ +// +// NetworkActivityLogger.swift +// AlamofireNetworkActivityLogger +// +// The MIT License (MIT) +// +// Copyright (c) 2016 Konstantin Kabanov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +import Alamofire +import Foundation + +/// The level of logging detail. +public enum NetworkActivityLoggerLevel { + /// Do not log requests or responses. + case off + + /// Logs HTTP method, URL, header fields, & request body for requests, and status code, URL, header fields, response string, & elapsed time for responses. + case debug + + /// Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses. + case info + + /// Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses, but only for failed requests. + case warn + + /// Equivalent to `.warn` + case error + + /// Equivalent to `.off` + case fatal +} + +/// `NetworkActivityLogger` logs requests and responses made by Alamofire.SessionManager, with an adjustable level of detail. +public class NetworkActivityLogger { + // MARK: - Properties + + /// The shared network activity logger for the system. + public static let shared = NetworkActivityLogger() + + /// The level of logging detail. See NetworkActivityLoggerLevel enum for possible values. .info by default. + public var level: NetworkActivityLoggerLevel + + /// Omit requests which match the specified predicate, if provided. + public var filterPredicate: NSPredicate? + + private let queue = DispatchQueue(label: "\(NetworkActivityLogger.self) Queue") + + // MARK: - Internal - Initialization + + init() { + level = .info + } + + deinit { + stopLogging() + } + + // MARK: - Logging + + /// Start logging requests and responses. + public func startLogging() { + stopLogging() + + let notificationCenter = NotificationCenter.default + + notificationCenter.addObserver( + self, + selector: #selector(NetworkActivityLogger.requestDidStart(notification:)), + name: Request.didResumeNotification, + object: nil + ) + + notificationCenter.addObserver( + self, + selector: #selector(NetworkActivityLogger.requestDidFinish(notification:)), + name: Request.didFinishNotification, + object: nil + ) + } + + /// Stop logging requests and responses. + public func stopLogging() { + NotificationCenter.default.removeObserver(self) + } + + // MARK: - Private - Notifications + + @objc private func requestDidStart(notification: Notification) { + queue.async { + guard let dataRequest = notification.request as? DataRequest, + let task = dataRequest.task, + let request = task.originalRequest, + let httpMethod = request.httpMethod, + let requestURL = request.url + else { + return + } + + if let filterPredicate = self.filterPredicate, filterPredicate.evaluate(with: request) { + return + } + + switch self.level { + case .debug: + let cURL = dataRequest.cURLDescription() + + self.logDivider() + + print("\(httpMethod) '\(requestURL.absoluteString)':") + + print("cURL:\n\(cURL)") + case .info: + self.logDivider() + + print("\(httpMethod) '\(requestURL.absoluteString)'") + default: + break + } + } + } + + @objc private func requestDidFinish(notification: Notification) { + queue.async { + guard let dataRequest = notification.request as? DataRequest, + let task = dataRequest.task, + let metrics = dataRequest.metrics, + let request = task.originalRequest, + let httpMethod = request.httpMethod, + let requestURL = request.url + else { + return + } + + if let filterPredicate = self.filterPredicate, filterPredicate.evaluate(with: request) { + return + } + + let elapsedTime = metrics.taskInterval.duration + + if let error = task.error { + switch self.level { + case .debug, .info, .warn, .error: + self.logDivider() + + print("[Error] \(httpMethod) '\(requestURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]:") + print(error) + default: + break + } + } else { + guard let response = task.response as? HTTPURLResponse else { + return + } + + switch self.level { + case .debug: + self.logDivider() + + print("\(String(response.statusCode)) '\(requestURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]:") + + self.logHeaders(headers: response.allHeaderFields) + + guard let data = dataRequest.data else { break } + + print("Body:") + + do { + let jsonObject = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) + let prettyData = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted) + + if let prettyString = String(data: prettyData, encoding: .utf8) { + print(prettyString) + } + } catch { + if let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue) { + print(string) + } + } + case .info: + self.logDivider() + + print("\(String(response.statusCode)) '\(requestURL.absoluteString)' [\(String(format: "%.04f", elapsedTime)) s]") + default: + break + } + } + } + + } +} + +private extension NetworkActivityLogger { + func logDivider() { + print("---------------------") + } + + func logHeaders(headers: [AnyHashable : Any]) { + print("Headers: [") + for (key, value) in headers { + print(" \(key): \(value)") + } + print("]") + } +} From 953f68d4ec9aac3fb9963b1ed2e048a5a31696d0 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 8 Mar 2022 21:36:35 +0900 Subject: [PATCH 009/166] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20p?= =?UTF-8?q?rod=20=ED=99=98=EA=B2=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj | 2 +- .../models/presentation/SocialType.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index ba7b67f..a4592dc 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -694,7 +694,7 @@ INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - KAKAO_APP_KEY = b623fd2160694c4c2cb08e64df491d1c; + KAKAO_APP_KEY = a009e78756eb528bc0e9897b8409a2e4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift index e1ae9ac..3d02c7b 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift @@ -2,6 +2,6 @@ import Foundation enum SocialType: String { case apple = "APPLE" - case kakao = "GOOGLE" + case kakao = "KAKAO" case naver = "NAVER" } From a28f0923bae0515fd0a582c1307f03684e3bd656 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 8 Mar 2022 21:37:42 +0900 Subject: [PATCH 010/166] =?UTF-8?q?fix:=20sign-in=20=3D>=20signin=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EB=94=94=EB=A0=89=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj | 6 +++--- .../membership/{sign-in => signin}/SigninCoordinator.swift | 0 .../membership/{sign-in => signin}/SigninReactor.swift | 0 .../domains/membership/{sign-in => signin}/SigninView.swift | 0 .../{sign-in => signin}/SigninViewController.swift | 0 .../{sign-in => signin}/subviews/SocialSigninButton.swift | 0 6 files changed, 3 insertions(+), 3 deletions(-) rename 3dollar-in-my-pocket-manager/domains/membership/{sign-in => signin}/SigninCoordinator.swift (100%) rename 3dollar-in-my-pocket-manager/domains/membership/{sign-in => signin}/SigninReactor.swift (100%) rename 3dollar-in-my-pocket-manager/domains/membership/{sign-in => signin}/SigninView.swift (100%) rename 3dollar-in-my-pocket-manager/domains/membership/{sign-in => signin}/SigninViewController.swift (100%) rename 3dollar-in-my-pocket-manager/domains/membership/{sign-in => signin}/subviews/SocialSigninButton.swift (100%) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index a4592dc..66ce20b 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -249,12 +249,12 @@ 6ED8839627CB39F600278E14 /* membership */ = { isa = PBXGroup; children = ( - 6ED8839727CB39FB00278E14 /* sign-in */, + 6ED8839727CB39FB00278E14 /* signin */, ); path = membership; sourceTree = ""; }; - 6ED8839727CB39FB00278E14 /* sign-in */ = { + 6ED8839727CB39FB00278E14 /* signin */ = { isa = PBXGroup; children = ( 6ED8839A27CB3A6C00278E14 /* subviews */, @@ -263,7 +263,7 @@ 6EE0CFB227CB5D560027A426 /* SigninReactor.swift */, 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */, ); - path = "sign-in"; + path = signin; sourceTree = ""; }; 6ED8839A27CB3A6C00278E14 /* subviews */ = { diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift similarity index 100% rename from 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninCoordinator.swift rename to 3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift similarity index 100% rename from 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninReactor.swift rename to 3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninView.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift similarity index 100% rename from 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninView.swift rename to 3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift similarity index 100% rename from 3dollar-in-my-pocket-manager/domains/membership/sign-in/SigninViewController.swift rename to 3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift diff --git a/3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/subviews/SocialSigninButton.swift similarity index 100% rename from 3dollar-in-my-pocket-manager/domains/membership/sign-in/subviews/SocialSigninButton.swift rename to 3dollar-in-my-pocket-manager/domains/membership/signin/subviews/SocialSigninButton.swift From 97f5c0b8d0807fe28376e57df3c43208f71e279d Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 8 Mar 2022 22:03:08 +0900 Subject: [PATCH 011/166] =?UTF-8?q?wip:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20=EB=B7=B0=20=EA=B7=B8=EB=A6=AC?= =?UTF-8?q?=EA=B8=B0=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 20 +++++++++++--- .../ic_back.imageset/Contents.json | 23 ++++++++++++++++ .../Assets.xcassets/ic_back.imageset/back.png | Bin 0 -> 370 bytes .../ic_back.imageset/back@2x.png | Bin 0 -> 743 bytes .../ic_back.imageset/back@3x.png | Bin 0 -> 899 bytes .../domains/base/BaseView.swift | 10 +++++++ .../membership/signup/SignupView.swift | 26 ++++++++++++++++++ .../extensions/BaseViewExtensions.swift | 14 ---------- .../extensions/UIColorExtensions.swift | 5 ++-- .../strings/en.lproj/Localizations.strings | 4 +++ 10 files changed, 81 insertions(+), 21 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back@3x.png create mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift delete mode 100644 3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 66ce20b..c40cfe3 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -11,6 +11,8 @@ 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5927D77B790084480C /* BaseViewController.swift */; }; 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */; }; 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */; }; + 6E142D6227D785A40084480C /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6127D785A40084480C /* SignupView.swift */; }; + 6E142D6427D785B50084480C /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6327D785B50084480C /* BaseView.swift */; }; 6E1F549E27CB76520050BBBA /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; 6E1F549F27CB76520050BBBA /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; @@ -32,7 +34,6 @@ 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839327CB39E300278E14 /* RxSwift */; }; 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839827CB3A1700278E14 /* SigninView.swift */; }; 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */; }; - 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */; }; 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */; }; 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */; }; 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */; }; @@ -83,6 +84,8 @@ 6E142D5927D77B790084480C /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninCoordinator.swift; sourceTree = ""; }; 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkActivityLogger.swift; sourceTree = ""; }; + 6E142D6127D785A40084480C /* SignupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupView.swift; sourceTree = ""; }; + 6E142D6327D785B50084480C /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; 6E1F549D27CB76520050BBBA /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-dnitfhvnkrdaryaqvbwknfooeggx/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; @@ -101,7 +104,6 @@ 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialSigninButton.swift; sourceTree = ""; }; - 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewExtensions.swift; sourceTree = ""; }; 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AppleSDGothicNeoEB00.ttf; sourceTree = ""; }; 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFontExtensions.swift; sourceTree = ""; }; 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; @@ -145,10 +147,19 @@ children = ( 6E142D5727D77AF50084480C /* BaseReactor.swift */, 6E142D5927D77B790084480C /* BaseViewController.swift */, + 6E142D6327D785B50084480C /* BaseView.swift */, ); path = base; sourceTree = ""; }; + 6E142D6027D7859B0084480C /* signup */ = { + isa = PBXGroup; + children = ( + 6E142D6127D785A40084480C /* SignupView.swift */, + ); + path = signup; + sourceTree = ""; + }; 6E1AA1B327CB210800C96D92 /* Products */ = { isa = PBXGroup; children = ( @@ -249,6 +260,7 @@ 6ED8839627CB39F600278E14 /* membership */ = { isa = PBXGroup; children = ( + 6E142D6027D7859B0084480C /* signup */, 6ED8839727CB39FB00278E14 /* signin */, ); path = membership; @@ -277,7 +289,6 @@ 6ED8839D27CB3BA600278E14 /* extensions */ = { isa = PBXGroup; children = ( - 6ED8839E27CB3BB300278E14 /* BaseViewExtensions.swift */, 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */, 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */, 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */, @@ -496,11 +507,12 @@ 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, + 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, - 6ED8839F27CB3BB300278E14 /* BaseViewExtensions.swift in Sources */, + 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/Contents.json new file mode 100644 index 0000000..96e1418 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "back.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd77b5b910d1d7742f3e4d52610aed7aae93570 GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9GG!XV7ZFl!D-1!HlL zyA#8@b22Z19F}xPUq=Rpjs4tz5?O(A?4B-;Ar*{or`qy0IS90-Z&gqcF;n?tQpIH1 zbcZ4Tf#9CT@DFSiEYaE@*{YbfH}i2jb?5V{MX%UkG5|6O{`(kz2QFLVCG21CELO4v)+AWsV=T z>10)M(p$Z1mw-A$+e|jk3G+Yr2#G%sWoa&3@p_j+-a_%)+tio7-nD1{Dz=+jCuslP zz}qMxTQ)6q?Z!ER{l6FRAK_3~x`$Ed^@Md&kGb6)3uftsdf6|u{;ZLB@F}A!FEEH0 NJYD@<);T3K0RU{yiA(?h literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_back.imageset/back@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9479f11a4aad56f30bb58211e86f92d2fe1e5080 GIT binary patch literal 743 zcmV?P)I|@{#!2 zY}O}DM00?}JB~BJrI(Dy;!nu{Vg_u8XG9Fx63-Yn;DTzkdQOUX@C_yN6B)*+fmr+y zm+z8sy!jt^^T#BB(J~70Ty0eGLn-l$F#}j0e8(wJ!WU5#eIP-M3?Zy*dN`@$`)avd z9)y4d(f$H>^Is@MJciDpw0K7A3$S8$O5?y?1OkFmw|l|&tx``vZg1@ zx*?9k@pwEU%eaA18IEZG;u6=%UV8KY(`e7^k5U z_Twf;45J-crBdPMMV*m@xY-fGcvJ6rp1WGDct_&F#D<*cPbQO(WEkxvR>5$OP=Wq( zC8CGBaekxGp!t0Mj|^hm0K?^z%V>&;z_bYw1B@*b;{OMDm#$PQovS<3-~^THj5HD7 zUgyOf_Y2%ND35y2>JQBm{|KJX9~$o1QhEvP8Coof(?DX6kl5E4PCgFq=00Ee{GQm4W$-6c-|c>+6cK!Xm6B1oKs zk@(0AI(O{dO1B@g^8TcgPTnc(pJoj=_g?^y$K&yMJRXn7b-LZ|H@yDQ)#-G8fB{~C zBcPP=@p$}}l&M3J9 z&9L2K5_10H_UeOXSay(%oXuu41Ou?^pkA-{@o+fYW|YiO&R~Ur0a$gAj2!H&OH*

C);ueLMLWgUca z#u>{_${|#4G2tgt`tUge2T>_#Dq6s&_c4t)z(JG=!r|7JjOEk($3;oX1krGdwo*ok zlaiEv%+nl4MiR}1z!8+^gOVh9q}&cN6qE$jYW1p8soXyyz#J_BDhf5_ND4_3*8K$L zXiJ#MNNP5l(R#i94UEwm!IO~G=PpTmMv){n8jUv~{vt_|044nah8PKPqNHCrl7?I* z8B4jQl0M*VC@5hm$!H9?)oR`E_xmewNRsh)^HCH9+wGRdB9W+u-hkkjPVE6r8LWgC zB;U=mkiomy+ik0FKG-MBkQJ`I%!C<1e>kPc zC`~3P32cr@e9AQkHaTgo12h(002ovPDHLkV1l2SjdTD2 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseView.swift b/3dollar-in-my-pocket-manager/domains/base/BaseView.swift new file mode 100644 index 0000000..8b71a17 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/base/BaseView.swift @@ -0,0 +1,10 @@ +import UIKit + +import Base +import RxSwift +import SnapKit +import Then + +class BaseView: Base.BaseView { + var disposeBag = DisposeBag() +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift new file mode 100644 index 0000000..6636a6e --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -0,0 +1,26 @@ +import UIKit + +final class SignupView: BaseView { + let backButton = UIButton().then { + $0.setImage(UIImage(named: "ic_back"), for: .normal) + } + + private let titleLabel = UILabel().then { + $0.text = "signup_title".localized + $0.font = .semiBold(size: 16) + $0.textColor = .gray100 + } + + private let scrollView = UIScrollView().then { + $0.backgroundColor = .clear + } + + private let containerView = UIView() + + private let descriptionLabel = UILabel().then { + $0.font = .bold(size: 24) + $0.textColor = .gray95 + $0.text = "signup_description".localized + $0.setLineHeight(lineHeight: 31) + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift b/3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift deleted file mode 100644 index 9da2a63..0000000 --- a/3dollar-in-my-pocket-manager/extensions/BaseViewExtensions.swift +++ /dev/null @@ -1,14 +0,0 @@ -import UIKit - -import Base -import RxSwift -import Then -import SnapKit - -extension BaseView { - static var _disposeBag = DisposeBag() - - var disposeBag: DisposeBag { - return Self._disposeBag - } -} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 81c1857..5718072 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -3,7 +3,6 @@ import UIKit extension UIColor { /// r: 250, g: 250, b: 250 static let gray0 = UIColor(r: 250, g: 250, b: 250) - - - + static let gray95 = UIColor(r: 26, g: 26, b: 26) + static let gray100 = UIColor(r: 15, g: 15, b: 15) } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index bf588b8..5f497cd 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -11,3 +11,7 @@ "http_error_bad_gateway" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; "http_error_maintenance" = "서버 점검중입니다.\n잠시 후 다시 시도해주세요."; "http_error_timeout" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; + +// signup +"signup_title" = "회원가입"; +"signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; From 7f9d6e8c2e095aaae973c49c8ec896536d39b2fa Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 9 Mar 2022 12:22:16 +0900 Subject: [PATCH 012/166] =?UTF-8?q?wip:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 ++++ .../membership/signup/SignupView.swift | 8 +++ .../signup/subviews/SignupTextField.swift | 55 +++++++++++++++++++ .../extensions/UIColorExtensions.swift | 2 + 4 files changed, 77 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index c40cfe3..78feec4 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; + 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -96,6 +97,7 @@ 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObserverExtensions.swift; sourceTree = ""; }; 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; + 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -155,6 +157,7 @@ 6E142D6027D7859B0084480C /* signup */ = { isa = PBXGroup; children = ( + 6E64B28127D836620055354B /* subviews */, 6E142D6127D785A40084480C /* SignupView.swift */, ); path = signup; @@ -211,6 +214,14 @@ path = request; sourceTree = ""; }; + 6E64B28127D836620055354B /* subviews */ = { + isa = PBXGroup; + children = ( + 6E64B28327D836920055354B /* SignupTextField.swift */, + ); + path = subviews; + sourceTree = ""; + }; 6EB94E9727CB208E00609E77 = { isa = PBXGroup; children = ( @@ -516,6 +527,7 @@ 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, + 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index 6636a6e..fe3cff1 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -23,4 +23,12 @@ final class SignupView: BaseView { $0.text = "signup_description".localized $0.setLineHeight(lineHeight: 31) } + + private let roundedBackgroundView = UIView().then { + $0.backgroundColor = .white + $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor + $0.layer.shadowOpacity = 0.04 + } + } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift new file mode 100644 index 0000000..df894cf --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -0,0 +1,55 @@ +import UIKit + +class SignupTextField: BaseView { + private let containerView = UIView().then { + $0.backgroundColor = .gray5 + $0.layer.cornerRadius = 8 + } + + fileprivate let textField = UITextField().then { + $0.font = .medium(size: 14) + $0.textColor = .gray30 + } + + override func setup() { + self.addSubViews([ + self.containerView, + self.textField + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(48) + } + + self.textField.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(12) + make.right.equalTo(self.containerView).offset(-12) + make.centerY.equalTo(self.containerView) + } + + self.snp.makeConstraints { make in + make.edges.equalTo(self.containerView) + } + } + + fileprivate func setFocusMode(isFocus: Bool) { + + } + + private func setPlaceholder(placeholder: String?) { + guard let placeholder = placeholder else { return } + let attributedString = NSAttributedString( + string: placeholder, + attributes: [.foregroundColor: UIColor.gray30] + ) + + self.textField.attributedPlaceholder = attributedString + } + + +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 5718072..42081f3 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -3,6 +3,8 @@ import UIKit extension UIColor { /// r: 250, g: 250, b: 250 static let gray0 = UIColor(r: 250, g: 250, b: 250) + static let gray5 = UIColor(r: 244, g: 244, b: 244) + static let gray30 = UIColor(r: 183, g: 183, b: 183) static let gray95 = UIColor(r: 26, g: 26, b: 26) static let gray100 = UIColor(r: 15, g: 15, b: 15) } From c23ef1bcec5481f389a7511e5c09aad94bdc33d8 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Wed, 9 Mar 2022 14:06:47 +0900 Subject: [PATCH 013/166] =?UTF-8?q?wip:=20=EC=A0=84=ED=99=94=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20inputfield=EA=B9=8C=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 26 +++- .../SceneDelegate.swift | 2 +- .../domains/base/BaseCoordinator.swift | 32 +++++ .../membership/signin/SigninCoordinator.swift | 4 +- .../signin/SigninViewController.swift | 7 +- .../membership/signup/SignupView.swift | 114 ++++++++++++++++++ .../signup/SignupViewController.swift | 26 ++++ .../signup/subviews/SignupInputField.swift | 96 +++++++++++++++ .../signup/subviews/SignupTextField.swift | 75 +++++++++++- .../extensions/UIColorExtensions.swift | 11 ++ .../strings/en.lproj/Localizations.strings | 12 ++ 11 files changed, 390 insertions(+), 15 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 78feec4..44d263a 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -13,8 +13,6 @@ 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */; }; 6E142D6227D785A40084480C /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6127D785A40084480C /* SignupView.swift */; }; 6E142D6427D785B50084480C /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6327D785B50084480C /* BaseView.swift */; }; - 6E1F549E27CB76520050BBBA /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; - 6E1F549F27CB76520050BBBA /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */; }; @@ -23,6 +21,11 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; + 6E473B9027D85B7C00232139 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; + 6E473B9127D85B7C00232139 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; + 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; + 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -67,13 +70,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E1F54A027CB76520050BBBA /* Embed Frameworks */ = { + 6E473B9227D85B7C00232139 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E1F549F27CB76520050BBBA /* Base.framework in Embed Frameworks */, + 6E473B9127D85B7C00232139 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -97,6 +100,10 @@ 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObserverExtensions.swift; sourceTree = ""; }; 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; + 6E473B8F27D85B7C00232139 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; + 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; + 6E473B9727D8624300232139 /* BaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCoordinator.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -134,7 +141,7 @@ 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, - 6E1F549E27CB76520050BBBA /* Base.framework in Frameworks */, + 6E473B9027D85B7C00232139 /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, @@ -150,6 +157,7 @@ 6E142D5727D77AF50084480C /* BaseReactor.swift */, 6E142D5927D77B790084480C /* BaseViewController.swift */, 6E142D6327D785B50084480C /* BaseView.swift */, + 6E473B9727D8624300232139 /* BaseCoordinator.swift */, ); path = base; sourceTree = ""; @@ -159,6 +167,7 @@ children = ( 6E64B28127D836620055354B /* subviews */, 6E142D6127D785A40084480C /* SignupView.swift */, + 6E473B9527D861B800232139 /* SignupViewController.swift */, ); path = signup; sourceTree = ""; @@ -174,6 +183,7 @@ 6E1AA1B827CB215700C96D92 /* Frameworks */ = { isa = PBXGroup; children = ( + 6E473B8F27D85B7C00232139 /* Base.framework */, 6E1F549D27CB76520050BBBA /* Base.framework */, ); name = Frameworks; @@ -218,6 +228,7 @@ isa = PBXGroup; children = ( 6E64B28327D836920055354B /* SignupTextField.swift */, + 6E473B9327D85D1C00232139 /* SignupInputField.swift */, ); path = subviews; sourceTree = ""; @@ -399,7 +410,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E1F54A027CB76520050BBBA /* Embed Frameworks */, + 6E473B9227D85B7C00232139 /* Embed Frameworks */, ); buildRules = ( ); @@ -521,10 +532,13 @@ 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, + 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, + 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, + 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index d207401..6540663 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -15,7 +15,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { self.window = UIWindow(frame: windowScene.coordinateSpace.bounds) self.window?.windowScene = windowScene - self.window?.rootViewController = SigninViewController.instance() + self.window?.rootViewController = SignupViewController.instance() self.window?.makeKeyAndVisible() } diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift new file mode 100644 index 0000000..d0db9ac --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift @@ -0,0 +1,32 @@ +import UIKit +import Base + +protocol BaseCoordinator { + var presenter: BaseViewController { get } + + func showErrorAlert(error: Error) + func openURL(url: String) +} + +extension BaseCoordinator where Self: BaseViewController { + var presenter: BaseViewController { + return self + } + + + func showErrorAlert(error: Error) { + AlertUtils.showWithAction( + viewController: self, + title: nil, + message: error.localizedDescription, + okbuttonTitle: nil, + onTapOk: nil + ) + } + + func openURL(url: String) { + guard let url = URL(string: url) else { return } + + UIApplication.shared.open(url, options: [:], completionHandler: nil) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift index 40c6c27..6e41bad 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift @@ -1,6 +1,6 @@ import UIKit -protocol SigninCoordinator: AnyObject { +protocol SigninCoordinator: AnyObject, BaseCoordinator { func pushSignup(socialType: SocialType, token: String) func pushWaiting() @@ -10,7 +10,9 @@ protocol SigninCoordinator: AnyObject { extension SigninCoordinator { func pushSignup(socialType: SocialType, token: String) { + let viewControler = SignupViewController.instance() + self.presenter.navigationController?.pushViewController(viewControler, animated: true) } func pushWaiting() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 58d5da6..4ab730b 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -12,8 +12,10 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { ) private weak var coordinator: SigninCoordinator? - static func instance() -> SigninViewController { - return SigninViewController(nibName: nil, bundle: nil) + static func instance() -> UINavigationController { + let viewController = SigninViewController(nibName: nil, bundle: nil) + + return UINavigationController(rootViewController: viewController) } override func loadView() { @@ -24,6 +26,7 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { super.viewDidLoad() self.reactor = self.signinReactor + self.coordinator = self } override func bindEvent() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index fe3cff1..82b0e4d 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -20,6 +20,7 @@ final class SignupView: BaseView { private let descriptionLabel = UILabel().then { $0.font = .bold(size: 24) $0.textColor = .gray95 + $0.numberOfLines = 0 $0.text = "signup_description".localized $0.setLineHeight(lineHeight: 31) } @@ -31,4 +32,117 @@ final class SignupView: BaseView { $0.layer.shadowOpacity = 0.04 } + let ownerNameField = SignupInputField( + title: "signup_owner_name".localized, + isRequired: true, + placeholder: "signup_owner_name_placeholder".localized + ) + + let storeNameField = SignupInputField( + title: "signup_store_name".localized, + isRequired: true, + description: "signup_store_name_description".localized, + placeholder: "signup_store_name_placeholder".localized + ).then { + $0.maxLength = 20 + } + + let registerationNumberField = SignupInputField( + title: "signup_registeration_number_title".localized, + isRequired: true, + description: "signup_registeration_number_description".localized, + placeholder: "signup_registeration_number_placeholder".localized + ).then { + $0.keyboardType = .numberPad + } + + let phoneNumberField = SignupInputField( + title: "signup_phone_number_title".localized, + isRequired: true, + description: "signup_phone_number_description".localized, + placeholder: "signup_phone_number_placeholder".localized + ).then { + $0.keyboardType = .numberPad + } + + override func setup() { + self.backgroundColor = .gray0 + self.containerView.addSubViews([ + self.descriptionLabel, + self.roundedBackgroundView, + self.ownerNameField, + self.storeNameField, + self.registerationNumberField, + self.phoneNumberField + ]) + self.scrollView.addSubview(self.containerView) + self.addSubViews([ + self.backButton, + self.titleLabel, + self.scrollView + ]) + } + + override func bindConstraints() { + self.backButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(15) + make.width.height.equalTo(24) + } + + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(self.backButton) + } + + self.scrollView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.backButton.snp.bottom).offset(21) + make.bottom.equalToSuperview() + } + + self.containerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.top.equalTo(self.descriptionLabel).priority(.high) + make.bottom.equalTo(self.phoneNumberField).priority(.high) + make.width.equalTo(UIScreen.main.bounds.width) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview().offset(38) + } + + self.roundedBackgroundView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.descriptionLabel.snp.bottom).offset(21) + make.bottom.equalTo(self.phoneNumberField) + } + + self.ownerNameField.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalTo(self.roundedBackgroundView).offset(32) + } + + self.storeNameField.snp.makeConstraints { make in + make.left.equalTo(self.ownerNameField) + make.right.equalTo(self.ownerNameField) + make.top.equalTo(self.ownerNameField.snp.bottom).offset(32) + } + + self.registerationNumberField.snp.makeConstraints { make in + make.left.equalTo(self.ownerNameField) + make.right.equalTo(self.ownerNameField) + make.top.equalTo(self.storeNameField.snp.bottom).offset(32) + } + + self.phoneNumberField.snp.makeConstraints { make in + make.left.equalTo(self.ownerNameField) + make.right.equalTo(self.ownerNameField) + make.top.equalTo(self.registerationNumberField.snp.bottom).offset(32) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift new file mode 100644 index 0000000..e04a5a9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -0,0 +1,26 @@ +import UIKit + +final class SignupViewController: BaseViewController { + private let signupView = SignupView() + + static func instance() -> SignupViewController { + return SignupViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.signupView + } + + override func viewDidLoad() { + super.viewDidLoad() + } + + override func bindEvent() { + self.signupView.backButton.rx.tap + .asDriver() + .drive(onNext: { [weak self] in + self?.navigationController?.popViewController(animated: true) + }) + .disposed(by: self.disposeBag) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift new file mode 100644 index 0000000..fcd2cf8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift @@ -0,0 +1,96 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class SignupInputField: BaseView { + var maxLength: Int? { + willSet(newValue) { + self.textField.maxLength = newValue + } + } + + var keyboardType: UIKeyboardType? { + willSet(newValue) { + self.textField.keyboardType = newValue + } + } + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray100 + } + + private let requiredDot = UIView().then { + $0.backgroundColor = .pink + $0.layer.cornerRadius = 2 + } + + private let descriptionLabel = UILabel().then { + $0.textColor = .pink + $0.font = .bold(size: 12) + } + + fileprivate let textField: SignupTextField + + init( + title: String, + isRequired: Bool = false, + description: String? = nil, + placeholder: String? = nil + ) { + self.textField = SignupTextField(placeholder: placeholder) + super.init(frame: .zero) + + self.titleLabel.text = title + self.requiredDot.isHidden = !isRequired + self.descriptionLabel.text = description + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func setup() { + self.addSubViews([ + self.titleLabel, + self.requiredDot, + self.descriptionLabel, + self.textField + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.equalToSuperview() + } + + self.requiredDot.snp.makeConstraints { make in + make.top.equalTo(self.titleLabel) + make.left.equalTo(self.titleLabel.snp.right).offset(4) + make.width.height.equalTo(4) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.titleLabel) + make.right.equalToSuperview() + } + + self.textField.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.titleLabel.snp.bottom).offset(8) + } + + self.snp.makeConstraints { make in + make.bottom.equalTo(self.textField).priority(.high) + } + } +} + +extension Reactive where Base: SignupInputField { + var text: ControlProperty { + return base.textField.rx.text + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift index df894cf..6fa9d5f 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -1,6 +1,19 @@ import UIKit -class SignupTextField: BaseView { +import RxSwift +import RxCocoa + +final class SignupTextField: BaseView { + var maxLength: Int? + + var keyboardType: UIKeyboardType? { + didSet(newValue) { + guard let keyboardType = keyboardType else { return } + + self.textField.keyboardType = keyboardType + } + } + private let containerView = UIView().then { $0.backgroundColor = .gray5 $0.layer.cornerRadius = 8 @@ -11,11 +24,38 @@ class SignupTextField: BaseView { $0.textColor = .gray30 } + init(placeholder: String?) { + super.init(frame: .zero) + + self.setPlaceholder(placeholder: placeholder) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override func setup() { self.addSubViews([ self.containerView, self.textField ]) + self.textField.delegate = self + + self.textField.rx.controlEvent(.editingDidBegin) + .map { _ in true } + .asDriver(onErrorJustReturn: true) + .drive(onNext: { [weak self] isFocus in + self?.setFocusMode(isFocus: isFocus) + }) + .disposed(by: self.disposeBag) + + self.textField.rx.controlEvent(.editingDidEnd) + .map { _ in false } + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isFocus in + self?.setFocusMode(isFocus: isFocus) + }) + .disposed(by: self.disposeBag) } override func bindConstraints() { @@ -37,8 +77,15 @@ class SignupTextField: BaseView { } } - fileprivate func setFocusMode(isFocus: Bool) { - + private func setFocusMode(isFocus: Bool) { + UIView.transition( + with: self, + duration: 0.3, + options: .curveEaseInOut + ) { [weak self] in + self?.containerView.backgroundColor = isFocus ? .white : .gray5 + self?.textField.textColor = isFocus ? .gray100 : .gray30 + } } private func setPlaceholder(placeholder: String?) { @@ -50,6 +97,24 @@ class SignupTextField: BaseView { self.textField.attributedPlaceholder = attributedString } - - +} + +extension SignupTextField: UITextFieldDelegate { + func textField( + _ textField: UITextField, + shouldChangeCharactersIn range: NSRange, + replacementString string: String + ) -> Bool { + guard let text = textField.text, + let maxLength = self.maxLength else { return true } + let newLength = text.count + string.count - range.length + + return newLength <= maxLength + } +} + +extension Reactive where Base: SignupTextField { + var text: ControlProperty { + return base.textField.rx.text.orEmpty + } } diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 42081f3..9058eee 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -3,8 +3,19 @@ import UIKit extension UIColor { /// r: 250, g: 250, b: 250 static let gray0 = UIColor(r: 250, g: 250, b: 250) + + /// r: 244, g: 244, b: 244 static let gray5 = UIColor(r: 244, g: 244, b: 244) + + /// r: 183, g: 183, b: 183 static let gray30 = UIColor(r: 183, g: 183, b: 183) + + /// r: 26, g: 26, b: 26 static let gray95 = UIColor(r: 26, g: 26, b: 26) + + /// r: 15, g: 15, b: 15 static let gray100 = UIColor(r: 15, g: 15, b: 15) + + /// r: 255, g: 161, b: 170 + static let pink = UIColor(r: 255, g: 161, b: 170) } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 5f497cd..1bd0256 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -15,3 +15,15 @@ // signup "signup_title" = "회원가입"; "signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; +"signup_owner_name" = "사장님 성함"; +"signup_owner_name_placeholder" = "사장님 성함을 입력해주세요."; +"signup_store_name" = "가게이름"; +"signup_store_name_description" = "최대 20자"; +"signup_store_name_placeholder" = "가게 이름을 입력해 주세요."; +"signup_registeration_number_title" = "사업자 등록 번호"; +"signup_registeration_number_description" = "“-”를 제외한 숫자만 입력"; +"signup_registeration_number_placeholder" = "사업자 등록 번호를 입력해 주세요."; +"signup_phone_number_title" = "전화번호"; +"signup_phone_number_description" = "“-”를 제외한 숫자만 입력"; +"signup_phone_number_placeholder" = "전화번호를 입력해 주세요."; + From 54c5d04c3e495a4c9c994bb30ba1f7cd1a9a358a Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Wed, 9 Mar 2022 15:11:03 +0900 Subject: [PATCH 014/166] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=201=EC=B0=A8=20=EB=B7=B0=20?= =?UTF-8?q?=EA=B7=B8=EB=A6=AC=EA=B8=B0=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 40 ++++++++ .../domains/base/BaseCollectionViewCell.swift | 14 +++ .../membership/signup/SignupView.swift | 46 ++++++++- .../subviews/SignupCategorySelectView.swift | 78 +++++++++++++++ .../signup/subviews/SignupPhotoView.swift | 96 +++++++++++++++++++ .../SignupCategoryCollectionViewCell.swift | 42 ++++++++ .../LeftAlignedCollectionViewFlowLayout.swift | 22 +++++ .../extensions/UIButtonExtensions.swift | 15 +++ .../extensions/UIColorExtensions.swift | 6 ++ .../strings/en.lproj/Localizations.strings | 6 ++ 10 files changed, 360 insertions(+), 5 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift create mode 100644 3dollar-in-my-pocket-manager/domains/shared/LeftAlignedCollectionViewFlowLayout.swift create mode 100644 3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 44d263a..308c18e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -26,6 +26,12 @@ 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; + 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9927D86D9B00232139 /* SignupCategorySelectView.swift */; }; + 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */; }; + 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */; }; + 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */; }; + 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; + 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -104,6 +110,12 @@ 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; 6E473B9727D8624300232139 /* BaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCoordinator.swift; sourceTree = ""; }; + 6E473B9927D86D9B00232139 /* SignupCategorySelectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCategorySelectView.swift; sourceTree = ""; }; + 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCategoryCollectionViewCell.swift; sourceTree = ""; }; + 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCollectionViewCell.swift; sourceTree = ""; }; + 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftAlignedCollectionViewFlowLayout.swift; sourceTree = ""; }; + 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; + 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -158,6 +170,7 @@ 6E142D5927D77B790084480C /* BaseViewController.swift */, 6E142D6327D785B50084480C /* BaseView.swift */, 6E473B9727D8624300232139 /* BaseCoordinator.swift */, + 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */, ); path = base; sourceTree = ""; @@ -224,11 +237,30 @@ path = request; sourceTree = ""; }; + 6E473B9B27D870AC00232139 /* cells */ = { + isa = PBXGroup; + children = ( + 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; + 6E473BA027D872E000232139 /* shared */ = { + isa = PBXGroup; + children = ( + 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */, + ); + path = shared; + sourceTree = ""; + }; 6E64B28127D836620055354B /* subviews */ = { isa = PBXGroup; children = ( + 6E473B9B27D870AC00232139 /* cells */, 6E64B28327D836920055354B /* SignupTextField.swift */, 6E473B9327D85D1C00232139 /* SignupInputField.swift */, + 6E473B9927D86D9B00232139 /* SignupCategorySelectView.swift */, + 6E473BA327D874C500232139 /* SignupPhotoView.swift */, ); path = subviews; sourceTree = ""; @@ -273,6 +305,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6E473BA027D872E000232139 /* shared */, 6E142D5627D77AEA0084480C /* base */, 6ED8839627CB39F600278E14 /* membership */, ); @@ -317,6 +350,7 @@ 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */, 6E1F54AD27CB97D20050BBBA /* AFDataResponseExtensions.swift */, 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */, + 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -513,6 +547,8 @@ 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, + 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, + 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, @@ -521,6 +557,7 @@ 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, + 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, @@ -528,6 +565,7 @@ 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, + 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, @@ -542,6 +580,8 @@ 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, + 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, + 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift new file mode 100644 index 0000000..0eaf620 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift @@ -0,0 +1,14 @@ +import UIKit + +import Base +import RxSwift + +class BaseCollectionViewCell: Base.BaseCollectionViewCell { + var disposeBag = DisposeBag() + + override func prepareForReuse() { + super.prepareForReuse() + + self.disposeBag = DisposeBag() + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index 82b0e4d..ed838ea 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -28,6 +28,7 @@ final class SignupView: BaseView { private let roundedBackgroundView = UIView().then { $0.backgroundColor = .white $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + $0.layer.cornerRadius = 8 $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor $0.layer.shadowOpacity = 0.04 } @@ -65,6 +66,19 @@ final class SignupView: BaseView { $0.keyboardType = .numberPad } + let categoryCollectionView = SignupCategorySelectView() + + let photoView = SignupPhotoView() + + let signupButton = UIButton().then { + $0.setTitle("signup_button".localized, for: .normal) + $0.titleLabel?.font = .medium(size: 16) + $0.setTitleColor(UIColor(r: 251, g: 251, b: 251), for: .normal) + $0.setBackgroundColor(color: .green, forState: .normal) + $0.setBackgroundColor(color: .gray30, forState: .disabled) + $0.isEnabled = false + } + override func setup() { self.backgroundColor = .gray0 self.containerView.addSubViews([ @@ -73,13 +87,16 @@ final class SignupView: BaseView { self.ownerNameField, self.storeNameField, self.registerationNumberField, - self.phoneNumberField + self.phoneNumberField, + self.categoryCollectionView, + self.photoView ]) self.scrollView.addSubview(self.containerView) self.addSubViews([ self.backButton, self.titleLabel, - self.scrollView + self.scrollView, + self.signupButton ]) } @@ -99,13 +116,13 @@ final class SignupView: BaseView { make.left.equalToSuperview() make.right.equalToSuperview() make.top.equalTo(self.backButton.snp.bottom).offset(21) - make.bottom.equalToSuperview() + make.bottom.equalTo(self.signupButton.snp.top) } self.containerView.snp.makeConstraints { make in make.edges.equalToSuperview() make.top.equalTo(self.descriptionLabel).priority(.high) - make.bottom.equalTo(self.phoneNumberField).priority(.high) + make.bottom.equalTo(self.roundedBackgroundView).priority(.high) make.width.equalTo(UIScreen.main.bounds.width) } @@ -118,7 +135,7 @@ final class SignupView: BaseView { make.left.equalToSuperview() make.right.equalToSuperview() make.top.equalTo(self.descriptionLabel.snp.bottom).offset(21) - make.bottom.equalTo(self.phoneNumberField) + make.bottom.equalTo(self.photoView).offset(52) } self.ownerNameField.snp.makeConstraints { make in @@ -144,5 +161,24 @@ final class SignupView: BaseView { make.right.equalTo(self.ownerNameField) make.top.equalTo(self.registerationNumberField.snp.bottom).offset(32) } + + self.categoryCollectionView.snp.makeConstraints { make in + make.left.equalTo(self.ownerNameField) + make.right.equalTo(self.ownerNameField) + make.top.equalTo(self.phoneNumberField.snp.bottom).offset(32) + } + + self.photoView.snp.makeConstraints { make in + make.left.equalTo(self.ownerNameField) + make.right.equalTo(self.ownerNameField) + make.top.equalTo(self.categoryCollectionView.snp.bottom).offset(32) + } + + self.signupButton.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.height.equalTo(82) + } } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift new file mode 100644 index 0000000..9b01ffa --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift @@ -0,0 +1,78 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class SignupCategorySelectView: BaseView { + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray100 + $0.text = "signup_category_title".localized + } + + private let requiredDot = UIView().then { + $0.backgroundColor = .pink + $0.layer.cornerRadius = 2 + } + + private let descriptionLabel = UILabel().then { + $0.textColor = .pink + $0.font = .bold(size: 12) + $0.text = "signup_category_description".localized + } + + let categoryCollectionView = UICollectionView( + frame: .zero, + collectionViewLayout: UICollectionViewFlowLayout() + ).then { + let layout = LeftAlignedCollectionViewFlowLayout() + + layout.minimumInteritemSpacing = 11 + layout.minimumLineSpacing = 12 + layout.estimatedItemSize = SignupCategoryCollectionViewCell.estimatedSize + $0.collectionViewLayout = layout + $0.register( + SignupCategoryCollectionViewCell.self, + forCellWithReuseIdentifier: SignupCategoryCollectionViewCell.registerID + ) + } + + override func setup() { + self.addSubViews([ + self.titleLabel, + self.requiredDot, + self.descriptionLabel, + self.categoryCollectionView + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + } + + self.requiredDot.snp.makeConstraints { make in + make.left.equalTo(self.titleLabel.snp.right).offset(4) + make.top.equalTo(self.titleLabel) + make.width.height.equalTo(4) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.titleLabel) + make.right.equalToSuperview() + } + + self.categoryCollectionView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.titleLabel.snp.bottom).offset(12) + make.height.equalTo(0) + } + + self.snp.makeConstraints { make in + make.top.equalTo(self.titleLabel).priority(.high) + make.bottom.equalTo(self.categoryCollectionView).priority(.high) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift new file mode 100644 index 0000000..2e897c2 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift @@ -0,0 +1,96 @@ +import UIKit + +final class SignupPhotoView: BaseView { + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray100 + $0.text = "signup_photo_title".localized + } + + private let requiredDot = UIView().then { + $0.backgroundColor = .pink + $0.layer.cornerRadius = 2 + } + + private let descriptionLabel = UILabel().then { + $0.textColor = .gray50 + $0.font = .regular(size: 14) + $0.text = "signup_photo_description".localized + } + + private let containerView = UIView().then { + $0.backgroundColor = .gray5 + $0.layer.cornerRadius = 8 + } + + private let imageView = UIImageView().then { + $0.backgroundColor = UIColor(r: 236, g: 236, b: 236) + $0.layer.cornerRadius = 8 + } + + fileprivate let uploadButton = UIButton().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 8 + $0.setTitle("signup_upload_photo".localized, for: .normal) + $0.setTitleColor(.green, for: .normal) + $0.titleLabel?.font = .bold(size: 14) + $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor + $0.layer.shadowOffset = CGSize(width: 4, height: 4) + $0.layer.shadowOpacity = 0.1 + } + + override func setup() { + self.addSubViews([ + self.titleLabel, + self.requiredDot, + self.descriptionLabel, + self.containerView, + self.imageView, + self.uploadButton + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + } + + self.requiredDot.snp.makeConstraints { make in + make.left.equalTo(self.titleLabel.snp.right).offset(4) + make.top.equalTo(self.titleLabel) + make.width.height.equalTo(4) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalTo(self.titleLabel.snp.bottom).offset(4) + } + + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.descriptionLabel.snp.bottom).offset(12) + make.bottom.equalTo(self.uploadButton).offset(12) + } + + self.imageView.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(12) + make.top.equalTo(self.containerView).offset(14) + make.right.equalTo(self.containerView).offset(-12) + make.height.equalTo(136) + } + + self.uploadButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(12) + make.right.equalToSuperview().offset(-12) + make.top.equalTo(self.imageView.snp.bottom).offset(10) + make.height.equalTo(48) + } + + self.snp.makeConstraints { make in + make.top.equalTo(self.titleLabel).priority(.high) + make.bottom.equalTo(self.containerView).priority(.high) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift new file mode 100644 index 0000000..1cae4d7 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift @@ -0,0 +1,42 @@ +import UIKit + +final class SignupCategoryCollectionViewCell: BaseCollectionViewCell { + static let registerID = "\(SignupCategoryCollectionViewCell.self)" + static let estimatedSize = CGSize(width: 56, height: 40) + + override var isSelected: Bool { + didSet { + self.backgroundColor = self.isSelected + ? .green + : UIColor(r: 242, g: 251, b: 247) + self.titleLabel.textColor = self.isSelected + ? .white + : .green + } + } + + private let titleLabel = UILabel().then { + $0.textColor = .green + $0.font = .regular(size: 14) + } + + override func setup() { + self.layer.cornerRadius = 8 + self.addSubViews([ + self.titleLabel + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(16) + make.right.equalToSuperview().offset(-16) + make.top.equalToSuperview() + make.bottom.equalToSuperview() + } + } + + func bind(category: String) { + self.titleLabel.text = category + } +} diff --git a/3dollar-in-my-pocket-manager/domains/shared/LeftAlignedCollectionViewFlowLayout.swift b/3dollar-in-my-pocket-manager/domains/shared/LeftAlignedCollectionViewFlowLayout.swift new file mode 100644 index 0000000..9b43a9a --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/shared/LeftAlignedCollectionViewFlowLayout.swift @@ -0,0 +1,22 @@ +import UIKit + +class LeftAlignedCollectionViewFlowLayout: UICollectionViewFlowLayout { + override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { + let attributes = super.layoutAttributesForElements(in: rect) + + var leftMargin = sectionInset.left + var maxY: CGFloat = -1.0 + attributes?.forEach { layoutAttribute in + if layoutAttribute.frame.origin.y >= maxY { + leftMargin = sectionInset.left + } + + layoutAttribute.frame.origin.x = leftMargin + + leftMargin += layoutAttribute.frame.width + minimumInteritemSpacing + maxY = max(layoutAttribute.frame.maxY , maxY) + } + + return attributes + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift new file mode 100644 index 0000000..4754b96 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift @@ -0,0 +1,15 @@ +import UIKit + +extension UIButton { + func setBackgroundColor(color: UIColor, forState: UIControl.State) { + self.clipsToBounds = true // add this to maintain corner radius + UIGraphicsBeginImageContext(CGSize(width: 1, height: 1)) + if let context = UIGraphicsGetCurrentContext() { + context.setFillColor(color.cgColor) + context.fill(CGRect(x: 0, y: 0, width: 1, height: 1)) + let colorImage = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + self.setBackgroundImage(colorImage, for: forState) + } + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 9058eee..f86719b 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -10,6 +10,9 @@ extension UIColor { /// r: 183, g: 183, b: 183 static let gray30 = UIColor(r: 183, g: 183, b: 183) + /// r: 120, g: 120, b: 120 + static let gray50 = UIColor(r: 120, g: 120, b: 120) + /// r: 26, g: 26, b: 26 static let gray95 = UIColor(r: 26, g: 26, b: 26) @@ -18,4 +21,7 @@ extension UIColor { /// r: 255, g: 161, b: 170 static let pink = UIColor(r: 255, g: 161, b: 170) + + /// r: 0, g: 198, b: 103 + static let green = UIColor(r: 0, g: 198, b: 103) } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 1bd0256..6003b2c 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -26,4 +26,10 @@ "signup_phone_number_title" = "전화번호"; "signup_phone_number_description" = "“-”를 제외한 숫자만 입력"; "signup_phone_number_placeholder" = "전화번호를 입력해 주세요."; +"signup_category_title" = "카테고리 선택"; +"signup_category_description" = "최대 3개"; +"signup_photo_title" = "가게 인증 사진"; +"signup_photo_description" = "사진은 사장님 인증 용도로 사용됩니다."; +"signup_upload_photo" = "이미지 업로드"; +"signup_button" = "회원 가입"; From 89a1a7e911154bf9593d4b824bfb376716d94ea2 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 9 Mar 2022 17:25:55 +0900 Subject: [PATCH 015/166] =?UTF-8?q?feat:=20SignupReactor=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++- .../membership/signup/SignupReactor.swift | 119 ++++++++++++++++++ 2 files changed, 129 insertions(+), 6 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 308c18e..c268117 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -21,8 +21,6 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; - 6E473B9027D85B7C00232139 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; - 6E473B9127D85B7C00232139 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; @@ -33,6 +31,9 @@ 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; + 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; + 6E7A49D427D89B7500E6653C /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; + 6E7A49D527D89B7600E6653C /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -76,13 +77,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E473B9227D85B7C00232139 /* Embed Frameworks */ = { + 6E7A49D627D89B7600E6653C /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E473B9127D85B7C00232139 /* Base.framework in Embed Frameworks */, + 6E7A49D527D89B7600E6653C /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -117,6 +118,7 @@ 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; + 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -153,7 +155,7 @@ 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, - 6E473B9027D85B7C00232139 /* Base.framework in Frameworks */, + 6E7A49D427D89B7500E6653C /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, @@ -181,6 +183,7 @@ 6E64B28127D836620055354B /* subviews */, 6E142D6127D785A40084480C /* SignupView.swift */, 6E473B9527D861B800232139 /* SignupViewController.swift */, + 6E7A49D127D891AA00E6653C /* SignupReactor.swift */, ); path = signup; sourceTree = ""; @@ -444,7 +447,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E473B9227D85B7C00232139 /* Embed Frameworks */, + 6E7A49D627D89B7600E6653C /* Embed Frameworks */, ); buildRules = ( ); @@ -569,6 +572,7 @@ 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, + 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift new file mode 100644 index 0000000..2653e6b --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -0,0 +1,119 @@ +import UIKit + +import ReactorKit +import RxSwift +import RxCocoa + +final class SignupReactor: BaseReactor, Reactor { + enum Action { + case inputOwnerName(String) + case inputStoreName(String) + case inputRegisterationNumber(String) + case inputPhoneNumber(String) +// case selectCategory() + case selectPhoto(UIImage) + case tapSignup + } + + enum Mutation { + case setOwnerName(String) + case setStoreName(String) + case setRegisterationNumber(String) + case setPhoneNumber(String) + case setPhoto(UIImage) + case setSignupButtonEnable(Bool) + case pushWaiting + case showErrorAlert(Error) + } + + struct State { + var ownerName = "" + var storeName = "" + var registerationNumber = "" + var phoneNumber = "" +// var categories +// var selectedCategories + var photo: UIImage? + var isEnableSignupButton = false + } + + let initialState = State() + let pushWaitingPublisher = PublishRelay() + + func mutate(action: Action) -> Observable { + switch action { + case .inputOwnerName(let ownerName): + return .just(.setOwnerName(ownerName)) + + case .inputStoreName(let storeName): + return .just(.setStoreName(storeName)) + + case .inputRegisterationNumber(let registerationNumber): + return .just(.setRegisterationNumber(registerationNumber)) + + case .inputPhoneNumber(let phoneNumber): + return .just(.setPhoneNumber(phoneNumber)) + + case .selectPhoto(let photo): + return .just(.setPhoto(photo)) + + case .tapSignup: + if self.validate( + ownerName: self.currentState.ownerName, + storeName: self.currentState.storeName, + registerationNumber: self.currentState.registerationNumber, + photo: self.currentState.photo + ) { + // 회원가입 + return .empty() + } else { + // 에러 + return .empty() + } + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setOwnerName(let ownerName): + newState.ownerName = ownerName + + case .setStoreName(let storeName): + newState.storeName = storeName + + case .setRegisterationNumber(let registerationNumber): + newState.registerationNumber = registerationNumber + + case .setPhoneNumber(let phoneNumber): + newState.phoneNumber = phoneNumber + + case .setPhoto(let photo): + newState.photo = photo + + case .setSignupButtonEnable(let isEnable): + newState.isEnableSignupButton = isEnable + + case .pushWaiting: + self.pushWaitingPublisher.accept(()) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func validate( + ownerName: String, + storeName: String, + registerationNumber: String, + photo: UIImage? + ) -> Bool { + return !ownerName.isEmpty + && !storeName.isEmpty + && !registerationNumber.isEmpty + && photo != nil + } +} From 23800f180539b192a7f761040b8d1cdb4aea4902 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 9 Mar 2022 21:07:34 +0900 Subject: [PATCH 016/166] =?UTF-8?q?feat:=20ImageService=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 +++++ .../dto/response/ImageUploadResponse.swift | 15 +++++++++ .../services/ImageService.swift | 31 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/ImageUploadResponse.swift create mode 100644 3dollar-in-my-pocket-manager/services/ImageService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index c268117..6356c1f 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -34,6 +34,8 @@ 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; 6E7A49D427D89B7500E6653C /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; 6E7A49D527D89B7600E6653C /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; + 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D927D8CE1800E6653C /* ImageService.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -119,6 +121,8 @@ 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; + 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadResponse.swift; sourceTree = ""; }; + 6E7A49D927D8CE1800E6653C /* ImageService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageService.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -218,6 +222,7 @@ isa = PBXGroup; children = ( 6E1F54A527CB7A130050BBBA /* AuthService.swift */, + 6E7A49D927D8CE1800E6653C /* ImageService.swift */, ); path = services; sourceTree = ""; @@ -227,6 +232,7 @@ children = ( 6E1F54A227CB79120050BBBA /* LoginResponse.swift */, 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */, + 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */, ); path = response; sourceTree = ""; @@ -560,6 +566,7 @@ 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, + 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, @@ -581,6 +588,7 @@ 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, + 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/models/dto/response/ImageUploadResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/ImageUploadResponse.swift new file mode 100644 index 0000000..37040a9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/ImageUploadResponse.swift @@ -0,0 +1,15 @@ +import Foundation + +struct ImageUploadResponse: Decodable { + let imageUrl: String + + enum CodingKeys: String, CodingKey { + case imageUrl + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.imageUrl = try values.decodeIfPresent(String.self, forKey: .imageUrl) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift new file mode 100644 index 0000000..279a216 --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -0,0 +1,31 @@ +import UIKit + +import Alamofire +import RxSwift + +protocol ImageServiceType { + func uploadImage(image: UIImage) -> Observable +} + +struct ImageService: ImageServiceType { + func uploadImage(image: UIImage) -> Observable { + guard let data = image.jpegData(compressionQuality: 0.8) else { + return .error(BaseError.nilValue) + } + + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/upload/" + + HTTPUtils.fileUploadSession.upload(data, to: urlString) + .responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } +} From c63153aae257c66459fac902fbf7e8af79ed2cc6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 9 Mar 2022 21:31:13 +0900 Subject: [PATCH 017/166] =?UTF-8?q?feat:=20CategoryService=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++++++++++ .../models/dto/request/SignupRequest.swift | 9 ++++++ .../dto/response/StoreCategoryResponse.swift | 18 ++++++++++++ .../models/presentation/StoreCategory.swift | 9 ++++++ .../services/CategoryService.swift | 29 +++++++++++++++++++ 5 files changed, 81 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/StoreCategoryResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift create mode 100644 3dollar-in-my-pocket-manager/services/CategoryService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 6356c1f..6078f43 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -36,6 +36,10 @@ 6E7A49D527D89B7600E6653C /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D927D8CE1800E6653C /* ImageService.swift */; }; + 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DB27D8D03E00E6653C /* SignupRequest.swift */; }; + 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; + 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; + 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -123,6 +127,10 @@ 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadResponse.swift; sourceTree = ""; }; 6E7A49D927D8CE1800E6653C /* ImageService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageService.swift; sourceTree = ""; }; + 6E7A49DB27D8D03E00E6653C /* SignupRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupRequest.swift; sourceTree = ""; }; + 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategoryResponse.swift; sourceTree = ""; }; + 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryService.swift; sourceTree = ""; }; + 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategory.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -223,6 +231,7 @@ children = ( 6E1F54A527CB7A130050BBBA /* AuthService.swift */, 6E7A49D927D8CE1800E6653C /* ImageService.swift */, + 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */, ); path = services; sourceTree = ""; @@ -233,6 +242,7 @@ 6E1F54A227CB79120050BBBA /* LoginResponse.swift */, 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */, 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */, + 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */, ); path = response; sourceTree = ""; @@ -242,6 +252,7 @@ children = ( 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */, 6E1F54AB27CB94EB0050BBBA /* Requestable.swift */, + 6E7A49DB27D8D03E00E6653C /* SignupRequest.swift */, ); path = request; sourceTree = ""; @@ -429,6 +440,7 @@ isa = PBXGroup; children = ( 6EE0CFB827CB5DF90027A426 /* SocialType.swift */, + 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */, ); path = presentation; sourceTree = ""; @@ -553,8 +565,10 @@ buildActionMask = 2147483647; files = ( 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, + 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, + 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, @@ -593,6 +607,8 @@ 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, + 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, + 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); diff --git a/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift new file mode 100644 index 0000000..f3006f8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift @@ -0,0 +1,9 @@ +import Foundation + +struct SignupRequest { + let bossName: String + let businessNumber: String + let certificationPhotoUrl: String + let contactsNumber: String + let socialType: SocialType +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/StoreCategoryResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/StoreCategoryResponse.swift new file mode 100644 index 0000000..9113687 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/StoreCategoryResponse.swift @@ -0,0 +1,18 @@ +import Foundation + +struct StoreCategoryResponse: Decodable { + let categoryId: String + let name: String + + enum CodingKeys: String, CodingKey { + case categoryId + case name + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.categoryId = try values.decodeIfPresent(String.self, forKey: .categoryId) ?? "" + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift b/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift new file mode 100644 index 0000000..270bdf1 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift @@ -0,0 +1,9 @@ +struct StoreCategory { + let categoryId: String + let name: String + + init(response: StoreCategoryResponse) { + self.categoryId = response.categoryId + self.name = response.name + } +} diff --git a/3dollar-in-my-pocket-manager/services/CategoryService.swift b/3dollar-in-my-pocket-manager/services/CategoryService.swift new file mode 100644 index 0000000..f2330de --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/CategoryService.swift @@ -0,0 +1,29 @@ +import Alamofire +import RxSwift + +protocol CategoryServiceType { + func fetchCategories() -> Observable<[StoreCategoryResponse]> +} + +struct CategoryService: CategoryServiceType { + func fetchCategories() -> Observable<[StoreCategoryResponse]> { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/categories" + let headers = HTTPUtils.jsonHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + headers: headers + ).responseDecodable(of: ResponseContainer<[StoreCategoryResponse]>.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } +} From 4c2e13cf9440ed8aaa283d8a6ad9f39466ac57e3 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Fri, 11 Mar 2022 23:21:11 +0900 Subject: [PATCH 018/166] =?UTF-8?q?wip:=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=BD=9C=EB=A0=89=EC=85=98=EB=B7=B0=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++--- .../membership/signup/SignupReactor.swift | 24 +++++++- .../signup/SignupViewController.swift | 59 ++++++++++++++++++- .../SignupCategoryCollectionViewCell.swift | 4 +- .../extensions/ObserverExtensions.swift | 4 +- .../models/presentation/StoreCategory.swift | 2 +- 6 files changed, 93 insertions(+), 16 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 6078f43..1eac5b2 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -32,14 +32,14 @@ 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; - 6E7A49D427D89B7500E6653C /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; - 6E7A49D527D89B7600E6653C /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D927D8CE1800E6653C /* ImageService.swift */; }; 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DB27D8D03E00E6653C /* SignupRequest.swift */; }; 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; + 6EA7186727DB84BC001467EE /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; + 6EA7186827DB84BC001467EE /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -83,13 +83,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E7A49D627D89B7600E6653C /* Embed Frameworks */ = { + 6EA7186927DB84BC001467EE /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E7A49D527D89B7600E6653C /* Base.framework in Embed Frameworks */, + 6EA7186827DB84BC001467EE /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -167,7 +167,7 @@ 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, - 6E7A49D427D89B7500E6653C /* Base.framework in Frameworks */, + 6EA7186727DB84BC001467EE /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, @@ -465,7 +465,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E7A49D627D89B7600E6653C /* Embed Frameworks */, + 6EA7186927DB84BC001467EE /* Embed Frameworks */, ); buildRules = ( ); @@ -755,7 +755,7 @@ 6EB94EB527CB209000609E77 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - API_URL = "https://dev.threedollars.co.kr/"; + API_URL = "https://dev.threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; @@ -786,7 +786,7 @@ 6EB94EB627CB209000609E77 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - API_URL = "https://dev.threedollars.co.kr/"; + API_URL = "https://dev.threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index 2653e6b..e8b22d5 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -6,6 +6,7 @@ import RxCocoa final class SignupReactor: BaseReactor, Reactor { enum Action { + case viewDidLoad case inputOwnerName(String) case inputStoreName(String) case inputRegisterationNumber(String) @@ -20,6 +21,7 @@ final class SignupReactor: BaseReactor, Reactor { case setStoreName(String) case setRegisterationNumber(String) case setPhoneNumber(String) + case setCategories([StoreCategory]) case setPhoto(UIImage) case setSignupButtonEnable(Bool) case pushWaiting @@ -31,17 +33,25 @@ final class SignupReactor: BaseReactor, Reactor { var storeName = "" var registerationNumber = "" var phoneNumber = "" -// var categories -// var selectedCategories + var categories: [StoreCategory] = [] + var selectedCategories: [StoreCategory] = [] var photo: UIImage? var isEnableSignupButton = false } let initialState = State() let pushWaitingPublisher = PublishRelay() + private let categoryService: CategoryServiceType + + init(categoryService: CategoryServiceType) { + self.categoryService = categoryService + } func mutate(action: Action) -> Observable { switch action { + case .viewDidLoad: + return self.fetchCategories() + case .inputOwnerName(let ownerName): return .just(.setOwnerName(ownerName)) @@ -89,6 +99,9 @@ final class SignupReactor: BaseReactor, Reactor { case .setPhoneNumber(let phoneNumber): newState.phoneNumber = phoneNumber + case .setCategories(let categories): + newState.categories = categories + case .setPhoto(let photo): newState.photo = photo @@ -116,4 +129,11 @@ final class SignupReactor: BaseReactor, Reactor { && !registerationNumber.isEmpty && photo != nil } + + private func fetchCategories() -> Observable { + return self.categoryService.fetchCategories() + .map { $0.map(StoreCategory.init(response:)) } + .map { .setCategories($0) } + .catch { .just(.showErrorAlert($0)) } + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index e04a5a9..c0258aa 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -1,7 +1,11 @@ import UIKit -final class SignupViewController: BaseViewController { +import ReactorKit +import RxSwift + +final class SignupViewController: BaseViewController, View { private let signupView = SignupView() + private let signupReactor = SignupReactor(categoryService: CategoryService()) static func instance() -> SignupViewController { return SignupViewController(nibName: nil, bundle: nil) @@ -13,6 +17,9 @@ final class SignupViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() + + self.reactor = self.signupReactor + self.signupReactor.action.onNext(.viewDidLoad) } override func bindEvent() { @@ -23,4 +30,54 @@ final class SignupViewController: BaseViewController { }) .disposed(by: self.disposeBag) } + + func bind(reactor: SignupReactor) { + // Bind Action + self.signupView.ownerNameField.rx.text + .map { Reactor.Action.inputOwnerName($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.signupView.storeNameField.rx.text + .map { Reactor.Action.inputStoreName($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.signupView.registerationNumberField.rx.text + .map { Reactor.Action.inputRegisterationNumber($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.signupView.phoneNumberField.rx.text + .map { Reactor.Action.inputPhoneNumber($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // selectCategory + + self.signupView.signupButton.rx.tap + .map { Reactor.Action.tapSignup } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind state + reactor.state + .map { $0.categories } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.signupView.categoryCollectionView.categoryCollectionView.rx.items( + cellIdentifier: SignupCategoryCollectionViewCell.registerID, + cellType: SignupCategoryCollectionViewCell.self + )) { row, category, cell in + cell.bind(category: category) + } + .disposed(by: self.disposeBag) + + reactor.state + .map { $0.isEnableSignupButton } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.signupView.signupButton.rx.isEnabled) + .disposed(by: self.disposeBag) + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift index 1cae4d7..a2fe2eb 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift @@ -36,7 +36,7 @@ final class SignupCategoryCollectionViewCell: BaseCollectionViewCell { } } - func bind(category: String) { - self.titleLabel.text = category + func bind(category: StoreCategory) { + self.titleLabel.text = category.name } } diff --git a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift index 7e55781..d841f40 100644 --- a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift @@ -28,9 +28,9 @@ extension AnyObserver { } } - func processValue(response: DataResponse) { + func processValue(response: DataResponse, AFError>) { if let value = response.value { - self.onNext(value as! Element) + self.onNext(value.data as! Element) self.onCompleted() } else { self.onError(BaseError.nilValue) diff --git a/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift b/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift index 270bdf1..9f53a6d 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/StoreCategory.swift @@ -1,4 +1,4 @@ -struct StoreCategory { +struct StoreCategory: Equatable { let categoryId: String let name: String From 4da9cdafb5fdb370b32ac812ab83c1c518e23fb5 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 13 Mar 2022 14:31:30 +0900 Subject: [PATCH 019/166] =?UTF-8?q?feat:=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=85=80=20=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +++--- .../membership/signup/SignupReactor.swift | 21 +++++++++- .../membership/signup/SignupView.swift | 18 ++++++++- .../signup/SignupViewController.swift | 8 +++- .../subviews/SignupCategorySelectView.swift | 40 +++++++++++++++++++ .../signup/subviews/SignupTextField.swift | 29 +------------- .../SignupCategoryCollectionViewCell.swift | 10 ++++- 7 files changed, 99 insertions(+), 39 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 1eac5b2..89e0aca 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -38,8 +38,6 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; - 6EA7186727DB84BC001467EE /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; - 6EA7186827DB84BC001467EE /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -70,6 +68,8 @@ 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFC027CB64E40027A426 /* Alamofire */; }; 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */; }; 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */; }; + 6EE2624327DDAAD1008B3531 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; + 6EE2624427DDAAD1008B3531 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -83,13 +83,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EA7186927DB84BC001467EE /* Embed Frameworks */ = { + 6EE2624527DDAAD1008B3531 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EA7186827DB84BC001467EE /* Base.framework in Embed Frameworks */, + 6EE2624427DDAAD1008B3531 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -167,7 +167,7 @@ 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, - 6EA7186727DB84BC001467EE /* Base.framework in Frameworks */, + 6EE2624327DDAAD1008B3531 /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, @@ -465,7 +465,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6EA7186927DB84BC001467EE /* Embed Frameworks */, + 6EE2624527DDAAD1008B3531 /* Embed Frameworks */, ); buildRules = ( ); diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index e8b22d5..afb5501 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -11,7 +11,7 @@ final class SignupReactor: BaseReactor, Reactor { case inputStoreName(String) case inputRegisterationNumber(String) case inputPhoneNumber(String) -// case selectCategory() + case selectCategory(index: Int) case selectPhoto(UIImage) case tapSignup } @@ -21,6 +21,8 @@ final class SignupReactor: BaseReactor, Reactor { case setStoreName(String) case setRegisterationNumber(String) case setPhoneNumber(String) + case selectCategory(StoreCategory) + case deselectCategory(StoreCategory) case setCategories([StoreCategory]) case setPhoto(UIImage) case setSignupButtonEnable(Bool) @@ -64,6 +66,15 @@ final class SignupReactor: BaseReactor, Reactor { case .inputPhoneNumber(let phoneNumber): return .just(.setPhoneNumber(phoneNumber)) + case .selectCategory(let index): + let selectedCategory = self.currentState.categories[index] + + if self.currentState.selectedCategories.contains(selectedCategory) { + return .just(.deselectCategory(selectedCategory)) + } else { + return .just(.selectCategory(selectedCategory)) + } + case .selectPhoto(let photo): return .just(.setPhoto(photo)) @@ -99,6 +110,14 @@ final class SignupReactor: BaseReactor, Reactor { case .setPhoneNumber(let phoneNumber): newState.phoneNumber = phoneNumber + case .selectCategory(let category): + newState.selectedCategories.append(category) + + case .deselectCategory(let category): + if let targetIndex = state.selectedCategories.firstIndex(of: category) { + newState.selectedCategories.remove(at: targetIndex) + } + case .setCategories(let categories): newState.categories = categories diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index ed838ea..eb7edc3 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -1,6 +1,8 @@ import UIKit final class SignupView: BaseView { + let tapBackground = UITapGestureRecognizer() + let backButton = UIButton().then { $0.setImage(UIImage(named: "ic_back"), for: .normal) } @@ -28,7 +30,7 @@ final class SignupView: BaseView { private let roundedBackgroundView = UIView().then { $0.backgroundColor = .white $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] - $0.layer.cornerRadius = 8 + $0.layer.cornerRadius = 24 $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor $0.layer.shadowOpacity = 0.04 } @@ -80,6 +82,20 @@ final class SignupView: BaseView { } override func setup() { + self.roundedBackgroundView.addGestureRecognizer(self.tapBackground) + self.tapBackground.rx.event + .map { _ in Void() } + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.endEditing(true) + }) + .disposed(by: self.disposeBag) + self.scrollView.rx.willBeginDragging + .asDriver() + .drive(onNext: { [weak self] in + self?.endEditing(true) + }) + .disposed(by: self.disposeBag) self.backgroundColor = .gray0 self.containerView.addSubViews([ self.descriptionLabel, diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index c0258aa..184c5ff 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -53,7 +53,10 @@ final class SignupViewController: BaseViewController, View { .bind(to: reactor.action) .disposed(by: self.disposeBag) - // selectCategory + self.signupView.categoryCollectionView.categoryCollectionView.rx.itemSelected + .map { Reactor.Action.selectCategory(index: $0.row) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) self.signupView.signupButton.rx.tap .map { Reactor.Action.tapSignup } @@ -65,6 +68,9 @@ final class SignupViewController: BaseViewController, View { .map { $0.categories } .distinctUntilChanged() .asDriver(onErrorJustReturn: []) + .do(onNext: { [weak self] categories in + self?.signupView.categoryCollectionView.updateCollectionViewHeight(categories: categories) + }) .drive(self.signupView.categoryCollectionView.categoryCollectionView.rx.items( cellIdentifier: SignupCategoryCollectionViewCell.registerID, cellType: SignupCategoryCollectionViewCell.self diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift index 9b01ffa..8642464 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift @@ -35,6 +35,7 @@ final class SignupCategorySelectView: BaseView { SignupCategoryCollectionViewCell.self, forCellWithReuseIdentifier: SignupCategoryCollectionViewCell.registerID ) + $0.allowsMultipleSelection = true } override func setup() { @@ -44,6 +45,7 @@ final class SignupCategorySelectView: BaseView { self.descriptionLabel, self.categoryCollectionView ]) + self.categoryCollectionView.delegate = self } override func bindConstraints() { @@ -75,4 +77,42 @@ final class SignupCategorySelectView: BaseView { make.bottom.equalTo(self.categoryCollectionView).priority(.high) } } + + func updateCollectionViewHeight(categories: [StoreCategory]) { + let maxWidth = UIScreen.main.bounds.width - 48 + let spaceBetweenCells: CGFloat = 11 + var height: CGFloat = SignupCategoryCollectionViewCell.estimatedSize.height + var currentWidth: CGFloat = 0 + + for category in categories { + let stringWidth = (category.name as NSString).size(withAttributes: [ + .font: UIFont.regular(size: 14) as Any + ]).width + let cellWidth = stringWidth + 32 + + if currentWidth + cellWidth >= maxWidth { // 셀 포함해서 한줄 넘어가는 경우 + currentWidth = cellWidth + spaceBetweenCells + height += SignupCategoryCollectionViewCell.estimatedSize.height + 12 + } else { + currentWidth = currentWidth + cellWidth + spaceBetweenCells + } + } + + self.categoryCollectionView.snp.updateConstraints { make in + make.height.equalTo(height) + } + } +} + +extension SignupCategorySelectView: UICollectionViewDelegate { + func collectionView( + _ collectionView: UICollectionView, + shouldSelectItemAt indexPath: IndexPath + ) -> Bool { + if let selectedCount = collectionView.indexPathsForSelectedItems?.count { + return selectedCount < 3 + } else { + return true + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift index 6fa9d5f..c69ff38 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -21,7 +21,7 @@ final class SignupTextField: BaseView { fileprivate let textField = UITextField().then { $0.font = .medium(size: 14) - $0.textColor = .gray30 + $0.textColor = .gray100 } init(placeholder: String?) { @@ -40,22 +40,6 @@ final class SignupTextField: BaseView { self.textField ]) self.textField.delegate = self - - self.textField.rx.controlEvent(.editingDidBegin) - .map { _ in true } - .asDriver(onErrorJustReturn: true) - .drive(onNext: { [weak self] isFocus in - self?.setFocusMode(isFocus: isFocus) - }) - .disposed(by: self.disposeBag) - - self.textField.rx.controlEvent(.editingDidEnd) - .map { _ in false } - .asDriver(onErrorJustReturn: false) - .drive(onNext: { [weak self] isFocus in - self?.setFocusMode(isFocus: isFocus) - }) - .disposed(by: self.disposeBag) } override func bindConstraints() { @@ -77,17 +61,6 @@ final class SignupTextField: BaseView { } } - private func setFocusMode(isFocus: Bool) { - UIView.transition( - with: self, - duration: 0.3, - options: .curveEaseInOut - ) { [weak self] in - self?.containerView.backgroundColor = isFocus ? .white : .gray5 - self?.textField.textColor = isFocus ? .gray100 : .gray30 - } - } - private func setPlaceholder(placeholder: String?) { guard let placeholder = placeholder else { return } let attributedString = NSAttributedString( diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift index a2fe2eb..2823475 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift @@ -12,15 +12,20 @@ final class SignupCategoryCollectionViewCell: BaseCollectionViewCell { self.titleLabel.textColor = self.isSelected ? .white : .green + self.titleLabel.font = self.isSelected + ? .bold(size: 14) + : .regular(size: 14) } } private let titleLabel = UILabel().then { $0.textColor = .green $0.font = .regular(size: 14) + $0.textAlignment = .center } override func setup() { + self.backgroundColor = UIColor(r: 242, g: 251, b: 247) self.layer.cornerRadius = 8 self.addSubViews([ self.titleLabel @@ -29,10 +34,11 @@ final class SignupCategoryCollectionViewCell: BaseCollectionViewCell { override func bindConstraints() { self.titleLabel.snp.makeConstraints { make in - make.left.equalToSuperview().offset(16) - make.right.equalToSuperview().offset(-16) + make.left.equalToSuperview().offset(16).priority(.high) + make.right.equalToSuperview().offset(-16).priority(.high) make.top.equalToSuperview() make.bottom.equalToSuperview() + make.height.equalTo(40) } } From fc0c5f607ff3b2b1b586a1d89d3f12a7626a3004 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 13 Mar 2022 15:24:52 +0900 Subject: [PATCH 020/166] =?UTF-8?q?feat:=20=ED=8F=AC=ED=86=A0=ED=94=BC?= =?UTF-8?q?=EC=BB=A4=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 53 ++++++++++++++ 3dollar-in-my-pocket-manager/Info.plist | 4 ++ .../membership/signup/SignupCoordinator.swift | 70 +++++++++++++++++++ .../signup/SignupViewController.swift | 44 +++++++++++- .../signup/subviews/SignupPhotoView.swift | 9 +++ 5 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 89e0aca..2c0c966 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -70,6 +70,12 @@ 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */; }; 6EE2624327DDAAD1008B3531 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; 6EE2624427DDAAD1008B3531 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */; }; + 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624927DDBE64008B3531 /* SPPermissionsCamera */; }; + 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624B27DDBE64008B3531 /* SPPermissionsLocationAlways */; }; + 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */; }; + 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; + 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -153,6 +159,7 @@ 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPUtils.swift; sourceTree = ""; }; 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleExtensions.swift; sourceTree = ""; }; 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; + 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCoordinator.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -162,15 +169,20 @@ files = ( 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */, 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */, + 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, + 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, + 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, + 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6EE2624327DDAAD1008B3531 /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, + 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -196,6 +208,7 @@ 6E142D6127D785A40084480C /* SignupView.swift */, 6E473B9527D861B800232139 /* SignupViewController.swift */, 6E7A49D127D891AA00E6653C /* SignupReactor.swift */, + 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */, ); path = signup; sourceTree = ""; @@ -483,6 +496,11 @@ 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */, 6EE0CFB527CB5D850027A426 /* ReactorKit */, 6EE0CFC027CB64E40027A426 /* Alamofire */, + 6EE2624927DDBE64008B3531 /* SPPermissionsCamera */, + 6EE2624B27DDBE64008B3531 /* SPPermissionsLocationAlways */, + 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */, + 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */, + 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -519,6 +537,7 @@ 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */, 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */, + 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -592,6 +611,7 @@ 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, + 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, @@ -886,6 +906,14 @@ minimumVersion = 5.0.0; }; }; + 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ivanvorobei/SPPermissions"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -939,6 +967,31 @@ package = 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */; productName = Alamofire; }; + 6EE2624927DDBE64008B3531 /* SPPermissionsCamera */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */; + productName = SPPermissionsCamera; + }; + 6EE2624B27DDBE64008B3531 /* SPPermissionsLocationAlways */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */; + productName = SPPermissionsLocationAlways; + }; + 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */; + productName = SPPermissionsLocationWhenInUse; + }; + 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */; + productName = SPPermissionsNotification; + }; + 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */; + productName = SPPermissionsPhotoLibrary; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 6EB94E9827CB208E00609E77 /* Project object */; diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index bd0c1cc..628ff52 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,6 +2,10 @@ + NSPhotoLibraryUsageDescription + 가게 인증 사진을 가져오기 위해 앨범권한을 허용해주세요. + NSCameraUsageDescription + 가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요. KAKAO_APP_KEY $(KAKAO_APP_KEY) API_URL diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift new file mode 100644 index 0000000..974742e --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -0,0 +1,70 @@ +import UIKit + +import SPPermissions +import SPPermissionsPhotoLibrary +import SPPermissionsCamera + +protocol SignupCoordinator: BaseCoordinator, AnyObject { + func showPhotoActionSheet() + + func showCamera() +} + +extension SignupCoordinator where Self: BaseViewController { + func showPhotoActionSheet() { + let alert = UIAlertController( + title: "이미지 불러오기", + message: nil, + preferredStyle: .actionSheet + ) + let libraryAction = UIAlertAction( + title: "앨범", + style: .default + ) { _ in + if SPPermissions.Permission.photoLibrary.authorized { +// self.showRegisterPhoto(storeId: storeId) + } else { + let controller = SPPermissions.native([.photoLibrary]) + + controller.delegate = self as? SPPermissionsDelegate + controller.present(on: self) + } + } + let cameraAction = UIAlertAction( + title: "카메라", + style: .default + ) { _ in + if SPPermissions.Permission.camera.authorized { + self.showCamera() + } else { + let controller = SPPermissions.native([.camera]) + + controller.delegate = self as? SPPermissionsDelegate + controller.present(on: self) + } + } + let cancelAction = UIAlertAction( + title: "취소", + style: .cancel, + handler: nil + ) + + alert.addAction(libraryAction) + alert.addAction(cameraAction) + alert.addAction(cancelAction) + self.presenter.present(alert, animated: true) + } + + func showCamera() { + let imagePicker = UIImagePickerController().then { + $0.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate + $0.sourceType = .camera + $0.cameraCaptureMode = .photo + } + + self.presenter.tabBarController?.present( + imagePicker, + animated: true + ) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 184c5ff..40402c6 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -2,10 +2,12 @@ import UIKit import ReactorKit import RxSwift +import SPPermissions -final class SignupViewController: BaseViewController, View { +final class SignupViewController: BaseViewController, View, SignupCoordinator { private let signupView = SignupView() private let signupReactor = SignupReactor(categoryService: CategoryService()) + private weak var coordinator: SignupCoordinator? static func instance() -> SignupViewController { return SignupViewController(nibName: nil, bundle: nil) @@ -19,6 +21,7 @@ final class SignupViewController: BaseViewController, View { super.viewDidLoad() self.reactor = self.signupReactor + self.coordinator = self self.signupReactor.action.onNext(.viewDidLoad) } @@ -29,6 +32,13 @@ final class SignupViewController: BaseViewController, View { self?.navigationController?.popViewController(animated: true) }) .disposed(by: self.disposeBag) + + self.signupView.photoView.rx.tapUploadButton + .asDriver() + .drive(onNext: { [weak self] in + self?.coordinator?.showPhotoActionSheet() + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: SignupReactor) { @@ -87,3 +97,35 @@ final class SignupViewController: BaseViewController, View { .disposed(by: self.disposeBag) } } + +extension SignupViewController: UIImagePickerControllerDelegate { + func imagePickerController( + _ picker: UIImagePickerController, + didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] + ) { + if let photo = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { +// self.viewModel.input.registerPhoto.onNext(photo) + } + + picker.dismiss(animated: true, completion: nil) // picker를 닫아줌 + } +} + +extension SignupViewController: SPPermissionsDelegate { + func didAllowPermission(_ permission: SPPermissions.Permission) { + if permission == .camera { + self.coordinator?.showCamera() + } else if permission == .photoLibrary { +// self.coordinator?.showRegisterPhoto(storeId: self.viewModel.storeId) + } + } + + func didDeniedPermission(_ permission: SPPermissions.Permission) { + let texts = SPPermissionsDeniedAlertTexts() + + texts.titleText = "권한 거절" + texts.descriptionText = "설정에서 해당 권한을 허용해주세요." + texts.actionText = "설정" + texts.cancelText = "취소" + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift index 2e897c2..225209c 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift @@ -1,5 +1,8 @@ import UIKit +import RxSwift +import RxCocoa + final class SignupPhotoView: BaseView { private let titleLabel = UILabel().then { $0.font = .bold(size: 14) @@ -94,3 +97,9 @@ final class SignupPhotoView: BaseView { } } } + +extension Reactive where Base: SignupPhotoView { + var tapUploadButton: ControlEvent { + return base.uploadButton.rx.tap + } +} From 87941ec71b24ee097ac9bde376ccb87a913a01e6 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 13 Mar 2022 16:15:15 +0900 Subject: [PATCH 021/166] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20validate=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../membership/signup/SignupCoordinator.swift | 19 +++++-- .../membership/signup/SignupReactor.swift | 54 +++++++++++-------- .../signup/SignupViewController.swift | 35 ++++++++++-- .../signup/subviews/SignupPhotoView.swift | 10 +++- 4 files changed, 88 insertions(+), 30 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift index 974742e..8dd56e5 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -1,4 +1,5 @@ import UIKit +import PhotosUI import SPPermissions import SPPermissionsPhotoLibrary @@ -22,7 +23,7 @@ extension SignupCoordinator where Self: BaseViewController { style: .default ) { _ in if SPPermissions.Permission.photoLibrary.authorized { -// self.showRegisterPhoto(storeId: storeId) + self.showAlbumPicker() } else { let controller = SPPermissions.native([.photoLibrary]) @@ -62,9 +63,17 @@ extension SignupCoordinator where Self: BaseViewController { $0.cameraCaptureMode = .photo } - self.presenter.tabBarController?.present( - imagePicker, - animated: true - ) + self.presenter.present(imagePicker, animated: true) + } + + func showAlbumPicker() { + var configuration = PHPickerConfiguration() + + configuration.filter = .images + + let picker = PHPickerViewController(configuration: configuration) + + picker.delegate = self as? PHPickerViewControllerDelegate + self.presenter.present(picker, animated: true, completion: nil) } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index afb5501..d270440 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -55,16 +55,28 @@ final class SignupReactor: BaseReactor, Reactor { return self.fetchCategories() case .inputOwnerName(let ownerName): - return .just(.setOwnerName(ownerName)) + return .merge([ + .just(.setOwnerName(ownerName)), + .just(.setSignupButtonEnable(self.validate(ownerName: ownerName))) + ]) case .inputStoreName(let storeName): - return .just(.setStoreName(storeName)) + return .merge([ + .just(.setStoreName(storeName)), + .just(.setSignupButtonEnable(self.validate(storeName: storeName))) + ]) case .inputRegisterationNumber(let registerationNumber): - return .just(.setRegisterationNumber(registerationNumber)) + return .merge([ + .just(.setRegisterationNumber(registerationNumber)), + .just(.setSignupButtonEnable(self.validate(registerationNumber: registerationNumber))) + ]) case .inputPhoneNumber(let phoneNumber): - return .just(.setPhoneNumber(phoneNumber)) + return .merge([ + .just(.setPhoneNumber(phoneNumber)), + .just(.setSignupButtonEnable(self.validate(phoneNumber: phoneNumber))) + ]) case .selectCategory(let index): let selectedCategory = self.currentState.categories[index] @@ -76,21 +88,13 @@ final class SignupReactor: BaseReactor, Reactor { } case .selectPhoto(let photo): - return .just(.setPhoto(photo)) + return .merge([ + .just(.setPhoto(photo)), + .just(.setSignupButtonEnable(self.validate(photo: photo))) + ]) case .tapSignup: - if self.validate( - ownerName: self.currentState.ownerName, - storeName: self.currentState.storeName, - registerationNumber: self.currentState.registerationNumber, - photo: self.currentState.photo - ) { - // 회원가입 - return .empty() - } else { - // 에러 - return .empty() - } + return .empty() } } @@ -138,14 +142,22 @@ final class SignupReactor: BaseReactor, Reactor { } private func validate( - ownerName: String, - storeName: String, - registerationNumber: String, - photo: UIImage? + ownerName: String? = nil, + storeName: String? = nil, + registerationNumber: String? = nil, + phoneNumber: String? = nil, + photo: UIImage? = nil ) -> Bool { + let ownerName = ownerName ?? self.currentState.ownerName + let storeName = storeName ?? self.currentState.storeName + let registerationNumber = registerationNumber ?? self.currentState.registerationNumber + let phoneNumber = phoneNumber ?? self.currentState.phoneNumber + let photo = photo ?? self.currentState.photo + return !ownerName.isEmpty && !storeName.isEmpty && !registerationNumber.isEmpty + && !phoneNumber.isEmpty && photo != nil } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 40402c6..875a6b5 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -1,4 +1,5 @@ import UIKit +import PhotosUI import ReactorKit import RxSwift @@ -89,6 +90,13 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { } .disposed(by: self.disposeBag) + reactor.state + .map { $0.photo } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: nil) + .drive(self.signupView.photoView.rx.photo) + .disposed(by: self.disposeBag) + reactor.state .map { $0.isEnableSignupButton } .distinctUntilChanged() @@ -98,15 +106,17 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { } } -extension SignupViewController: UIImagePickerControllerDelegate { +extension SignupViewController: + UIImagePickerControllerDelegate & UINavigationControllerDelegate +{ func imagePickerController( _ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { if let photo = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { -// self.viewModel.input.registerPhoto.onNext(photo) + self.signupReactor.action.onNext(.selectPhoto(photo)) } - + picker.dismiss(animated: true, completion: nil) // picker를 닫아줌 } } @@ -129,3 +139,22 @@ extension SignupViewController: SPPermissionsDelegate { texts.cancelText = "취소" } } + +extension SignupViewController: PHPickerViewControllerDelegate { + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + picker.dismiss(animated: true, completion: nil) + + let itemProvider = results.first?.itemProvider + + if let itemProvider = itemProvider, + itemProvider.canLoadObject(ofClass: UIImage.self) { + itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in + if let photo = image as? UIImage { + self.signupReactor.action.onNext(.selectPhoto(photo)) + } + } + } else { + // TODO: Handle empty results or item provider not being able load UIImage + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift index 225209c..b193942 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift @@ -26,9 +26,11 @@ final class SignupPhotoView: BaseView { $0.layer.cornerRadius = 8 } - private let imageView = UIImageView().then { + fileprivate let imageView = UIImageView().then { $0.backgroundColor = UIColor(r: 236, g: 236, b: 236) + $0.contentMode = .scaleAspectFill $0.layer.cornerRadius = 8 + $0.layer.masksToBounds = true } fileprivate let uploadButton = UIButton().then { @@ -102,4 +104,10 @@ extension Reactive where Base: SignupPhotoView { var tapUploadButton: ControlEvent { return base.uploadButton.rx.tap } + + var photo: Binder { + return Binder(self.base) { view, photo in + view.imageView.image = photo + } + } } From e35b92e7fe57cb117cdc5e6b6cd914f8990d7144 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 13 Mar 2022 20:36:48 +0900 Subject: [PATCH 022/166] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20API=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 +++-- .../SceneDelegate.swift | 2 +- .../membership/signin/SigninCoordinator.swift | 2 +- .../membership/signin/SigninReactor.swift | 4 +- .../signin/SigninViewController.swift | 4 +- .../membership/signup/SignupReactor.swift | 65 ++++++++++++++++++- .../signup/SignupViewController.swift | 21 +++++- .../subviews/SignupCategorySelectView.swift | 1 + .../models/dto/request/FileType.swift | 5 ++ .../models/dto/request/LoginRequest.swift | 3 +- .../models/dto/request/SignupRequest.swift | 18 ++++- .../models/errors/HTTPError.swift | 10 +++ .../strings/en.lproj/Localizations.strings | 1 + .../services/AuthService.swift | 59 ++++++++++++++++- .../services/ImageService.swift | 6 +- 15 files changed, 194 insertions(+), 23 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/FileType.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 2c0c966..2373fda 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -31,6 +31,9 @@ 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; + 6E6F98F127DE001E001302A6 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; + 6E6F98F227DE001E001302A6 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D927D8CE1800E6653C /* ImageService.swift */; }; @@ -68,8 +71,6 @@ 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFC027CB64E40027A426 /* Alamofire */; }; 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */; }; 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */; }; - 6EE2624327DDAAD1008B3531 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; platformFilter = ios; }; - 6EE2624427DDAAD1008B3531 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */; }; 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624927DDBE64008B3531 /* SPPermissionsCamera */; }; 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624B27DDBE64008B3531 /* SPPermissionsLocationAlways */; }; @@ -89,13 +90,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EE2624527DDAAD1008B3531 /* Embed Frameworks */ = { + 6E6F98F327DE001E001302A6 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EE2624427DDAAD1008B3531 /* Base.framework in Embed Frameworks */, + 6E6F98F227DE001E001302A6 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -130,6 +131,7 @@ 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; + 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadResponse.swift; sourceTree = ""; }; 6E7A49D927D8CE1800E6653C /* ImageService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageService.swift; sourceTree = ""; }; @@ -172,13 +174,13 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, + 6E6F98F127DE001E001302A6 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, - 6EE2624327DDAAD1008B3531 /* Base.framework in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, @@ -266,6 +268,7 @@ 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */, 6E1F54AB27CB94EB0050BBBA /* Requestable.swift */, 6E7A49DB27D8D03E00E6653C /* SignupRequest.swift */, + 6E6F98F427DE0BAE001302A6 /* FileType.swift */, ); path = request; sourceTree = ""; @@ -478,7 +481,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6EE2624527DDAAD1008B3531 /* Embed Frameworks */, + 6E6F98F327DE001E001302A6 /* Embed Frameworks */, ); buildRules = ( ); @@ -597,6 +600,7 @@ 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, + 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */, 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index 6540663..d207401 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -15,7 +15,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { self.window = UIWindow(frame: windowScene.coordinateSpace.bounds) self.window?.windowScene = windowScene - self.window?.rootViewController = SignupViewController.instance() + self.window?.rootViewController = SigninViewController.instance() self.window?.makeKeyAndVisible() } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift index 6e41bad..f370952 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift @@ -10,7 +10,7 @@ protocol SigninCoordinator: AnyObject, BaseCoordinator { extension SigninCoordinator { func pushSignup(socialType: SocialType, token: String) { - let viewControler = SignupViewController.instance() + let viewControler = SignupViewController.instance(socialType: socialType, token: token) self.presenter.navigationController?.pushViewController(viewControler, animated: true) } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift index 2f82aed..81e6b96 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift @@ -24,12 +24,12 @@ final class SigninReactor: BaseReactor, Reactor { let goToMainPublisher = PublishRelay() private let kakaoSignInManager: KakaoSignInManagerProtocol private let appleSignInManager: AppleSignInManagerProtocol - private let authService: AuthServiceProtocol + private let authService: AuthServiceType init( kakaoManager: KakaoSignInManagerProtocol, appleSignInManager: AppleSignInManagerProtocol, - authService: AuthServiceProtocol + authService: AuthServiceType ) { self.kakaoSignInManager = kakaoManager self.appleSignInManager = appleSignInManager diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 4ab730b..19343af 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -15,7 +15,9 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { static func instance() -> UINavigationController { let viewController = SigninViewController(nibName: nil, bundle: nil) - return UINavigationController(rootViewController: viewController) + return UINavigationController(rootViewController: viewController).then { + $0.isNavigationBarHidden = true + } } override func loadView() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index d270440..9d668ce 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -27,6 +27,7 @@ final class SignupReactor: BaseReactor, Reactor { case setPhoto(UIImage) case setSignupButtonEnable(Bool) case pushWaiting + case goToSignin case showErrorAlert(Error) } @@ -43,10 +44,25 @@ final class SignupReactor: BaseReactor, Reactor { let initialState = State() let pushWaitingPublisher = PublishRelay() + let goToSigninPublisher = PublishRelay() + private let socialType: SocialType + private let token: String private let categoryService: CategoryServiceType + private let imageService: ImageServiceType + private let authService: AuthServiceType - init(categoryService: CategoryServiceType) { + init( + socialType: SocialType, + token: String, + categoryService: CategoryServiceType, + imageService: ImageServiceType, + authService: AuthServiceType + ) { + self.socialType = socialType + self.token = token self.categoryService = categoryService + self.imageService = imageService + self.authService = authService } func mutate(action: Action) -> Observable { @@ -94,7 +110,7 @@ final class SignupReactor: BaseReactor, Reactor { ]) case .tapSignup: - return .empty() + return self.signup() } } @@ -134,6 +150,9 @@ final class SignupReactor: BaseReactor, Reactor { case .pushWaiting: self.pushWaitingPublisher.accept(()) + case .goToSignin: + self.goToSigninPublisher.accept(()) + case .showErrorAlert(let error): self.showErrorAlert.accept(error) } @@ -167,4 +186,46 @@ final class SignupReactor: BaseReactor, Reactor { .map { .setCategories($0) } .catch { .just(.showErrorAlert($0)) } } + + private func signup() -> Observable { + let ownerName = self.currentState.ownerName + let storeName = self.currentState.storeName + let registerationNumber = self.currentState.registerationNumber + let phoneNumber = self.currentState.phoneNumber + let categories = self.currentState.selectedCategories + let photo = self.currentState.photo ?? UIImage() + let socialType = self.socialType + let token = self.token + + return self.imageService.uploadImage(image: photo, fileType: .certification) + .flatMap { [weak self] imageResponse -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + return self.authService.signup( + ownerName: ownerName, + storeName: storeName, + registerationNumber: registerationNumber, + phoneNumber: phoneNumber, + categories: categories, + photoUrl: imageResponse.imageUrl, + socialType: socialType, + token: token + ) + .map { _ in .pushWaiting } + .catch { error in + if let httpError = error as? HTTPError { + switch httpError { + case .forbidden: + return .just(.pushWaiting) + + case .conflict: + return .just(.goToSignin) + + default: + break + } + } + return .just(.showErrorAlert(error)) + } + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 875a6b5..214405e 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -7,11 +7,26 @@ import SPPermissions final class SignupViewController: BaseViewController, View, SignupCoordinator { private let signupView = SignupView() - private let signupReactor = SignupReactor(categoryService: CategoryService()) + private let signupReactor: SignupReactor private weak var coordinator: SignupCoordinator? - static func instance() -> SignupViewController { - return SignupViewController(nibName: nil, bundle: nil) + init(socialType: SocialType, token: String) { + self.signupReactor = SignupReactor( + socialType: socialType, + token: token, + categoryService: CategoryService(), + imageService: ImageService(), + authService: AuthService() + ) + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + static func instance(socialType: SocialType, token: String) -> SignupViewController { + return SignupViewController(socialType: socialType, token: token) } override func loadView() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift index 8642464..607540f 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift @@ -36,6 +36,7 @@ final class SignupCategorySelectView: BaseView { forCellWithReuseIdentifier: SignupCategoryCollectionViewCell.registerID ) $0.allowsMultipleSelection = true + $0.backgroundColor = .clear } override func setup() { diff --git a/3dollar-in-my-pocket-manager/models/dto/request/FileType.swift b/3dollar-in-my-pocket-manager/models/dto/request/FileType.swift new file mode 100644 index 0000000..0f37b4d --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/FileType.swift @@ -0,0 +1,5 @@ +enum FileType: String { + case certification = "BOSS_STORE_CERTIFICATION_IMAGE" + case store = "BOSS_STORE_IMAGE" + case menu = "BOSS_STORE_MENU_IMAGE" +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift index dc5d23d..d8bd077 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/LoginRequest.swift @@ -6,7 +6,8 @@ struct LoginRequest: Requestable { var params: [String : Any] { return [ - "socialType": socialType.rawValue + "socialType": socialType.rawValue, + "token": token ] } } diff --git a/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift index f3006f8..bed386a 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift @@ -1,9 +1,25 @@ import Foundation -struct SignupRequest { +struct SignupRequest: Requestable { let bossName: String let businessNumber: String let certificationPhotoUrl: String let contactsNumber: String let socialType: SocialType + let storeCategoriesIds: [String] + let storeName: String + let token: String + + var params: [String : Any] { + [ + "bossName": bossName, + "businessNumber": businessNumber, + "certificationPhotoUrl": certificationPhotoUrl, + "contactsNumber": contactsNumber, + "socialType": socialType.rawValue, + "storeCategoriesIds": storeCategoriesIds, + "storeName": storeName, + "token": token + ] + } } diff --git a/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift b/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift index 9d40558..c5ac27e 100644 --- a/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift +++ b/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift @@ -3,6 +3,7 @@ public enum HTTPError: Int, Error { case unauthorized = 401 case forbidden = 403 case notFound = 404 + case conflict = 409 case internalServierError = 500 case badGateway = 502 case maintenance = 503 @@ -13,16 +14,25 @@ extension HTTPError { switch self { case .badRequest: return "http_error_bad_request".localized + case .unauthorized: return "http_error_unauthorized".localized + case .forbidden: return "http_error_forbidden".localized + case .notFound: return "http_error_not_found".localized + + case .conflict: + return "http_error_conflict".localized + case .internalServierError: return "http_error_internal_server_error".localized + case .badGateway: return "http_error_bad_gateway".localized + case .maintenance: return "http_error_maintenance".localized } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 6003b2c..7cb40e6 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -7,6 +7,7 @@ "http_error_unauthorized" = "세션이 만료되었습니다.\n다시 로그인해주세요."; "http_error_forbidden" = "탈퇴한 사용자입니다."; "http_error_not_found" = "없는 데이터입니다."; +"http_error_conflict" = "이미 존재하는 데이터입니다."; "http_error_internal_server_error" = "서버에서 오류가 발생했습니다.\n잠시 후 다시 시도해주세요!"; "http_error_bad_gateway" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; "http_error_maintenance" = "서버 점검중입니다.\n잠시 후 다시 시도해주세요."; diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 99e86b8..93b2755 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -1,11 +1,23 @@ import Alamofire import RxSwift +import UIKit -protocol AuthServiceProtocol { +protocol AuthServiceType { func login(socialType: SocialType, token: String) -> Observable + + func signup( + ownerName: String, + storeName: String, + registerationNumber: String, + phoneNumber: String, + categories: [StoreCategory], + photoUrl: String, + socialType: SocialType, + token: String + ) -> Observable } -struct AuthService: AuthServiceProtocol { +struct AuthService: AuthServiceType { func login(socialType: SocialType, token: String) -> Observable { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/auth/login" @@ -16,6 +28,7 @@ struct AuthService: AuthServiceProtocol { urlString, method: .post, parameters: parameters, + encoding: JSONEncoding.default, headers: headers ).responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { @@ -28,4 +41,46 @@ struct AuthService: AuthServiceProtocol { return Disposables.create() } } + + func signup( + ownerName: String, + storeName: String, + registerationNumber: String, + phoneNumber: String, + categories: [StoreCategory], + photoUrl: String, + socialType: SocialType, + token: String + ) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/auth/signup" + let parameters = SignupRequest( + bossName: ownerName, + businessNumber: registerationNumber, + certificationPhotoUrl: photoUrl, + contactsNumber: phoneNumber, + socialType: socialType, + storeCategoriesIds: categories.map { $0.categoryId }, + storeName: storeName, + token: token + ).params + let headers = HTTPUtils.jsonHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .post, + parameters: parameters, + encoding: JSONEncoding.default, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } } diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift index 279a216..7dbd561 100644 --- a/3dollar-in-my-pocket-manager/services/ImageService.swift +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -4,17 +4,17 @@ import Alamofire import RxSwift protocol ImageServiceType { - func uploadImage(image: UIImage) -> Observable + func uploadImage(image: UIImage, fileType: FileType) -> Observable } struct ImageService: ImageServiceType { - func uploadImage(image: UIImage) -> Observable { + func uploadImage(image: UIImage, fileType: FileType) -> Observable { guard let data = image.jpegData(compressionQuality: 0.8) else { return .error(BaseError.nilValue) } return .create { observer in - let urlString = HTTPUtils.url + "/boss/v1/upload/" + let urlString = HTTPUtils.url + "/boss/v1/upload/\(fileType.rawValue)" HTTPUtils.fileUploadSession.upload(data, to: urlString) .responseDecodable(of: ResponseContainer.self) { response in From ed6b96f7ad471e31bbd05e8ded7cc1894a5c1900 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 13 Mar 2022 20:56:31 +0900 Subject: [PATCH 023/166] =?UTF-8?q?feat:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20API=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/ImageService.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift index 7dbd561..e9061aa 100644 --- a/3dollar-in-my-pocket-manager/services/ImageService.swift +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -2,6 +2,7 @@ import UIKit import Alamofire import RxSwift +import Base protocol ImageServiceType { func uploadImage(image: UIImage, fileType: FileType) -> Observable @@ -16,7 +17,14 @@ struct ImageService: ImageServiceType { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/upload/\(fileType.rawValue)" - HTTPUtils.fileUploadSession.upload(data, to: urlString) + HTTPUtils.fileUploadSession.upload(multipartFormData: { multipartFormData in + multipartFormData.append( + data, + withName: "file", + fileName: DateUtils.todayString(format: "yyyy-MM-dd'T'HH-mm-ss") + "_image.png", + mimeType: "image/png" + ) + }, to: urlString) .responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { observer.processValue(response: response) From b8c7cd4a39682b200732d0575e49e7d1a3995ea8 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 20 Mar 2022 15:22:17 +0900 Subject: [PATCH 024/166] =?UTF-8?q?feat:=20=EA=B6=8C=ED=95=9C=20=EA=B1=B0?= =?UTF-8?q?=EC=A0=88=20=EC=95=8C=EB=9F=BF=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 ++++---- .../membership/signup/SignupCoordinator.swift | 2 ++ .../signup/SignupViewController.swift | 29 ++++++++++++++----- .../strings/en.lproj/Localizations.strings | 5 ++++ 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 2373fda..a60ea71 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -31,8 +31,6 @@ 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; - 6E6F98F127DE001E001302A6 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; platformFilter = ios; }; - 6E6F98F227DE001E001302A6 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; @@ -41,6 +39,8 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; + 6E9F994F27E6FA4100C95C41 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; }; + 6E9F995027E6FA4100C95C41 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -90,13 +90,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E6F98F327DE001E001302A6 /* Embed Frameworks */ = { + 6E9F995127E6FA4100C95C41 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E6F98F227DE001E001302A6 /* Base.framework in Embed Frameworks */, + 6E9F995027E6FA4100C95C41 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -174,7 +174,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E6F98F127DE001E001302A6 /* Base.framework in Frameworks */, + 6E9F994F27E6FA4100C95C41 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -481,7 +481,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E6F98F327DE001E001302A6 /* Embed Frameworks */, + 6E9F995127E6FA4100C95C41 /* Embed Frameworks */, ); buildRules = ( ); diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift index 8dd56e5..43986ca 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -9,6 +9,8 @@ protocol SignupCoordinator: BaseCoordinator, AnyObject { func showPhotoActionSheet() func showCamera() + + func showAlbumPicker() } extension SignupCoordinator where Self: BaseViewController { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 214405e..b337ecc 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -4,6 +4,7 @@ import PhotosUI import ReactorKit import RxSwift import SPPermissions +import Base final class SignupViewController: BaseViewController, View, SignupCoordinator { private let signupView = SignupView() @@ -55,6 +56,13 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { self?.coordinator?.showPhotoActionSheet() }) .disposed(by: self.eventDisposeBag) + + self.signupReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: SignupReactor) { @@ -141,17 +149,22 @@ extension SignupViewController: SPPermissionsDelegate { if permission == .camera { self.coordinator?.showCamera() } else if permission == .photoLibrary { -// self.coordinator?.showRegisterPhoto(storeId: self.viewModel.storeId) + self.coordinator?.showAlbumPicker() } } func didDeniedPermission(_ permission: SPPermissions.Permission) { - let texts = SPPermissionsDeniedAlertTexts() - - texts.titleText = "권한 거절" - texts.descriptionText = "설정에서 해당 권한을 허용해주세요." - texts.actionText = "설정" - texts.cancelText = "취소" + AlertUtils.showWithCancel( + viewController: self, + title: "authorization_denied_title".localized, + message: "authorization_denied_description".localized, + okButtonTitle: "authorization_setting".localized + ) { + guard let url = URL(string: UIApplication.openSettingsURLString) else { return } + if UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url) + } + } } } @@ -162,7 +175,7 @@ extension SignupViewController: PHPickerViewControllerDelegate { let itemProvider = results.first?.itemProvider if let itemProvider = itemProvider, - itemProvider.canLoadObject(ofClass: UIImage.self) { + itemProvider.canLoadObject(ofClass: UIImage.self) { itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in if let photo = image as? UIImage { self.signupReactor.action.onNext(.selectPhoto(photo)) diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 7cb40e6..9ab54db 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -13,6 +13,11 @@ "http_error_maintenance" = "서버 점검중입니다.\n잠시 후 다시 시도해주세요."; "http_error_timeout" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; +// authorization +"authorization_denied_title" = "권한 거절"; +"authorization_denied_description" = "사진을 첨부하기 위해 권한이 필요합니다.\n설정에서 해당 권한을 허용해주세요."; +"authorization_setting" = "설정"; + // signup "signup_title" = "회원가입"; "signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; From 46293b3855c34e6d2a69359e180cf2f8978d4c48 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 20 Mar 2022 16:10:34 +0900 Subject: [PATCH 025/166] =?UTF-8?q?feat:=20=EC=8A=B9=EC=9D=B8=20=EB=8C=80?= =?UTF-8?q?=EA=B8=B0=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 24 +++++++++ .../waiting/WaitingCoordinator.swift | 22 ++++++++ .../membership/waiting/WaitingReactor.swift | 48 +++++++++++++++++ .../membership/waiting/WaitingView.swift | 52 +++++++++++++++++++ .../waiting/WaitingViewController.swift | 52 +++++++++++++++++++ .../extensions/UIColorExtensions.swift | 3 ++ .../strings/en.lproj/Localizations.strings | 5 ++ 7 files changed, 206 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index a60ea71..bd06278 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -21,6 +21,9 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; + 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; + 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; + 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; @@ -41,6 +44,7 @@ 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; 6E9F994F27E6FA4100C95C41 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; }; 6E9F995027E6FA4100C95C41 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -120,6 +124,9 @@ 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObserverExtensions.swift; sourceTree = ""; }; 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; + 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingViewController.swift; sourceTree = ""; }; + 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingReactor.swift; sourceTree = ""; }; + 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingCoordinator.swift; sourceTree = ""; }; 6E473B8F27D85B7C00232139 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; @@ -139,6 +146,7 @@ 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategoryResponse.swift; sourceTree = ""; }; 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryService.swift; sourceTree = ""; }; 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategory.swift; sourceTree = ""; }; + 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -301,6 +309,17 @@ path = subviews; sourceTree = ""; }; + 6E9F995227E7018D00C95C41 /* waiting */ = { + isa = PBXGroup; + children = ( + 6E9F995327E7019700C95C41 /* WaitingView.swift */, + 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */, + 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */, + 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */, + ); + path = waiting; + sourceTree = ""; + }; 6EB94E9727CB208E00609E77 = { isa = PBXGroup; children = ( @@ -351,6 +370,7 @@ 6ED8839627CB39F600278E14 /* membership */ = { isa = PBXGroup; children = ( + 6E9F995227E7018D00C95C41 /* waiting */, 6E142D6027D7859B0084480C /* signup */, 6ED8839727CB39FB00278E14 /* signin */, ); @@ -612,6 +632,7 @@ 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, + 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */, 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, @@ -623,15 +644,18 @@ 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, + 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, + 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, + 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift new file mode 100644 index 0000000..0829887 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift @@ -0,0 +1,22 @@ +import Foundation +import MessageUI + +protocol WaitingCoordinator: AnyObject, BaseCoordinator { + func showMailComposer(message: String) +} + +extension WaitingCoordinator where Self: WaitingViewController { + func showMailComposer(message: String) { + guard MFMailComposeViewController.canSendMail() else { return} + let composer = MFMailComposeViewController().then { + $0.mailComposeDelegate = self as? MFMailComposeViewControllerDelegate + $0.setToRecipients(["3dollarinmypocket@gmail.com"]) + $0.setSubject("가슴속 3천원 사장님 문의") + $0.setMessageBody(message, isHTML: false) + } + + self.present(composer, animated: true, completion: nil) + } + + +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift new file mode 100644 index 0000000..f1393ad --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift @@ -0,0 +1,48 @@ +import Foundation +import UIKit + +import ReactorKit +import RxSwift +import RxCocoa + +final class WaitingReactor: Reactor { + enum Action { + case tapQuestionButton + } + + enum Mutation { + case presentMailComposer(message: String) + } + + struct State { + + } + + let initialState = State() + let presentMailComposerPublisher = PublishRelay() + + func mutate(action: Action) -> Observable { + switch action { + case .tapQuestionButton: + let message = "\n\n\n\n----------\n앱 버전: \(self.getAppVersion())\nOS: ios \(self.getiOSVersion())\n" + + return .just(.presentMailComposer(message: message)) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + switch mutation { + case .presentMailComposer(let message): + self.presentMailComposerPublisher.accept(message) + } + return state + } + + private func getiOSVersion() -> String { + return UIDevice.current.systemVersion + } + + private func getAppVersion() -> String { + return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift new file mode 100644 index 0000000..1eb04b2 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift @@ -0,0 +1,52 @@ +import UIKit + +final class WaitingView: BaseView { + private let titleLabel = UILabel().then { + $0.font = .bold(size: 30) + $0.textColor = .gray80 + $0.text = "waiting_title".localized + } + + private let descriptionLabel = UILabel().then { + $0.font = .regular(size: 14) + $0.textColor = .gray50 + $0.text = "waiting_description".localized + $0.numberOfLines = 0 + } + + let questionButton = UIButton().then { + $0.setTitleColor(.white, for: .normal) + $0.titleLabel?.font = .bold(size: 16) + $0.setTitle("waiting_question_button".localized, for: .normal) + $0.backgroundColor = .green + $0.layer.cornerRadius = 8 + } + + override func setup() { + self.backgroundColor = .white + self.addSubViews([ + self.titleLabel, + self.descriptionLabel, + self.questionButton + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(44) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.titleLabel.snp.bottom).offset(16) + } + + self.questionButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.bottom.equalTo(self.safeAreaLayoutGuide).offset(-50) + make.height.equalTo(48) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift new file mode 100644 index 0000000..680d381 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift @@ -0,0 +1,52 @@ +import UIKit +import MessageUI + +import ReactorKit + +final class WaitingViewController: BaseViewController, View, WaitingCoordinator { + private let waitingView = WaitingView() + private let waitingReactor = WaitingReactor() + private weak var coordinator: WaitingCoordinator? + + static func instance() -> WaitingViewController { + return WaitingViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.waitingView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.coordinator = self + self.reactor = self.waitingReactor + } + + override func bindEvent() { + self.waitingReactor.presentMailComposerPublisher + .asDriver(onErrorJustReturn: "") + .drive(onNext: {[weak self] message in + self?.coordinator?.showMailComposer(message: message) + }) + .disposed(by: self.eventDisposeBag) + } + + func bind(reactor: WaitingReactor) { + // Bind action + self.waitingView.questionButton.rx.tap + .map { Reactor.Action.tapQuestionButton } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + } +} + +extension WaitingViewController: MFMailComposeViewControllerDelegate { + func mailComposeController( + _ controller: MFMailComposeViewController, + didFinishWith result: MFMailComposeResult, + error: Error? + ) { + controller.dismiss(animated: true, completion: nil) + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index f86719b..920f8d4 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -13,6 +13,9 @@ extension UIColor { /// r: 120, g: 120, b: 120 static let gray50 = UIColor(r: 120, g: 120, b: 120) + /// r: 50 g: 50, b: 50 + static let gray80 = UIColor(r: 50, g: 50, b: 50) + /// r: 26, g: 26, b: 26 static let gray95 = UIColor(r: 26, g: 26, b: 26) diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 9ab54db..21dabdd 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -39,3 +39,8 @@ "signup_upload_photo" = "이미지 업로드"; "signup_button" = "회원 가입"; +// waiting +"waiting_title" = "승인 대기 중입니다."; +"waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; +"waiting_question_button" = "이메일로 문의하기"; + From aebb1f52ce40e8375fa3ec379c81db21a520bc46 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 20 Mar 2022 16:46:49 +0900 Subject: [PATCH 026/166] =?UTF-8?q?fix:=20ShowErrorAlert=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/base/BaseCoordinator.swift | 2 -- .../membership/signup/SignupCoordinator.swift | 11 +++++++++++ .../membership/signup/SignupViewController.swift | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift index d0db9ac..3674340 100644 --- a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift @@ -17,9 +17,7 @@ extension BaseCoordinator where Self: BaseViewController { func showErrorAlert(error: Error) { AlertUtils.showWithAction( viewController: self, - title: nil, message: error.localizedDescription, - okbuttonTitle: nil, onTapOk: nil ) } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift index 43986ca..12cfe37 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -11,6 +11,8 @@ protocol SignupCoordinator: BaseCoordinator, AnyObject { func showCamera() func showAlbumPicker() + + func pushWaiting() } extension SignupCoordinator where Self: BaseViewController { @@ -78,4 +80,13 @@ extension SignupCoordinator where Self: BaseViewController { picker.delegate = self as? PHPickerViewControllerDelegate self.presenter.present(picker, animated: true, completion: nil) } + + func pushWaiting() { + let viewController = WaitingViewController.instance() + + self.presenter.navigationController?.pushViewController( + viewController, + animated: true + ) + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index b337ecc..9c77750 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -57,6 +57,20 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { }) .disposed(by: self.eventDisposeBag) + self.signupReactor.pushWaitingPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.pushWaiting() + }) + .disposed(by: self.eventDisposeBag) + + self.signupReactor.goToSigninPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.presenter.navigationController?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + self.signupReactor.showErrorAlert .asDriver(onErrorJustReturn: BaseError.unknown) .drive(onNext: { [weak self] error in From 5db7ab135c739f48979002fa656c7db50cab80ae Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 20 Mar 2022 17:40:31 +0900 Subject: [PATCH 027/166] =?UTF-8?q?feat:=20=EB=A1=9C=EB=94=A9=20=EB=A7=A4?= =?UTF-8?q?=EB=8B=88=EC=A0=80=20=EC=B6=94=EA=B0=80,=20Signin=20with=20appl?= =?UTF-8?q?e=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 24 +++++++++++ .../3dollar-in-my-pocket-manager.entitlements | 10 +++++ .../domains/base/BaseCoordinator.swift | 7 ++++ .../domains/base/BaseReactor.swift | 1 + .../membership/signin/SigninCoordinator.swift | 2 + .../membership/signin/SigninReactor.swift | 17 +++++++- .../signin/SigninViewController.swift | 14 +++++++ .../membership/signup/SignupReactor.swift | 24 +++++++++-- .../signup/SignupViewController.swift | 7 ++++ .../UIViewControllerExtensions.swift | 12 ++++++ .../managers/loading/LoadingManager.swift | 41 +++++++++++++++++++ .../managers/loading/LoadingView.swift | 29 +++++++++++++ 12 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements create mode 100644 3dollar-in-my-pocket-manager/extensions/UIViewControllerExtensions.swift create mode 100644 3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift create mode 100644 3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index bd06278..cdabc15 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -24,6 +24,9 @@ 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; + 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7327E71455004FBE25 /* LoadingManager.swift */; }; + 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7527E714D6004FBE25 /* LoadingView.swift */; }; + 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */; }; 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; @@ -127,6 +130,10 @@ 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingViewController.swift; sourceTree = ""; }; 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingReactor.swift; sourceTree = ""; }; 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingCoordinator.swift; sourceTree = ""; }; + 6E37AF7327E71455004FBE25 /* LoadingManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingManager.swift; sourceTree = ""; }; + 6E37AF7527E714D6004FBE25 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = ""; }; + 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; + 6E37AF7927E71F11004FBE25 /* 3dollar-in-my-pocket-manager.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "3dollar-in-my-pocket-manager.entitlements"; sourceTree = ""; }; 6E473B8F27D85B7C00232139 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; @@ -281,6 +288,15 @@ path = request; sourceTree = ""; }; + 6E37AF7227E7144B004FBE25 /* loading */ = { + isa = PBXGroup; + children = ( + 6E37AF7327E71455004FBE25 /* LoadingManager.swift */, + 6E37AF7527E714D6004FBE25 /* LoadingView.swift */, + ); + path = loading; + sourceTree = ""; + }; 6E473B9B27D870AC00232139 /* cells */ = { isa = PBXGroup; children = ( @@ -341,6 +357,7 @@ 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */ = { isa = PBXGroup; children = ( + 6E37AF7927E71F11004FBE25 /* 3dollar-in-my-pocket-manager.entitlements */, 6E1F54A427CB79B80050BBBA /* services */, 6EE0CFBC27CB64B00027A426 /* utils */, 6EE0CFA627CB5B620027A426 /* models */, @@ -407,6 +424,7 @@ 6E1F54AD27CB97D20050BBBA /* AFDataResponseExtensions.swift */, 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */, 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */, + 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -431,6 +449,7 @@ 6EE0CF9B27CB54A70027A426 /* managers */ = { isa = PBXGroup; children = ( + 6E37AF7227E7144B004FBE25 /* loading */, 6EE0CF9C27CB54AE0027A426 /* social-sign-in */, ); path = managers; @@ -609,6 +628,7 @@ 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, + 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, @@ -644,6 +664,7 @@ 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, + 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, @@ -652,6 +673,7 @@ 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, + 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, @@ -806,6 +828,7 @@ API_URL = "https://dev.threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = X975A2HM62; @@ -837,6 +860,7 @@ API_URL = "https://dev.threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = X975A2HM62; diff --git a/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements b/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements new file mode 100644 index 0000000..a812db5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.applesignin + + Default + + + diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift index 3674340..8a0ecb2 100644 --- a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift @@ -5,7 +5,10 @@ protocol BaseCoordinator { var presenter: BaseViewController { get } func showErrorAlert(error: Error) + func openURL(url: String) + + func showLoading(isShow: Bool) } extension BaseCoordinator where Self: BaseViewController { @@ -27,4 +30,8 @@ extension BaseCoordinator where Self: BaseViewController { UIApplication.shared.open(url, options: [:], completionHandler: nil) } + + func showLoading(isShow: Bool) { + LoadingManager.shared.showLoading(isShow: isShow) + } } diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift b/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift index 83dc693..d2fc149 100644 --- a/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/base/BaseReactor.swift @@ -3,4 +3,5 @@ import RxCocoa class BaseReactor { let showErrorAlert = PublishRelay() + let showLoadginPublisher = PublishRelay() } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift index f370952..32abbe3 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift @@ -16,7 +16,9 @@ extension SigninCoordinator { } func pushWaiting() { + let viewController = WaitingViewController.instance() + self.presenter.navigationController?.pushViewController(viewController, animated: true) } func goToMain() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift index 81e6b96..0931d6f 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift @@ -11,6 +11,7 @@ final class SigninReactor: BaseReactor, Reactor { case pushSignUp(socialType: SocialType, token: String) case pushWaiting case goToMain + case showLoading(isShow: Bool) case showErrorAlert(Error) } @@ -56,6 +57,9 @@ final class SigninReactor: BaseReactor, Reactor { case .goToMain: self.goToMainPublisher.accept(()) + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + case .showErrorAlert(let error): self.showErrorAlert.accept(error) } @@ -87,7 +91,7 @@ final class SigninReactor: BaseReactor, Reactor { } private func signin(socialType: SocialType, token: String) -> Observable { - return self.authService.login(socialType: socialType, token: token) + let signinObservable = self.authService.login(socialType: socialType, token: token) .map { _ in .goToMain } .catch { error -> Observable in if let httpError = error as? HTTPError { @@ -102,7 +106,16 @@ final class SigninReactor: BaseReactor, Reactor { break } } - return .just(.showErrorAlert(error)) + return .merge([ + .just(.showErrorAlert(error)), + .just(.showLoading(isShow: false)) + ]) } + + return .concat([ + .just(.showLoading(isShow: true)), + signinObservable, + .just(.showLoading(isShow: false)) + ]) } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 19343af..965eef6 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -52,6 +52,20 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { self?.coordinator?.goToMain() }) .disposed(by: self.eventDisposeBag) + + self.signinReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.signinReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: SigninReactor) { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index 9d668ce..c64f004 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -26,6 +26,7 @@ final class SignupReactor: BaseReactor, Reactor { case setCategories([StoreCategory]) case setPhoto(UIImage) case setSignupButtonEnable(Bool) + case showLoading(isShow: Bool) case pushWaiting case goToSignin case showErrorAlert(Error) @@ -147,6 +148,9 @@ final class SignupReactor: BaseReactor, Reactor { case .setSignupButtonEnable(let isEnable): newState.isEnableSignupButton = isEnable + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + case .pushWaiting: self.pushWaitingPublisher.accept(()) @@ -196,8 +200,7 @@ final class SignupReactor: BaseReactor, Reactor { let photo = self.currentState.photo ?? UIImage() let socialType = self.socialType let token = self.token - - return self.imageService.uploadImage(image: photo, fileType: .certification) + let signupObservable = self.imageService.uploadImage(image: photo, fileType: .certification) .flatMap { [weak self] imageResponse -> Observable in guard let self = self else { return .error(BaseError.unknown) } return self.authService.signup( @@ -224,8 +227,23 @@ final class SignupReactor: BaseReactor, Reactor { break } } - return .just(.showErrorAlert(error)) + return .merge([ + .just(.showErrorAlert(error)), + .just(.showLoading(isShow: false)) + ]) } } + .catch { error in + return .merge([ + .just(.showErrorAlert(error)), + .just(.showLoading(isShow: false)) + ]) + } + + return .concat([ + .just(.showLoading(isShow: true)), + signupObservable, + .just(.showLoading(isShow: false)) + ]) } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 9c77750..c6df84a 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -71,6 +71,13 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { }) .disposed(by: self.eventDisposeBag) + self.signupReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + self.signupReactor.showErrorAlert .asDriver(onErrorJustReturn: BaseError.unknown) .drive(onNext: { [weak self] error in diff --git a/3dollar-in-my-pocket-manager/extensions/UIViewControllerExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIViewControllerExtensions.swift new file mode 100644 index 0000000..9cb1fd8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/UIViewControllerExtensions.swift @@ -0,0 +1,12 @@ +import UIKit + +extension UIViewController { + static var topViewController: UIViewController? { + var topViewController = UIApplication.shared.windows.first?.rootViewController + + while topViewController?.presentedViewController != nil { + topViewController = topViewController?.presentedViewController + } + return topViewController + } +} diff --git a/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift b/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift new file mode 100644 index 0000000..4d9dbb8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift @@ -0,0 +1,41 @@ +import UIKit + +protocol LoadingManagerProtocol: AnyObject { + func showLoading(isShow: Bool) +} + +final class LoadingManager: LoadingManagerProtocol { + static let shared = LoadingManager() + + private let loadingView = LoadingView(frame: UIScreen.main.bounds) + + func showLoading(isShow: Bool) { + if isShow { + self.showLoading() + } else { + self.hideLoading() + } + } + + private func showLoading() { + guard let rootView = UIViewController.topViewController?.view else { + return + } + + rootView.addSubview(self.loadingView) + UIView.animate(withDuration: 0.3) { [weak self] in + self?.loadingView.blurEffectView.alpha = 1.0 + } completion: { [weak self] _ in + self?.loadingView.activityIndicator.startAnimating() + } + } + + private func hideLoading() { + self.loadingView.activityIndicator.stopAnimating() + UIView.animate(withDuration: 0.3) { [weak self] in + self?.loadingView.blurEffectView.alpha = 0.0 + } completion: { [weak self] _ in + self?.loadingView.removeFromSuperview() + } + } +} diff --git a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift new file mode 100644 index 0000000..bd01086 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift @@ -0,0 +1,29 @@ +import UIKit + +final class LoadingView: BaseView { + let blurEffectView = UIVisualEffectView( + effect: UIBlurEffect(style: UIBlurEffect.Style.regular) + ).then { + $0.alpha = 0 + } + + let activityIndicator = UIActivityIndicatorView(style: .medium) + + override func setup() { + self.backgroundColor = .clear + self.addSubViews([ + self.blurEffectView, + self.activityIndicator + ]) + } + + override func bindConstraints() { + self.blurEffectView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + self.activityIndicator.snp.makeConstraints { make in + make.center.equalToSuperview() + } + } +} From fa1fba3ab351ecac14a77464e5df0a09bd5b4320 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 26 Mar 2022 12:15:38 +0900 Subject: [PATCH 028/166] =?UTF-8?q?fix:=20=EB=84=A4=EC=9D=B4=EB=B2=84=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../membership/signin/SigninReactor.swift | 2 +- .../membership/signin/SigninView.swift | 19 +++++-------------- .../signin/SigninViewController.swift | 5 ----- .../signin/subviews/SocialSigninButton.swift | 7 ++----- .../models/presentation/SocialType.swift | 2 +- 5 files changed, 9 insertions(+), 26 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift index 0931d6f..3f3beb3 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift @@ -85,7 +85,7 @@ final class SigninReactor: BaseReactor, Reactor { return self.signin(socialType: socialType, token: token) } - case .naver: + case .google: return .empty() } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift index 041a69d..0aad698 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift @@ -7,33 +7,24 @@ final class SigninView: BaseView { let kakaoButton = SocialSigninButton(socialType: .kakao) - let naverButton = SocialSigninButton(socialType: .naver) - override func setup() { self.backgroundColor = .gray0 self.addSubViews([ self.appleButton, - self.kakaoButton, - self.naverButton + self.kakaoButton ]) } override func bindConstraints() { - self.naverButton.snp.makeConstraints { make in + self.kakaoButton.snp.makeConstraints { make in make.left.equalToSuperview().offset(32) make.right.equalToSuperview().offset(-32) - make.bottom.equalTo(self.safeAreaLayoutGuide).offset(-66) - } - - self.kakaoButton.snp.makeConstraints { make in - make.left.equalTo(self.naverButton) - make.right.equalTo(self.naverButton) - make.bottom.equalTo(self.naverButton.snp.top).offset(-16) + make.bottom.equalTo(self.safeAreaLayoutGuide).offset(-122) } self.appleButton.snp.makeConstraints { make in - make.left.equalTo(self.naverButton) - make.right.equalTo(self.naverButton) + make.left.equalTo(self.kakaoButton) + make.right.equalTo(self.kakaoButton) make.bottom.equalTo(self.kakaoButton.snp.top).offset(-16) } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 965eef6..635ac54 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -79,10 +79,5 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { .map { Reactor.Action.tapSignInButton(socialType: .kakao) } .bind(to: reactor.action) .disposed(by: self.disposeBag) - - self.signinView.naverButton.rx.tap - .map { Reactor.Action.tapSignInButton(socialType: .naver) } - .bind(to: reactor.action) - .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/subviews/SocialSigninButton.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/subviews/SocialSigninButton.swift index cfcfeb3..8670117 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/subviews/SocialSigninButton.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/subviews/SocialSigninButton.swift @@ -64,11 +64,8 @@ final class SocialSigninButton: BaseView { self.titleLabel.textColor = UIColor(r: 56, g: 30, b: 31) self.backgroundColor = UIColor(r: 247, g: 227, b: 23) - case .naver: - self.iconImage.image = UIImage(named: "ic_naver") - self.titleLabel.text = "네이버 계정으로 로그인" - self.titleLabel.textColor = UIColor(r: 255, g: 255, b: 255) - self.backgroundColor = UIColor(r: 93, g: 195, b: 81) + case .google: + break } } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift index 3d02c7b..09e11aa 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift @@ -3,5 +3,5 @@ import Foundation enum SocialType: String { case apple = "APPLE" case kakao = "KAKAO" - case naver = "NAVER" + case google = "GOOGLE" } From bd9bca15909897d98c8c9957a3a3a4ce10a35c4a Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 26 Mar 2022 12:37:19 +0900 Subject: [PATCH 029/166] =?UTF-8?q?feat:=20Image=20Crop=20Library=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 --- .../project.pbxproj | 37 ++++++++++++++++--- .../membership/signup/SignupCoordinator.swift | 14 +++++++ .../signup/SignupViewController.swift | 29 ++++++++++++--- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index cdabc15..8a2bd11 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -45,8 +45,10 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; - 6E9F994F27E6FA4100C95C41 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; }; - 6E9F995027E6FA4100C95C41 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E8E7F2A27EEBBE7005345BB /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; }; + 6E8E7F2B27EEBBE7005345BB /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; + 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -97,13 +99,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E9F995127E6FA4100C95C41 /* Embed Frameworks */ = { + 6E8E7F2C27EEBBE7005345BB /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E9F995027E6FA4100C95C41 /* Base.framework in Embed Frameworks */, + 6E8E7F2B27EEBBE7005345BB /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -189,12 +191,14 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E9F994F27E6FA4100C95C41 /* Base.framework in Frameworks */, + 6E8E7F2A27EEBBE7005345BB /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, + 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, + 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */, 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, @@ -520,7 +524,7 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E9F995127E6FA4100C95C41 /* Embed Frameworks */, + 6E8E7F2C27EEBBE7005345BB /* Embed Frameworks */, ); buildRules = ( ); @@ -543,6 +547,8 @@ 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */, 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */, 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */, + 6E8E7F2E27EEBDB7005345BB /* CropViewController */, + 6E8E7F3027EEBDB7005345BB /* TOCropViewController */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -580,6 +586,7 @@ 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */, 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */, 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */, + 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -910,6 +917,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/TimOliver/TOCropViewController.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.0.0; + }; + }; 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/SnapKit/SnapKit.git"; @@ -969,6 +984,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 6E8E7F2E27EEBDB7005345BB /* CropViewController */ = { + isa = XCSwiftPackageProductDependency; + package = 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */; + productName = CropViewController; + }; + 6E8E7F3027EEBDB7005345BB /* TOCropViewController */ = { + isa = XCSwiftPackageProductDependency; + package = 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */; + productName = TOCropViewController; + }; 6ED8838927CB395B00278E14 /* SnapKit */ = { isa = XCSwiftPackageProductDependency; package = 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */; diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift index 12cfe37..aa114aa 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -4,6 +4,7 @@ import PhotosUI import SPPermissions import SPPermissionsPhotoLibrary import SPPermissionsCamera +import CropViewController protocol SignupCoordinator: BaseCoordinator, AnyObject { func showPhotoActionSheet() @@ -13,6 +14,8 @@ protocol SignupCoordinator: BaseCoordinator, AnyObject { func showAlbumPicker() func pushWaiting() + + func presentPhotoCrop(photo: UIImage) } extension SignupCoordinator where Self: BaseViewController { @@ -89,4 +92,15 @@ extension SignupCoordinator where Self: BaseViewController { animated: true ) } + + func presentPhotoCrop(photo: UIImage) { + let cropViewController = CropViewController(image: photo) + + cropViewController.customAspectRatio = CGSize(width: 2.227, height: 1) + cropViewController.aspectRatioLockEnabled = true + cropViewController.aspectRatioPickerButtonHidden = true + cropViewController.resetButtonHidden = true + cropViewController.delegate = self as? CropViewControllerDelegate + self.present(cropViewController, animated: true, completion: nil) + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index c6df84a..b63d343 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -5,6 +5,7 @@ import ReactorKit import RxSwift import SPPermissions import Base +import CropViewController final class SignupViewController: BaseViewController, View, SignupCoordinator { private let signupView = SignupView() @@ -158,10 +159,12 @@ extension SignupViewController: didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] ) { if let photo = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { - self.signupReactor.action.onNext(.selectPhoto(photo)) + picker.dismiss(animated: true) { [weak self] in + self?.coordinator?.presentPhotoCrop(photo: photo) + } + } else { + picker.dismiss(animated: true, completion: nil) } - - picker.dismiss(animated: true, completion: nil) // picker를 닫아줌 } } @@ -191,15 +194,17 @@ extension SignupViewController: SPPermissionsDelegate { extension SignupViewController: PHPickerViewControllerDelegate { func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { - picker.dismiss(animated: true, completion: nil) - let itemProvider = results.first?.itemProvider if let itemProvider = itemProvider, itemProvider.canLoadObject(ofClass: UIImage.self) { itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in if let photo = image as? UIImage { - self.signupReactor.action.onNext(.selectPhoto(photo)) + DispatchQueue.main.async { [weak self] in + picker.dismiss(animated: true) { + self?.coordinator?.presentPhotoCrop(photo: photo) + } + } } } } else { @@ -207,3 +212,15 @@ extension SignupViewController: PHPickerViewControllerDelegate { } } } + +extension SignupViewController: CropViewControllerDelegate { + func cropViewController( + _ cropViewController: CropViewController, + didCropToImage image: UIImage, + withRect cropRect: CGRect, + angle: Int + ) { + cropViewController.dismiss(animated: true, completion: nil) + self.signupReactor.action.onNext(.selectPhoto(image)) + } +} From 19bb0c5bc9e0a975511d9f4354809aab766c6c4d Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 26 Mar 2022 14:01:06 +0900 Subject: [PATCH 030/166] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80,=20Splash?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 38 ++++++-- .../SceneDelegate.swift | 14 ++- .../membership/signup/SignupCoordinator.swift | 16 ++-- .../membership/signup/SignupReactor.swift | 42 +++++---- .../signup/SignupViewController.swift | 5 +- .../domains/splash/SplashCoordinator.swift | 44 ++++++++++ .../domains/splash/SplashReactor.swift | 86 +++++++++++++++++++ .../domains/splash/SplashView.swift | 8 ++ .../domains/splash/SplashViewController.swift | 60 +++++++++++++ .../response/BossAccountInfoResponse.swift | 48 +++++++++++ .../models/presentation/SocialType.swift | 2 +- .../services/AuthService.swift | 29 ++++++- 12 files changed, 354 insertions(+), 38 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/splash/SplashView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8a2bd11..de9ce28 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -45,8 +45,6 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; - 6E8E7F2A27EEBBE7005345BB /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; }; - 6E8E7F2B27EEBBE7005345BB /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1F549D27CB76520050BBBA /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; @@ -86,6 +84,13 @@ 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */; }; 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; + 6EF676AE27EEC88100D43E99 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; }; + 6EF676AF27EEC88100D43E99 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */; }; + 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B327EECBED00D43E99 /* SplashView.swift */; }; + 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B527EECC0600D43E99 /* SplashViewController.swift */; }; + 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */; }; + 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -105,7 +110,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E8E7F2B27EEBBE7005345BB /* Base.framework in Embed Frameworks */, + 6EF676AF27EEC88100D43E99 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -120,7 +125,6 @@ 6E142D6127D785A40084480C /* SignupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupView.swift; sourceTree = ""; }; 6E142D6327D785B50084480C /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; - 6E1F549D27CB76520050BBBA /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-dnitfhvnkrdaryaqvbwknfooeggx/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequest.swift; sourceTree = ""; }; @@ -179,6 +183,11 @@ 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleExtensions.swift; sourceTree = ""; }; 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCoordinator.swift; sourceTree = ""; }; + 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossAccountInfoResponse.swift; sourceTree = ""; }; + 6EF676B327EECBED00D43E99 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; + 6EF676B527EECC0600D43E99 /* SplashViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashViewController.swift; sourceTree = ""; }; + 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashReactor.swift; sourceTree = ""; }; + 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashCoordinator.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -191,7 +200,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E8E7F2A27EEBBE7005345BB /* Base.framework in Frameworks */, + 6EF676AE27EEC88100D43E99 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -246,7 +255,6 @@ isa = PBXGroup; children = ( 6E473B8F27D85B7C00232139 /* Base.framework */, - 6E1F549D27CB76520050BBBA /* Base.framework */, ); name = Frameworks; sourceTree = ""; @@ -277,6 +285,7 @@ 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */, 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */, 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */, + 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */, ); path = response; sourceTree = ""; @@ -381,6 +390,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6EF676B227EECBE600D43E99 /* splash */, 6E473BA027D872E000232139 /* shared */, 6E142D5627D77AEA0084480C /* base */, 6ED8839627CB39F600278E14 /* membership */, @@ -514,6 +524,17 @@ path = utils; sourceTree = ""; }; + 6EF676B227EECBE600D43E99 /* splash */ = { + isa = PBXGroup; + children = ( + 6EF676B327EECBED00D43E99 /* SplashView.swift */, + 6EF676B527EECC0600D43E99 /* SplashViewController.swift */, + 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */, + 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */, + ); + path = splash; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -638,6 +659,7 @@ 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, + 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, @@ -664,13 +686,16 @@ 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, + 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, + 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, + 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, @@ -686,6 +711,7 @@ 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, + 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index d207401..483cc43 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -15,7 +15,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { self.window = UIWindow(frame: windowScene.coordinateSpace.bounds) self.window?.windowScene = windowScene - self.window?.rootViewController = SigninViewController.instance() + self.window?.rootViewController = SplashViewController.instance() self.window?.makeKeyAndVisible() } @@ -55,6 +55,18 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { // to restore the scene back to its current state. } + func goToSignin() { + self.window?.rootViewController = SigninViewController.instance() + self.window?.makeKeyAndVisible() + } + + func goToWaiting() { + self.window?.rootViewController = WaitingViewController.instance() + self.window?.makeKeyAndVisible() + } + func goToMain() { + + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift index aa114aa..57f196a 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -13,7 +13,7 @@ protocol SignupCoordinator: BaseCoordinator, AnyObject { func showAlbumPicker() - func pushWaiting() + func goToWaiting() func presentPhotoCrop(photo: UIImage) } @@ -84,13 +84,15 @@ extension SignupCoordinator where Self: BaseViewController { self.presenter.present(picker, animated: true, completion: nil) } - func pushWaiting() { - let viewController = WaitingViewController.instance() + func goToWaiting() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } - self.presenter.navigationController?.pushViewController( - viewController, - animated: true - ) + sceneDelegate.goToWaiting() } func presentPhotoCrop(photo: UIImage) { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index c64f004..271981c 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -51,19 +51,22 @@ final class SignupReactor: BaseReactor, Reactor { private let categoryService: CategoryServiceType private let imageService: ImageServiceType private let authService: AuthServiceType + private var userDefaultsUtils: UserDefaultsUtils init( socialType: SocialType, token: String, categoryService: CategoryServiceType, imageService: ImageServiceType, - authService: AuthServiceType + authService: AuthServiceType, + userDefaultsUtils: UserDefaultsUtils ) { self.socialType = socialType self.token = token self.categoryService = categoryService self.imageService = imageService self.authService = authService + self.userDefaultsUtils = userDefaultsUtils } func mutate(action: Action) -> Observable { @@ -213,25 +216,28 @@ final class SignupReactor: BaseReactor, Reactor { socialType: socialType, token: token ) - .map { _ in .pushWaiting } - .catch { error in - if let httpError = error as? HTTPError { - switch httpError { - case .forbidden: - return .just(.pushWaiting) - - case .conflict: - return .just(.goToSignin) - - default: - break - } + .do(onNext: { [weak self] response in + self?.userDefaultsUtils.userToken = response.token + }) + .map { _ in .pushWaiting } + .catch { error in + if let httpError = error as? HTTPError { + switch httpError { + case .forbidden: + return .just(.pushWaiting) + + case .conflict: + return .just(.goToSignin) + + default: + break } - return .merge([ - .just(.showErrorAlert(error)), - .just(.showLoading(isShow: false)) - ]) } + return .merge([ + .just(.showErrorAlert(error)), + .just(.showLoading(isShow: false)) + ]) + } } .catch { error in return .merge([ diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index b63d343..745364e 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -18,7 +18,8 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { token: token, categoryService: CategoryService(), imageService: ImageService(), - authService: AuthService() + authService: AuthService(), + userDefaultsUtils: UserDefaultsUtils() ) super.init(nibName: nil, bundle: nil) } @@ -61,7 +62,7 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { self.signupReactor.pushWaitingPublisher .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in - self?.coordinator?.pushWaiting() + self?.coordinator?.goToWaiting() }) .disposed(by: self.eventDisposeBag) diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift new file mode 100644 index 0000000..2846fb3 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift @@ -0,0 +1,44 @@ +import UIKit + +protocol SplashCoordinator: AnyObject, BaseCoordinator { + func goToSignin() + + func goToMain() + + func goToWaiting() +} + +extension SplashCoordinator { + func goToSignin() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + + sceneDelegate.goToSignin() + } + + func goToMain() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + + sceneDelegate.goToWaiting() + } + + func goToWaiting() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + + sceneDelegate.goToWaiting() + } +} diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift new file mode 100644 index 0000000..8060027 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift @@ -0,0 +1,86 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class SplashReactor: BaseReactor, Reactor { + enum Action { + case viewDidLoad + } + + enum Mutation { + case goToSignin + case goToMain + case goToWaiting + case showErrorAlert(Error) + } + + struct State { + + } + + let initialState = State() + let goToSigninPublisher = PublishRelay() + let goToMainPublisher = PublishRelay() + let goToWaitingPublisher = PublishRelay() + private let authService: AuthServiceType + private let userDefaultsUtils: UserDefaultsUtils + + + init(authService: AuthServiceType, userDefaultsUtils: UserDefaultsUtils) { + self.authService = authService + self.userDefaultsUtils = userDefaultsUtils + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + if self.userDefaultsUtils.userToken.isEmpty { + return .just(.goToSignin) + } else { + return self.fetchUserInfo() + } + } + } + + func reduce(state: State, mutation: Mutation) -> State { + switch mutation { + case .goToSignin: + self.goToSigninPublisher.accept(()) + + case .goToMain: + self.goToMainPublisher.accept(()) + + case .goToWaiting: + self.goToWaitingPublisher.accept(()) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return state + } + + private func fetchUserInfo() -> Observable { + return self.authService.fetchMyInfo() + .map{ _ in .goToMain } + .catch { error in + if let httpError = error as? HTTPError { + switch httpError { + case .unauthorized: // 세션 만료 => 로그인 필요 + return .just(.goToSignin) + + case .forbidden: // 신청 대기중 + return .just(.goToWaiting) + + case .notFound: // 회원 탈퇴 및 반려 + return .just(.goToSignin) + + default: + return .just(.showErrorAlert(error)) + } + } else { + return .just(.showErrorAlert(error)) + } + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift new file mode 100644 index 0000000..2cdbe2d --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift @@ -0,0 +1,8 @@ +import UIKit + +final class SplashView: BaseView { + + override func setup() { + self.backgroundColor = .red + } +} diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift new file mode 100644 index 0000000..c49be2c --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift @@ -0,0 +1,60 @@ +import UIKit + +import ReactorKit + +final class SplashViewController: BaseViewController, View, SplashCoordinator { + private let splashView = SplashView() + private let splashReactor = SplashReactor( + authService: AuthService(), + userDefaultsUtils: UserDefaultsUtils() + ) + private weak var coordinator: SplashCoordinator? + + static func instance() -> SplashViewController { + return SplashViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.splashView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.reactor = self.splashReactor + self.coordinator = self + self.splashReactor.action.onNext(.viewDidLoad) + } + + override func bindEvent() { + self.splashReactor.goToSigninPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToSignin() + }) + .disposed(by: self.eventDisposeBag) + + self.splashReactor.goToWaitingPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToWaiting() + }) + .disposed(by: self.eventDisposeBag) + + self.splashReactor.goToMainPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToMain() + }) + .disposed(by: self.eventDisposeBag) + + self.splashReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) + } + + func bind(reactor: SplashReactor) { } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift new file mode 100644 index 0000000..b6ef8e4 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift @@ -0,0 +1,48 @@ +import Foundation + +struct BossAccountInfoResponse: Decodable { + let bossId: String + let businessNumber: String + let createdAt: String + let name: String + let pushSettingsStatus: Bool + let socialType: SocialType + let updatedAt: String + + enum CodingKeys: String, CodingKey { + case bossId + case businessNumber + case createdAt + case name + case pushSettingsStatus + case socialType + case updatedAt + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.bossId = try values.decodeIfPresent(String.self, forKey: .bossId) ?? "" + self.businessNumber = try values.decodeIfPresent( + String.self, + forKey: .businessNumber + ) ?? "" + self.createdAt = try values.decodeIfPresent( + String.self, + forKey: .createdAt + ) ?? "" + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + self.pushSettingsStatus = try values.decodeIfPresent( + Bool.self, + forKey: .pushSettingsStatus + ) ?? false + self.socialType = try values.decodeIfPresent( + SocialType.self, + forKey: .socialType + ) ?? .apple + self.updatedAt = try values.decodeIfPresent( + String.self, + forKey: .updatedAt + ) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift index 09e11aa..9bba172 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift @@ -1,6 +1,6 @@ import Foundation -enum SocialType: String { +enum SocialType: String, Decodable { case apple = "APPLE" case kakao = "KAKAO" case google = "GOOGLE" diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 93b2755..9ff81bc 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -14,7 +14,9 @@ protocol AuthServiceType { photoUrl: String, socialType: SocialType, token: String - ) -> Observable + ) -> Observable + + func fetchMyInfo() -> Observable } struct AuthService: AuthServiceType { @@ -51,7 +53,7 @@ struct AuthService: AuthServiceType { photoUrl: String, socialType: SocialType, token: String - ) -> Observable { + ) -> Observable { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/auth/signup" let parameters = SignupRequest( @@ -72,7 +74,28 @@ struct AuthService: AuthServiceType { parameters: parameters, encoding: JSONEncoding.default, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } + + func fetchMyInfo() -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/account/my-info" + let headers = HTTPUtils.defaultHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { observer.processValue(response: response) } else { From 4dcf1bb6af6b33705287a36af04863bb5679cf78 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 26 Mar 2022 14:38:33 +0900 Subject: [PATCH 031/166] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20format=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../membership/signup/SignupView.swift | 2 + .../signup/subviews/SignupInputField.swift | 6 +++ .../signup/subviews/SignupTextField.swift | 41 ++++++++++++++++--- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index eb7edc3..53c33ba 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -57,6 +57,7 @@ final class SignupView: BaseView { placeholder: "signup_registeration_number_placeholder".localized ).then { $0.keyboardType = .numberPad + $0.format = "XXX-XX-XXXX" } let phoneNumberField = SignupInputField( @@ -66,6 +67,7 @@ final class SignupView: BaseView { placeholder: "signup_phone_number_placeholder".localized ).then { $0.keyboardType = .numberPad + $0.format = "XXX-XXXX-XXXX" } let categoryCollectionView = SignupCategorySelectView() diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift index fcd2cf8..7e0266c 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift @@ -16,6 +16,12 @@ final class SignupInputField: BaseView { } } + var format: String? { + willSet { + self.textField.format = newValue + } + } + private let titleLabel = UILabel().then { $0.font = .bold(size: 14) $0.textColor = .gray100 diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift index c69ff38..ef78ac1 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -14,6 +14,8 @@ final class SignupTextField: BaseView { } } + var format: String? + private let containerView = UIView().then { $0.backgroundColor = .gray5 $0.layer.cornerRadius = 8 @@ -61,6 +63,27 @@ final class SignupTextField: BaseView { } } + fileprivate func format(with mask: String, text: String) -> String { + let numbers = text.replacingOccurrences(of: "[^0-9]", with: "", options: .regularExpression) + var result = "" + var index = numbers.startIndex // numbers iterator + + // iterate over the mask characters until the iterator of numbers ends + for ch in mask where index < numbers.endIndex { + if ch == "X" { + // mask requires a number in this place, so take the next one + result.append(numbers[index]) + + // move numbers iterator to the next index + index = numbers.index(after: index) + + } else { + result.append(ch) // just append a mask character + } + } + return result + } + private func setPlaceholder(placeholder: String?) { guard let placeholder = placeholder else { return } let attributedString = NSAttributedString( @@ -78,11 +101,19 @@ extension SignupTextField: UITextFieldDelegate { shouldChangeCharactersIn range: NSRange, replacementString string: String ) -> Bool { - guard let text = textField.text, - let maxLength = self.maxLength else { return true } - let newLength = text.count + string.count - range.length - - return newLength <= maxLength + if let format = self.format { + guard let text = textField.text else { return false } + let newString = (text as NSString).replacingCharacters(in: range, with: string) + + textField.text = self.format(with: format, text: newString) + return false + } else { + guard let text = textField.text, + let maxLength = self.maxLength else { return true } + let newLength = text.count + string.count - range.length + + return newLength <= maxLength + } } } From a84baaec1862f1764493634134bfa5f3339f2c7b Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 26 Mar 2022 14:59:45 +0900 Subject: [PATCH 032/166] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EC=9D=B4=ED=9B=84=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EA=B3=84?= =?UTF-8?q?=EC=A0=95=20=EC=A1=B0=ED=9A=8C=ED=95=B4=EC=84=9C=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EB=B6=84=EA=B8=B0=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../membership/signin/SigninCoordinator.swift | 13 ++++-- .../membership/signin/SigninReactor.swift | 41 +++++++++++++++---- .../signin/SigninViewController.swift | 7 ++-- .../signup/SignupViewController.swift | 7 +++- .../managers/loading/LoadingView.swift | 2 +- .../utils/HTTPUtils.swift | 4 +- 6 files changed, 56 insertions(+), 18 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift index 32abbe3..33678fd 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift @@ -3,7 +3,7 @@ import UIKit protocol SigninCoordinator: AnyObject, BaseCoordinator { func pushSignup(socialType: SocialType, token: String) - func pushWaiting() + func goToWaiting() func goToMain() } @@ -15,10 +15,15 @@ extension SigninCoordinator { self.presenter.navigationController?.pushViewController(viewControler, animated: true) } - func pushWaiting() { - let viewController = WaitingViewController.instance() + func goToWaiting() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } - self.presenter.navigationController?.pushViewController(viewController, animated: true) + sceneDelegate.goToWaiting() } func goToMain() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift index 3f3beb3..278ca1a 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift @@ -9,7 +9,7 @@ final class SigninReactor: BaseReactor, Reactor { enum Mutation { case pushSignUp(socialType: SocialType, token: String) - case pushWaiting + case goToWaiting case goToMain case showLoading(isShow: Bool) case showErrorAlert(Error) @@ -21,20 +21,23 @@ final class SigninReactor: BaseReactor, Reactor { var initialState = State() let pushSignUpPublisher = PublishRelay<(SocialType, String)>() - let pushWaitingPublisher = PublishRelay() + let goToWaitingPublisher = PublishRelay() let goToMainPublisher = PublishRelay() private let kakaoSignInManager: KakaoSignInManagerProtocol private let appleSignInManager: AppleSignInManagerProtocol private let authService: AuthServiceType + private var userDefaultsUtils: UserDefaultsUtils init( kakaoManager: KakaoSignInManagerProtocol, appleSignInManager: AppleSignInManagerProtocol, - authService: AuthServiceType + authService: AuthServiceType, + userDefaultsUtils: UserDefaultsUtils ) { self.kakaoSignInManager = kakaoManager self.appleSignInManager = appleSignInManager self.authService = authService + self.userDefaultsUtils = userDefaultsUtils } func mutate(action: Action) -> Observable { @@ -51,8 +54,8 @@ final class SigninReactor: BaseReactor, Reactor { case .pushSignUp(let socialType, let token): self.pushSignUpPublisher.accept((socialType, token)) - case .pushWaiting: - self.pushWaitingPublisher.accept(()) + case .goToWaiting: + self.goToWaitingPublisher.accept(()) case .goToMain: self.goToMainPublisher.accept(()) @@ -92,7 +95,13 @@ final class SigninReactor: BaseReactor, Reactor { private func signin(socialType: SocialType, token: String) -> Observable { let signinObservable = self.authService.login(socialType: socialType, token: token) - .map { _ in .goToMain } + .do(onNext: { [weak self] response in + self?.userDefaultsUtils.userToken = response.token + }) + .flatMap { [weak self] _ -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + return self.fetchUserInfo() + } .catch { error -> Observable in if let httpError = error as? HTTPError { switch httpError { @@ -100,7 +109,7 @@ final class SigninReactor: BaseReactor, Reactor { return .just(.pushSignUp(socialType: socialType, token: token)) case .forbidden: - return .just(.pushWaiting) + return .just(.goToWaiting) default: break @@ -118,4 +127,22 @@ final class SigninReactor: BaseReactor, Reactor { .just(.showLoading(isShow: false)) ]) } + + private func fetchUserInfo() -> Observable { + return self.authService.fetchMyInfo() + .map{ _ in .goToMain } + .catch { error in + if let httpError = error as? HTTPError { + switch httpError { + case .forbidden: // 신청 대기중 + return .just(.goToWaiting) + + default: + return .just(.showErrorAlert(error)) + } + } else { + return .just(.showErrorAlert(error)) + } + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 635ac54..558bfcb 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -8,7 +8,8 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { private let signinReactor = SigninReactor( kakaoManager: KakaoSignInManager.shared, appleSignInManager: AppleSigninManager.shared, - authService: AuthService() + authService: AuthService(), + userDefaultsUtils: UserDefaultsUtils() ) private weak var coordinator: SigninCoordinator? @@ -39,10 +40,10 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { } .disposed(by: self.eventDisposeBag) - self.signinReactor.pushWaitingPublisher + self.signinReactor.goToWaitingPublisher .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] _ in - self?.coordinator?.pushWaiting() + self?.coordinator?.goToWaiting() }) .disposed(by: self.eventDisposeBag) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 745364e..67f6f18 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -48,9 +48,12 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { self.signupView.backButton.rx.tap .asDriver() .drive(onNext: { [weak self] in - self?.navigationController?.popViewController(animated: true) + self?.coordinator? + .presenter + .navigationController? + .popViewController(animated: true) }) - .disposed(by: self.disposeBag) + .disposed(by: self.eventDisposeBag) self.signupView.photoView.rx.tapUploadButton .asDriver() diff --git a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift index bd01086..f33a670 100644 --- a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift +++ b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift @@ -2,7 +2,7 @@ import UIKit final class LoadingView: BaseView { let blurEffectView = UIVisualEffectView( - effect: UIBlurEffect(style: UIBlurEffect.Style.regular) + effect: UIBlurEffect(style: UIBlurEffect.Style.systemUltraThinMaterialLight) ).then { $0.alpha = 0 } diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift index ddf9baa..5d52135 100644 --- a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -27,7 +27,9 @@ struct HTTPUtils { } static func defaultHeader() -> HTTPHeaders { - var headers = ["Authorization": UserDefaultsUtils().userToken] as HTTPHeaders + var headers = [ + "Authorization": "Bearer " + UserDefaultsUtils().userToken + ] as HTTPHeaders headers.add(self.defaultUserAgent) return headers From 5df8860b57e2d8bd32ac6d7486b21dc0bbc2037c Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 26 Mar 2022 15:13:09 +0900 Subject: [PATCH 033/166] =?UTF-8?q?fix:=20API=20=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/dto/response/BossAccountInfoResponse.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift index b6ef8e4..21fc679 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossAccountInfoResponse.swift @@ -5,7 +5,7 @@ struct BossAccountInfoResponse: Decodable { let businessNumber: String let createdAt: String let name: String - let pushSettingsStatus: Bool + let isSetupNotification: Bool let socialType: SocialType let updatedAt: String @@ -14,7 +14,7 @@ struct BossAccountInfoResponse: Decodable { case businessNumber case createdAt case name - case pushSettingsStatus + case isSetupNotification case socialType case updatedAt } @@ -32,9 +32,9 @@ struct BossAccountInfoResponse: Decodable { forKey: .createdAt ) ?? "" self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" - self.pushSettingsStatus = try values.decodeIfPresent( + self.isSetupNotification = try values.decodeIfPresent( Bool.self, - forKey: .pushSettingsStatus + forKey: .isSetupNotification ) ?? false self.socialType = try values.decodeIfPresent( SocialType.self, From cfdc3de4a212f62c5d9ccf9bc4143a69efbe91c9 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 26 Mar 2022 15:31:08 +0900 Subject: [PATCH 034/166] =?UTF-8?q?feat:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=84=A4=EC=9D=B4=EB=B2=84=20=EC=A7=80=EB=8F=84=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 78 +++++++++++++++++ .../contents.xcworkspacedata | 10 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../xcshareddata/swiftpm/Package.resolved | 86 +++++++++++++++++++ 3dollar-in-my-pocket-manager/Info.plist | 2 + .../domains/home/HomeView.swift | 22 +++++ .../domains/home/HomeViewController.swift | 17 ++++ Podfile | 10 +++ Podfile.lock | 16 ++++ 9 files changed, 249 insertions(+) create mode 100644 3dollar-in-my-pocket-manager.xcworkspace/contents.xcworkspacedata create mode 100644 3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 3dollar-in-my-pocket-manager/domains/home/HomeView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift create mode 100644 Podfile create mode 100644 Podfile.lock diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index de9ce28..bcd2432 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -45,6 +45,7 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; + 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; @@ -91,6 +92,8 @@ 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B527EECC0600D43E99 /* SplashViewController.swift */; }; 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */; }; 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */; }; + 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676BC27EEE57A00D43E99 /* HomeView.swift */; }; + CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -118,6 +121,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2485BFD46CCBCCA4FDB38FB3 /* Pods-3dollar-in-my-pocket-manager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-3dollar-in-my-pocket-manager.release.xcconfig"; path = "Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager.release.xcconfig"; sourceTree = ""; }; + 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_3dollar_in_my_pocket_manager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6E142D5727D77AF50084480C /* BaseReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseReactor.swift; sourceTree = ""; }; 6E142D5927D77B790084480C /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninCoordinator.swift; sourceTree = ""; }; @@ -159,6 +164,7 @@ 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategoryResponse.swift; sourceTree = ""; }; 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryService.swift; sourceTree = ""; }; 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategory.swift; sourceTree = ""; }; + 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -188,6 +194,8 @@ 6EF676B527EECC0600D43E99 /* SplashViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashViewController.swift; sourceTree = ""; }; 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashReactor.swift; sourceTree = ""; }; 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashCoordinator.swift; sourceTree = ""; }; + 6EF676BC27EEE57A00D43E99 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + 90AB2FCCDB6AA6ABA4B64642 /* Pods-3dollar-in-my-pocket-manager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; path = "Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -213,6 +221,7 @@ 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, + CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -255,6 +264,7 @@ isa = PBXGroup; children = ( 6E473B8F27D85B7C00232139 /* Base.framework */, + 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */, ); name = Frameworks; sourceTree = ""; @@ -356,6 +366,7 @@ 6EB94EA227CB208F00609E77 /* 3dollar-in-my-pocket-manager */, 6EB94EA127CB208F00609E77 /* Products */, 6E1AA1B827CB215700C96D92 /* Frameworks */, + AF15A4E5DB0B63600E149F85 /* Pods */, ); sourceTree = ""; }; @@ -390,6 +401,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6EF676BB27EEE57500D43E99 /* home */, 6EF676B227EECBE600D43E99 /* splash */, 6E473BA027D872E000232139 /* shared */, 6E142D5627D77AEA0084480C /* base */, @@ -535,6 +547,24 @@ path = splash; sourceTree = ""; }; + 6EF676BB27EEE57500D43E99 /* home */ = { + isa = PBXGroup; + children = ( + 6EF676BC27EEE57A00D43E99 /* HomeView.swift */, + 6E81503527EEEA110032C518 /* HomeViewController.swift */, + ); + path = home; + sourceTree = ""; + }; + AF15A4E5DB0B63600E149F85 /* Pods */ = { + isa = PBXGroup; + children = ( + 90AB2FCCDB6AA6ABA4B64642 /* Pods-3dollar-in-my-pocket-manager.debug.xcconfig */, + 2485BFD46CCBCCA4FDB38FB3 /* Pods-3dollar-in-my-pocket-manager.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -542,10 +572,12 @@ isa = PBXNativeTarget; buildConfigurationList = 6EB94EB427CB209000609E77 /* Build configuration list for PBXNativeTarget "3dollar-in-my-pocket-manager" */; buildPhases = ( + 326682B484AEB07117F894B2 /* [CP] Check Pods Manifest.lock */, 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, 6E8E7F2C27EEBBE7005345BB /* Embed Frameworks */, + A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -648,6 +680,48 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 326682B484AEB07117F894B2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-3dollar-in-my-pocket-manager-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 6EB94E9C27CB208F00609E77 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -658,6 +732,7 @@ 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, + 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, @@ -700,6 +775,7 @@ 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, + 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, @@ -857,6 +933,7 @@ }; 6EB94EB527CB209000609E77 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 90AB2FCCDB6AA6ABA4B64642 /* Pods-3dollar-in-my-pocket-manager.debug.xcconfig */; buildSettings = { API_URL = "https://dev.threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -889,6 +966,7 @@ }; 6EB94EB627CB209000609E77 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 2485BFD46CCBCCA4FDB38FB3 /* Pods-3dollar-in-my-pocket-manager.release.xcconfig */; buildSettings = { API_URL = "https://dev.threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/contents.xcworkspacedata b/3dollar-in-my-pocket-manager.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..70a8006 --- /dev/null +++ b/3dollar-in-my-pocket-manager.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..c6e1ad8 --- /dev/null +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,86 @@ +{ + "pins" : [ + { + "identity" : "alamofire", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Alamofire/Alamofire.git", + "state" : { + "revision" : "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864", + "version" : "5.5.0" + } + }, + { + "identity" : "kakao-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/kakao/kakao-ios-sdk", + "state" : { + "revision" : "a9f7c3b282a5af9fd40f8e29c5d29d4facfd9efb", + "version" : "2.9.0" + } + }, + { + "identity" : "reactorkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ReactorKit/ReactorKit.git", + "state" : { + "branch" : "master", + "revision" : "65654e182bc9d62fd6b78da6fc4db5968c6bbe1c" + } + }, + { + "identity" : "rxswift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ReactiveX/RxSwift.git", + "state" : { + "branch" : "main", + "revision" : "7741a11cb4252c379c8e034508cb1b92b8b40427" + } + }, + { + "identity" : "snapkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SnapKit/SnapKit.git", + "state" : { + "branch" : "develop", + "revision" : "466db39ee4ef32b0f7c8cd9f009aaf42f80beace" + } + }, + { + "identity" : "sppermissions", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ivanvorobei/SPPermissions", + "state" : { + "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "version" : "7.1.5" + } + }, + { + "identity" : "then", + "kind" : "remoteSourceControl", + "location" : "https://github.com/devxoul/Then", + "state" : { + "branch" : "master", + "revision" : "e421a7b3440a271834337694e6050133a3958bc7" + } + }, + { + "identity" : "tocropviewcontroller", + "kind" : "remoteSourceControl", + "location" : "https://github.com/TimOliver/TOCropViewController.git", + "state" : { + "revision" : "d0470491f56e734731bbf77991944c0dfdee3e0e", + "version" : "2.6.1" + } + }, + { + "identity" : "weakmaptable", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ReactorKit/WeakMapTable.git", + "state" : { + "revision" : "cb05d64cef2bbf51e85c53adee937df46540a74e", + "version" : "1.2.1" + } + } + ], + "version" : 2 +} diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 628ff52..da7d901 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -43,5 +43,7 @@ + NMFClientId + h14485sw4a diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift new file mode 100644 index 0000000..5649968 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -0,0 +1,22 @@ +import UIKit + +import NMapsMap + +final class HomeView: BaseView { + let mapView = NMFMapView().then { + $0.positionMode = .direction + $0.zoomLevel = 15 + } + + override func setup() { + self.addSubViews([ + self.mapView + ]) + } + + override func bindConstraints() { + self.mapView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift new file mode 100644 index 0000000..3f05144 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -0,0 +1,17 @@ +import UIKit + +final class HomeViewController: BaseViewController { + private let homeView = HomeView() + + static func instance() -> HomeViewController { + return HomeViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.homeView + } + + override func viewDidLoad() { + super.viewDidLoad() + } +} diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..aa3e132 --- /dev/null +++ b/Podfile @@ -0,0 +1,10 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target '3dollar-in-my-pocket-manager' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + pod 'NMapsMap' + +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..07c832e --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - NMapsMap (3.13.0) + +DEPENDENCIES: + - NMapsMap + +SPEC REPOS: + trunk: + - NMapsMap + +SPEC CHECKSUMS: + NMapsMap: 88b5bdac7087bfa99ab058ff5cdd95fb766e0e95 + +PODFILE CHECKSUM: 564f70fcbac4bc8d7b71c47a22d9787575e48dda + +COCOAPODS: 1.11.2 From 47dd7d75ec8542fca1010100e635a92fa2a15c04 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 26 Mar 2022 16:00:49 +0900 Subject: [PATCH 035/166] =?UTF-8?q?wip:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EA=B7=B8=EB=A6=AC=EB=8A=94=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 +++++++ .../domains/home/HomeView.swift | 11 ++++- .../domains/home/subviews/AddressView.swift | 44 +++++++++++++++++++ .../home/subviews/SalesToggleView.swift | 9 ++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index bcd2432..876078f 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -53,6 +53,8 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; + 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0527EEEC11009B5527 /* AddressView.swift */; }; + 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; @@ -172,6 +174,8 @@ 6EB94EAC27CB209000609E77 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6EB94EAF27CB209000609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6EC51D0527EEEC11009B5527 /* AddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressView.swift; sourceTree = ""; }; + 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SalesToggleView.swift; sourceTree = ""; }; 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialSigninButton.swift; sourceTree = ""; }; 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AppleSDGothicNeoEB00.ttf; sourceTree = ""; }; @@ -398,6 +402,15 @@ path = "3dollar-in-my-pocket-manager"; sourceTree = ""; }; + 6EC51D0327EEEC08009B5527 /* subviews */ = { + isa = PBXGroup; + children = ( + 6EC51D0527EEEC11009B5527 /* AddressView.swift */, + 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */, + ); + path = subviews; + sourceTree = ""; + }; 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( @@ -550,6 +563,7 @@ 6EF676BB27EEE57500D43E99 /* home */ = { isa = PBXGroup; children = ( + 6EC51D0327EEEC08009B5527 /* subviews */, 6EF676BC27EEE57A00D43E99 /* HomeView.swift */, 6E81503527EEEA110032C518 /* HomeViewController.swift */, ); @@ -740,6 +754,7 @@ 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, + 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, @@ -782,6 +797,7 @@ 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, + 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index 5649968..8e2f218 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -8,9 +8,12 @@ final class HomeView: BaseView { $0.zoomLevel = 15 } + private let addressView = AddressView() + override func setup() { self.addSubViews([ - self.mapView + self.mapView, + self.addressView ]) } @@ -18,5 +21,11 @@ final class HomeView: BaseView { self.mapView.snp.makeConstraints { make in make.edges.equalToSuperview() } + + self.addressView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalTo(self.safeAreaLayoutGuide) + } } } diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift new file mode 100644 index 0000000..fe362b9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift @@ -0,0 +1,44 @@ +import UIKit + +final class AddressView: BaseView { + private let height:CGFloat = 56 + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 16 + $0.layer.shadowColor = UIColor.black.cgColor + $0.layer.shadowOffset = CGSize(width: 0, height: 4) + $0.layer.shadowOpacity = 0.08 + } + + private let addressLabel = UILabel().then { + $0.textColor = .black + $0.font = .semiBold(size: 16) + $0.text = "서울특별시 사직동" + $0.textAlignment = .center + } + + override func setup() { + self.addSubViews([ + self.containerView, + self.addressLabel + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.height.equalTo(self.height) + } + + self.addressLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.left.equalTo(self.containerView).offset(24) + make.right.equalTo(self.containerView).offset(-24) + } + + self.snp.makeConstraints { make in + make.edges.equalTo(self.containerView).priority(.high) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift new file mode 100644 index 0000000..29a8d54 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -0,0 +1,9 @@ +import UIKit + +final class SalesToggleView: BaseView { + private let backgroundView = UIView().then { + $0.backgroundColor = .white + $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + $0.layer.masksToBounds = true + } +} From e57221f26d2df73f1c5ecf1c6eca41969574a356 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 26 Mar 2022 20:13:41 +0900 Subject: [PATCH 036/166] =?UTF-8?q?wip:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=ED=95=98=EB=8B=A8=20=EC=98=81=EC=97=85=20=ED=86=A0=ED=81=B4?= =?UTF-8?q?=20=EB=B7=B0=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 20 +-- .../ic_badge.imageset/Contents.json | 12 ++ .../ic_badge.imageset/bedge.pdf | Bin 0 -> 4130 bytes 3dollar-in-my-pocket-manager/Info.plist | 4 + .../domains/home/HomeReactor.swift | 37 +++++ .../domains/home/HomeView.swift | 13 +- .../domains/home/HomeViewController.swift | 23 +++- .../home/subviews/SalesToggleView.swift | 128 ++++++++++++++++++ .../strings/en.lproj/Localizations.strings | 8 ++ 9 files changed, 234 insertions(+), 11 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/bedge.pdf create mode 100644 3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 876078f..716768e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -27,6 +27,9 @@ 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7327E71455004FBE25 /* LoadingManager.swift */; }; 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7527E714D6004FBE25 /* LoadingView.swift */; }; 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */; }; + 6E408D3927EF1FB300322365 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E408D3827EF1FB300322365 /* Base.framework */; }; + 6E408D3A27EF1FB300322365 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E408D3827EF1FB300322365 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */; }; 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; @@ -87,8 +90,6 @@ 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */; }; 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; - 6EF676AE27EEC88100D43E99 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; }; - 6EF676AF27EEC88100D43E99 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E473B8F27D85B7C00232139 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */; }; 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B327EECBED00D43E99 /* SplashView.swift */; }; 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B527EECC0600D43E99 /* SplashViewController.swift */; }; @@ -109,13 +110,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E8E7F2C27EEBBE7005345BB /* Embed Frameworks */ = { + 6E408D3B27EF1FB300322365 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EF676AF27EEC88100D43E99 /* Base.framework in Embed Frameworks */, + 6E408D3A27EF1FB300322365 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -147,7 +148,8 @@ 6E37AF7527E714D6004FBE25 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = ""; }; 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; 6E37AF7927E71F11004FBE25 /* 3dollar-in-my-pocket-manager.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "3dollar-in-my-pocket-manager.entitlements"; sourceTree = ""; }; - 6E473B8F27D85B7C00232139 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-fseuqzaxxxejiyfpuramzdfhhlff/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6E408D3827EF1FB300322365 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cintsqyfrfisoodqdbyniuyngmnr/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeReactor.swift; sourceTree = ""; }; 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; 6E473B9727D8624300232139 /* BaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCoordinator.swift; sourceTree = ""; }; @@ -212,7 +214,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6EF676AE27EEC88100D43E99 /* Base.framework in Frameworks */, + 6E408D3927EF1FB300322365 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -267,7 +269,7 @@ 6E1AA1B827CB215700C96D92 /* Frameworks */ = { isa = PBXGroup; children = ( - 6E473B8F27D85B7C00232139 /* Base.framework */, + 6E408D3827EF1FB300322365 /* Base.framework */, 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */, ); name = Frameworks; @@ -566,6 +568,7 @@ 6EC51D0327EEEC08009B5527 /* subviews */, 6EF676BC27EEE57A00D43E99 /* HomeView.swift */, 6E81503527EEEA110032C518 /* HomeViewController.swift */, + 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */, ); path = home; sourceTree = ""; @@ -590,8 +593,8 @@ 6EB94E9C27CB208F00609E77 /* Sources */, 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, - 6E8E7F2C27EEBBE7005345BB /* Embed Frameworks */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, + 6E408D3B27EF1FB300322365 /* Embed Frameworks */, ); buildRules = ( ); @@ -758,6 +761,7 @@ 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, + 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */, 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json new file mode 100644 index 0000000..87100d5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "bedge.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/bedge.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/bedge.pdf new file mode 100644 index 0000000000000000000000000000000000000000..baf91e4a6d25e4c03f592a3f000ef2cc549cabf9 GIT binary patch literal 4130 zcmb7{Pj4JW5XJBFDf$vAIb^o0|F;xHA`U?a5W(SwIGFV&F|v2T>!84==T|+mJ!6Lh z-qY-x?&_|pS5EZvAh29R3_+wC!i?>EU^Q>hGkCCD&5CkulbkiZ$Dt z^;Vx;iUAugxoE99Zuf(v(U&AK89!R*Y81mBH>O%_PR5O;<`|2)R?t_G6csEX2Qfgl z#!_`%&MCNLM8*<*s17KWoI^F+p^PL*NQz>k8n@Y(9N3u0;Mtn=K+iG4D(6Z{ z6@++*cOW*_niUB)l&f&C9cv1efNX~)K~>#g zrv{O1IiI+Y^P>+o5@XOjW}G4hVXTGJ$P8v8=m2vnF&D!+BId|Z7^Ba@1%(JQ0Ri%s z>_?7PFhr6GXp8e44V02kEzc!|#5zc!Q@dj%t#PK?YBy}S1iQ{!lg$#ui$Lm<7X!_VVaa@$gWv-VK$pLXP3q9w=a-f*t z=8EP(*-_Vejm~qxg5$W?iQd>+3YFNI4kT1oxkq*78v*ptY{hjg6TBt5E2^vCo;bnG z&UCGmEEIktx~snVE!jEcexz7kt7MT1ff~=PDC5`|M7(mJ@^`IKi1U^r@MB5d!(Odz z@sy^L+^Hqq=W~sXsG-mUv~!SZdK9a;9etvCY@_Ht3E#6 z{3b9U4|(=zdIwU+r5tS~R$2~6-z@EfRAgF&-jI{@q4n{I!!&ZuvW^NW@@8;hOx`8Y z#yf+aQAJMRZXU(b2PpIo$z+7&ZifY(tx!6Pz3Hu2fBV4;rp;E3lfMO=uE2E{dmUOI z+`)dqZmfH;9NM8rN0|Xc6~ja*?P4mh_x`vnOvT1?x}m4RwlK5S>Zm)FCjEhVnQ0n; zc7-}O24SFSw}7qMm={QoR5MD(723@#23K$U(F?X6X5+N0eqImYVr79=2Y0Yvup2w6 z3)h14(BVgiT3gGkOtckvD@^ix(j;49U?@!~KA&5x>qtpQM&)!-i5h8YBUZ|I0g*jg zu?P+A0>1EWfhHRaZ^lz!HydF}FXraAB(@*BK-*z5otQY271s6eE#^A3I<{l|cHLI@ zs~_2s$A_3URgp+I&seuMAWzmIUR2^qK`Nb@#aNBC_+M1-qGtb>Opl8 z3I(~bg3vKl#b)2CLNB8v01H!%!8!>&lES!FHK!HjctB$5^dXiA1zHdR2tgG_8JPox z`AEJHp_b)=(-98EMHNMKUS>9p1utvxu^J%B-jieP6HQyOwIJFkIV1@KVG>0;8XZas zo}gJ!wQ7&?z|5DqgjCr`qYlW1Hr67};W-%cT1u0#p5ci|(5{I-MPV^Syj4YrMLfV9k6;z;*u-Xa zsMIwQ(H?sDXGVwMbC0G@PllL|?K$W=Mp4U=5j1B?u7*NtkcO~P@R8{(4RKs*x&8;oT#6jC-CjXEtnyw4O)GiD%3w( zH{V@da#f=qoSV}*XNOPhl`rmp1X)=^5w0w$gU5d0;`rIc-Np6c!~LzFZ+Gtp(mJR} znSO?nrzU{spGq?QnSF;K_kGAm{dBvx$|olD0|@=}5Gst1)2h4Mi>vG1?Z8+3=G)hV yA4#irACr`fq@y)*s+&;(v literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index da7d901..c07c806 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,6 +2,10 @@ + UIAppFonts + + AppleSDGothicNeoEB00.ttf + NSPhotoLibraryUsageDescription 가게 인증 사진을 가져오기 위해 앨범권한을 허용해주세요. NSCameraUsageDescription diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift new file mode 100644 index 0000000..a108ab0 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -0,0 +1,37 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class HomeReactor: Reactor { + enum Action { + case tapSalesToggle + } + + enum Mutation { + case toggleSalesStatus + } + + struct State { + var isOnSales = false + } + + let initialState = State() + + func mutate(action: Action) -> Observable { + switch action { + case .tapSalesToggle: + return .just(.toggleSalesStatus) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .toggleSalesStatus: + newState.isOnSales.toggle() + } + + return newState + } +} diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index 8e2f218..ee12a46 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -8,12 +8,15 @@ final class HomeView: BaseView { $0.zoomLevel = 15 } - private let addressView = AddressView() + let addressView = AddressView() + + let salesToggleView = SalesToggleView() override func setup() { self.addSubViews([ self.mapView, - self.addressView + self.addressView, + self.salesToggleView ]) } @@ -27,5 +30,11 @@ final class HomeView: BaseView { make.right.equalToSuperview().offset(-24) make.top.equalTo(self.safeAreaLayoutGuide) } + + self.salesToggleView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + } } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 3f05144..ea9baaa 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -1,7 +1,10 @@ import UIKit -final class HomeViewController: BaseViewController { +import ReactorKit + +final class HomeViewController: BaseViewController, View { private let homeView = HomeView() + private let homeReactor = HomeReactor() static func instance() -> HomeViewController { return HomeViewController(nibName: nil, bundle: nil) @@ -9,9 +12,27 @@ final class HomeViewController: BaseViewController { override func loadView() { self.view = self.homeView + + self.reactor = self.homeReactor } override func viewDidLoad() { super.viewDidLoad() } + + func bind(reactor: HomeReactor) { + // Bind action + self.homeView.salesToggleView.rx.tapButton + .map { Reactor.Action.tapSalesToggle } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind state + reactor.state + .map { $0.isOnSales } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.homeView.salesToggleView.rx.isOn) + .disposed(by: self.disposeBag) + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index 29a8d54..a42c6b3 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -1,9 +1,137 @@ import UIKit +import RxSwift +import RxCocoa + final class SalesToggleView: BaseView { private let backgroundView = UIView().then { $0.backgroundColor = .white $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] $0.layer.masksToBounds = true } + + private let offTitleLabel = UILabel().then { + $0.font = .extraBold(size: 18) + $0.textColor = .gray100 + $0.text = "home_off_title".localized + $0.isHidden = true + } + + private let offDescriptionLabel = UILabel().then { + $0.font = .regular(size: 14) + $0.textColor = .gray100 + $0.text = "home_off_description".localized + $0.isHidden = true + } + + private let onTitleLabel = UILabel().then { + $0.font = .extraBold(size: 18) + $0.textColor = .white + $0.text = "home_on_title".localized + $0.isHidden = true + } + + private let onDescriptionLabel = UILabel().then { + $0.font = .extraBold(size: 18) + $0.textColor = .white + $0.text = "home_on_description".localized + $0.isHidden = true + } + + private let badgeImageView = UIImageView().then { + $0.image = UIImage(named: "ic_badge") + } + + fileprivate let toggleButton = UIButton().then { + $0.titleLabel?.font = .bold(size: 16) + $0.setTitleColor(.white, for: .normal) + $0.layer.cornerRadius = 8 + } + + override func setup() { + self.addSubViews([ + self.backgroundView, + self.offTitleLabel, + self.offDescriptionLabel, + self.onTitleLabel, + self.onDescriptionLabel, + self.badgeImageView, + self.toggleButton + ]) + } + + override func bindConstraints() { + self.backgroundView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.offTitleLabel).offset(-24) + } + + self.toggleButton.snp.makeConstraints { make in + make.left.equalTo(self.backgroundView).offset(24) + make.right.equalTo(self.backgroundView).offset(-24) + make.bottom.equalToSuperview() + make.height.equalTo(48) + } + + self.offDescriptionLabel.snp.makeConstraints { make in + make.left.equalTo(self.backgroundView).offset(26) + make.bottom.equalTo(self.toggleButton.snp.top).offset(-28) + } + + self.offTitleLabel.snp.makeConstraints { make in + make.left.equalTo(self.offDescriptionLabel) + make.bottom.equalTo(self.offDescriptionLabel.snp.top).offset(-8) + } + + self.onDescriptionLabel.snp.makeConstraints { make in + make.left.equalTo(self.backgroundView).offset(25) + make.bottom.equalTo(self.toggleButton.snp.top).offset(-28) + } + + self.onTitleLabel.snp.makeConstraints { make in + make.left.equalTo(self.onDescriptionLabel) + make.bottom.equalTo(self.onDescriptionLabel.snp.top).offset(-2) + } + + self.badgeImageView.snp.makeConstraints { make in + make.top.equalTo(self.backgroundView).offset(24) + make.right.equalTo(self.backgroundView).offset(-24) + make.width.height.equalTo(40) + } + + self.snp.makeConstraints { make in + make.edges.equalTo(self.backgroundView).priority(.high) + } + } + + fileprivate func setStatus(isOn: Bool) { + self.offTitleLabel.isHidden = isOn + self.offDescriptionLabel.isHidden = isOn + self.onTitleLabel.isHidden = !isOn + self.onDescriptionLabel.isHidden = !isOn + self.toggleButton.setTitle( + isOn ? "home_on_toggle".localized : "home_off_toggle".localized, + for: .normal + ) + self.toggleButton.setTitleColor(isOn ? .green : .white, for: .normal) + + UIView.transition(with: self, duration: 0.3) { [weak self] in + self?.toggleButton.backgroundColor = isOn ? .white : .green + self?.backgroundView.backgroundColor = isOn ? .green : .white + } + } +} + +extension Reactive where Base: SalesToggleView { + var isOn: Binder { + return Binder(self.base) { view, isOn in + view.setStatus(isOn: isOn) + } + } + + var tapButton: ControlEvent { + return self.base.toggleButton.rx.tap + } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 21dabdd..a8d0a15 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -39,6 +39,14 @@ "signup_upload_photo" = "이미지 업로드"; "signup_button" = "회원 가입"; +// home +"home_off_title" = "이 위치에서 영업을 시작할까요?"; +"home_off_description" = "영업을 시작하면 손님들에게 노출이 시작됩니다!"; +"home_off_toggle" = "영업 시작하기"; +"home_on_title" = "개시 후"; +"home_on_description" = "동안 영업 중입니다."; +"home_on_toggle" = "영업 종료하기!"; + // waiting "waiting_title" = "승인 대기 중입니다."; "waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; From a175fa75aa4a333af5fbd1bf8659e0c05710ce10 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 27 Mar 2022 12:52:06 +0900 Subject: [PATCH 037/166] =?UTF-8?q?fix:=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 716768e..068b8fc 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -27,8 +27,6 @@ 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7327E71455004FBE25 /* LoadingManager.swift */; }; 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7527E714D6004FBE25 /* LoadingView.swift */; }; 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */; }; - 6E408D3927EF1FB300322365 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E408D3827EF1FB300322365 /* Base.framework */; }; - 6E408D3A27EF1FB300322365 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E408D3827EF1FB300322365 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */; }; 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; @@ -48,6 +46,8 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; + 6E808CAE27F016CF00C46459 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; + 6E808CAF27F016CF00C46459 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; @@ -110,13 +110,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E408D3B27EF1FB300322365 /* Embed Frameworks */ = { + 6E808CB027F016CF00C46459 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E408D3A27EF1FB300322365 /* Base.framework in Embed Frameworks */, + 6E808CAF27F016CF00C46459 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -148,7 +148,6 @@ 6E37AF7527E714D6004FBE25 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = ""; }; 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; 6E37AF7927E71F11004FBE25 /* 3dollar-in-my-pocket-manager.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "3dollar-in-my-pocket-manager.entitlements"; sourceTree = ""; }; - 6E408D3827EF1FB300322365 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cintsqyfrfisoodqdbyniuyngmnr/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeReactor.swift; sourceTree = ""; }; 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; @@ -168,6 +167,7 @@ 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategoryResponse.swift; sourceTree = ""; }; 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryService.swift; sourceTree = ""; }; 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategory.swift; sourceTree = ""; }; + 6E808CAD27F016CF00C46459 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cpqyhqxhepkpbfajpzjhmdywgxbk/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -214,7 +214,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E408D3927EF1FB300322365 /* Base.framework in Frameworks */, + 6E808CAE27F016CF00C46459 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -269,7 +269,7 @@ 6E1AA1B827CB215700C96D92 /* Frameworks */ = { isa = PBXGroup; children = ( - 6E408D3827EF1FB300322365 /* Base.framework */, + 6E808CAD27F016CF00C46459 /* Base.framework */, 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */, ); name = Frameworks; @@ -594,7 +594,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E408D3B27EF1FB300322365 /* Embed Frameworks */, + 6E808CB027F016CF00C46459 /* Embed Frameworks */, ); buildRules = ( ); From 294f47701288081b9c63c01eec0572cc74ddcc36 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Mon, 28 Mar 2022 22:18:21 +0900 Subject: [PATCH 038/166] =?UTF-8?q?wip:=20=ED=83=AD=EB=B0=94=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +++ .../3dollar-in-my-pocket-manager.xcscheme | 78 ++++++++++++++++++ .../ic_home.imageset/Contents.json | 23 ++++++ .../Assets.xcassets/ic_home.imageset/home.png | Bin 0 -> 563 bytes .../ic_home.imageset/home@2x.png | Bin 0 -> 913 bytes .../ic_home.imageset/home@3x.png | Bin 0 -> 1289 bytes .../domains/home/HomeView.swift | 2 +- .../domains/home/HomeViewController.swift | 9 +- .../home/subviews/SalesToggleView.swift | 2 +- .../domains/main/MainTabController.swift | 40 +++++++++ 10 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home@3x.png create mode 100644 3dollar-in-my-pocket-manager/domains/main/MainTabController.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 068b8fc..d185f93 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -90,6 +90,7 @@ 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624D27DDBE64008B3531 /* SPPermissionsLocationWhenInUse */; }; 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; + 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */; }; 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */; }; 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B327EECBED00D43E99 /* SplashView.swift */; }; 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B527EECC0600D43E99 /* SplashViewController.swift */; }; @@ -195,6 +196,7 @@ 6EE0CFC227CB65320027A426 /* BundleExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleExtensions.swift; sourceTree = ""; }; 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCoordinator.swift; sourceTree = ""; }; + 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabController.swift; sourceTree = ""; }; 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossAccountInfoResponse.swift; sourceTree = ""; }; 6EF676B327EECBED00D43E99 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; 6EF676B527EECC0600D43E99 /* SplashViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashViewController.swift; sourceTree = ""; }; @@ -416,6 +418,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6EEA3D6827F1E73A00BC5F31 /* main */, 6EF676BB27EEE57500D43E99 /* home */, 6EF676B227EECBE600D43E99 /* splash */, 6E473BA027D872E000232139 /* shared */, @@ -551,6 +554,14 @@ path = utils; sourceTree = ""; }; + 6EEA3D6827F1E73A00BC5F31 /* main */ = { + isa = PBXGroup; + children = ( + 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */, + ); + path = main; + sourceTree = ""; + }; 6EF676B227EECBE600D43E99 /* splash */ = { isa = PBXGroup; children = ( @@ -793,6 +804,7 @@ 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, + 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme new file mode 100644 index 0000000..1e7a836 --- /dev/null +++ b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json new file mode 100644 index 0000000..e25be4b --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "home.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.png new file mode 100644 index 0000000000000000000000000000000000000000..35febf2fa14b48ca83ac11a1cd5a11d5b90669f0 GIT binary patch literal 563 zcmV-30?hr1P)wMq5na+F#_H0Z#vR77d_?|cX?}IM1)>sB6m*DL>hxwub##HNM0=}#u z-PVJkN>Bivi*+oPx<%dx_yavvFr|Z+t7;H@a|OLp3=!TTFJm6?3R3qC!yS}rV0=YB z!i;4%wah=k(?tfMkRXpy#29l{z-g=Ri5XnRsftG<1{A|XS)^}Azp2(+^jf?j@}33k z(;c)ma$)KAh}x!6Wh3(9nO1(9jh zBv~yiK|6CZ{9#jAlcHft)&SguqH{~CxJENNx22`H3zHu zB-oGbJ;8xg)N1KCk6RnvrRA!~=uvP5f;_w<t37Mdy@oXuR7wL6}=2M;a839+Q7! z>yarXJ0@T_GoMNg30fX8DYLKDj>LoD@*mkfzM4L zHTC{Pb~Rgxy+52mkw%i|Y+c&ggqkW%LtX#MegMerl(~#!U-fhAd8R_#2XB$6q23f1{}c^A6A&o zdxMsl?jB&6mRUHzg)-mo-~IaazZ*zMh=jmP&_6qYNPVJTg~u}^NcTI+U%Rl3T>(y| zfUNvRzYYTK7-1$3ao8Hc5-Hf?*XILd+&csZ&#*wpyVnwS1Pm%yNT(eLvAf3I1@GR$ z`4ub>Erp!wF0x}v8SzoSC~s&S)Zor{=|2Z+xCb|sQne^4wYdQ2tcYyt2c8G&Gg3BC z?$mwf`jt9_G_`u9aj{tn{l2(FMmW%dm-m=cFlz8jxmEYBaln3fT-@RIyowD7-vhT7 z*YsEan8Y8XD3$hCwB&#)m6QhY-bv&nA zpbKCpsRqv_Ql$3qq1D4n!`~1AA~IvGSQvUhD5Xu34Q>}#)_0rmw@U4I-nV_B;Yhtz z7a&B@f1Ii#E@lr(iz~5Voq1rJEw6IeU0LPqtp{Qv5fC?tfVg=B+pvpFr`gkR%`QBi z9a0S+Vk#OocO)2l0zC6KVIO0%)W#6LZI$Q(*m|oi&x;*)mHGTz@-$@G*oR@vfYVn4R;xq#7e|XA|P&FfdEUMWg`}|{8CH;dcLFF}U9tFKkEI09=mL1QG;i(22L}%?Cc~v=^eZQTd#U-I n?a`yO`H7ue)7n;kf@S^z`ePktc{*WJ00000NkvXXu0mjfm=cJOu6n-RE^wFH%TZ*MDbn zfU6(Q(Aqyo$&@S5+h0;tDm&`8G`C;i7$3wgS_cD^M0o<8ZttiS(NRbkR;_t0zN}TtYUL5FatMWhe zH=iRA{#Vd=OVL5h+>|_rNKQUmvL&!W%6$wMcYRwrzXEl)8<>|T>RTQ%BYUXT+Gu{h z*;93$ltn+wLd}wgWo@^&u~?a(Ds{_z|d( z30GSRl?|-Cvfmg94Y3Dq%XxAI+zM3GgiHL3M66-C;MN##xi0tv-nlE_&WdRheo0m; zWk$ZlVl6E!4nbpw!=@7UB{MQrR<5hhK1aA&L1e-+?DGTlSy5n|h5l1z4YNIdpo8zi z_X0C!Tw_tj3HI z1!9N-F+_nFqCgB$AciOqLllT%4rM}7%7u$(kRrv{n{DWJNrepJ4B6;U{6BY6W`$Wf z0*&KLDpGKnDsgW2kArh5k_tut_HepYS}9)mEk;Sk`K(Cz_6rj0N~rfC>w>NcD-dNw zC$PZ~!Mnoh{9TI(X(7S1;B*4m{iiwK{ z&}rjbQtc*q#=k(-Y|Y%MR*fymc$1kh#FFPPyq`q@wwU-izZu7cGO#p8Ci&S?A%22q z0th7YW7}DUOA&uH)|lIBz%wCMQ2se#$!6Z->+|Vb8t_bfSY?O;F+_nFqCgB$AciOq zLllT13d9fvVwhZ@08h}~=&nyZcbh~+%pEfOfjeTJf%%da1p zy6uOw5F5s5-o1eCP1jNzu?wW5d9rmsMWSSZY;jRd-po?~odWCT;Q1`l8z&3+Hv}eo zUrfK31$vq8p|MQ(?m`KG9&JOiH00000NkvXXu0mjfcid2~ literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index ee12a46..c00651c 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -34,7 +34,7 @@ final class HomeView: BaseView { self.salesToggleView.snp.makeConstraints { make in make.left.equalToSuperview() make.right.equalToSuperview() - make.bottom.equalToSuperview() + make.bottom.equalTo(self.safeAreaLayoutGuide) } } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index ea9baaa..895d42c 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -7,7 +7,14 @@ final class HomeViewController: BaseViewController, View { private let homeReactor = HomeReactor() static func instance() -> HomeViewController { - return HomeViewController(nibName: nil, bundle: nil) + return HomeViewController(nibName: nil, bundle: nil).then { + $0.tabBarItem = UITabBarItem( + title: nil, + image: UIImage(named: "ic_home"), + tag: 1 + ) + $0.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0) + } } override func loadView() { diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index a42c6b3..661681a 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -71,7 +71,7 @@ final class SalesToggleView: BaseView { self.toggleButton.snp.makeConstraints { make in make.left.equalTo(self.backgroundView).offset(24) make.right.equalTo(self.backgroundView).offset(-24) - make.bottom.equalToSuperview() + make.bottom.equalTo(self.backgroundView).offset(-32) make.height.equalTo(48) } diff --git a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift new file mode 100644 index 0000000..d4882bb --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift @@ -0,0 +1,40 @@ +import UIKit + +import RxSwift + +final class MainTabController: UITabBarController { + private let feedbackGenerator = UISelectionFeedbackGenerator() + private let disposeBag = DisposeBag() + + static func instance() -> MainTabController { + return MainTabController(nibName: nil, bundle: nil) + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.setupTabBarController() + self.feedbackGenerator.prepare() + if #available(iOS 15, *) { + let appearance = UITabBarAppearance() + + appearance.configureWithOpaqueBackground() + appearance.backgroundColor = .white + self.tabBar.standardAppearance = appearance + self.tabBar.scrollEdgeAppearance = appearance + } + } + + private func setupTabBarController() { + self.setViewControllers([ + HomeViewController.instance(), + HomeViewController.instance(), + HomeViewController.instance(), + HomeViewController.instance() + ], animated: true) + self.tabBar.tintColor = .green + self.tabBar.layer.borderWidth = 1 + self.tabBar.layer.borderColor = UIColor.gray5.cgColor + self.tabBar.barTintColor = .white + } +} From 58e88c73d15ffd5b38ece1b03a1c04a23b6a7169 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 30 Mar 2022 15:38:58 +0900 Subject: [PATCH 039/166] =?UTF-8?q?wip:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=8B=A4=EB=A5=B8=20=ED=91=B8=EB=93=9C=ED=8A=B8=EB=9F=AD=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 18 ++++-- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../ic_check.imageset/Contents.json | 12 ++++ .../ic_check.imageset/check.pdf | Bin 0 -> 2282 bytes .../domains/home/HomeView.swift | 21 ++++++- .../home/subviews/ShowOtherStoreButton.swift | 55 ++++++++++++++++++ 6 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/check.pdf create mode 100644 3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index d185f93..036640d 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -28,6 +28,7 @@ 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7527E714D6004FBE25 /* LoadingView.swift */; }; 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */; }; 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */; }; + 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4455B627F3E69E00A8DECF /* ShowOtherStoreButton.swift */; }; 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; @@ -46,8 +47,6 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; - 6E808CAE27F016CF00C46459 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; - 6E808CAF27F016CF00C46459 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; @@ -97,6 +96,8 @@ 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */; }; 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */; }; 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676BC27EEE57A00D43E99 /* HomeView.swift */; }; + 6EFA3A0F27F3E1E000C13906 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; platformFilter = ios; }; + 6EFA3A1027F3E1E000C13906 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */; }; /* End PBXBuildFile section */ @@ -111,13 +112,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E808CB027F016CF00C46459 /* Embed Frameworks */ = { + 6EFA3A1127F3E1E000C13906 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E808CAF27F016CF00C46459 /* Base.framework in Embed Frameworks */, + 6EFA3A1027F3E1E000C13906 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -150,6 +151,7 @@ 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; 6E37AF7927E71F11004FBE25 /* 3dollar-in-my-pocket-manager.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "3dollar-in-my-pocket-manager.entitlements"; sourceTree = ""; }; 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeReactor.swift; sourceTree = ""; }; + 6E4455B627F3E69E00A8DECF /* ShowOtherStoreButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowOtherStoreButton.swift; sourceTree = ""; }; 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; 6E473B9727D8624300232139 /* BaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCoordinator.swift; sourceTree = ""; }; @@ -203,6 +205,7 @@ 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashReactor.swift; sourceTree = ""; }; 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashCoordinator.swift; sourceTree = ""; }; 6EF676BC27EEE57A00D43E99 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + 6EFA3A0E27F3E1E000C13906 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cintsqyfrfisoodqdbyniuyngmnr/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 90AB2FCCDB6AA6ABA4B64642 /* Pods-3dollar-in-my-pocket-manager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; path = "Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -216,7 +219,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E808CAE27F016CF00C46459 /* Base.framework in Frameworks */, + 6EFA3A0F27F3E1E000C13906 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -272,6 +275,7 @@ isa = PBXGroup; children = ( 6E808CAD27F016CF00C46459 /* Base.framework */, + 6EFA3A0E27F3E1E000C13906 /* Base.framework */, 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */, ); name = Frameworks; @@ -411,6 +415,7 @@ children = ( 6EC51D0527EEEC11009B5527 /* AddressView.swift */, 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */, + 6E4455B627F3E69E00A8DECF /* ShowOtherStoreButton.swift */, ); path = subviews; sourceTree = ""; @@ -605,7 +610,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E808CB027F016CF00C46459 /* Embed Frameworks */, + 6EFA3A1127F3E1E000C13906 /* Embed Frameworks */, ); buildRules = ( ); @@ -800,6 +805,7 @@ 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, + 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index c6e1ad8..b0b8225 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -50,7 +50,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/Contents.json new file mode 100644 index 0000000..37accc5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "check.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/check.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check.imageset/check.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a08002e1cb01a68ec1fa1ea639bac12533548582 GIT binary patch literal 2282 zcma)8%Whjo4BgLH%qBomAXg;k!5JV3(AZ5;v_)N|yPym8`o>WqORc07X}-RPBWWbZ zUQ`QvbcW=Rhc7+5xqkbS2X&4;`OP1HI`3b-@~>aJX?<&7om}FxpQiQQ{-X~7=O(q= zZ>Pn*n_W-;EXQg7{TqMv?(*BXbALM?sC_)04ln!Z@m;?f?_EFBpqgL=CL#qp?8f!^ zn&o8qLWkoZR5?_S04tTup7TjAo(^YdbZ0YXbmcDWboKN7legU+*z7v}Nto>5*|qL% z5Bls*hep?}bPVQB@pY^p9$$3><5T>t+(-Apt=+HxH*YXkVg_BFUjBq>>aZ)*nRR&yXlu^8t|n_e?K{GLEf0q6SEbfIRa6 z&s$hw;1G}qLsHJ5-}ETdnlK6wYK$yiKoR;;fpDVC1f-Nxd~%E#p~5-DjLWQ+=M`!W z{1H+B6CtPeG*hZv@iZ|K)tt$(N^^$UkXEY_pkXdk2-<=-pCga}8fv46i17@9hYYSp z*G3Iz5CM)T5-P=FMaGTWOo%48SX<_RR8640Jy<0)CNVuKwVcEfkpW~$lfoAS$Th3k zt}%m>rY9ISrJ^C=9&3bDfVc!hG@>AYK$_W_h8cxr$syE}L=*$CShZy?XF*;K$wi9g z1XYZZY6xgN5K}UUi48+eElVghK_{9e5JMP%l+qDF?6u%M#-*a=AVp{)%8)|5bU+|Q z(GYYV5{URvO<=Ya5zcs;hZ5o;sc2}V^3c$!c1*d#ESfHBZrz6xwf+EtX^t|oK>)pC z$YBtSPYj1PlfG#~$=1?w=bRRl?V`itLKAY|TcG{C&t~7Q*PH#$zyBTk4WHR>|Nb@k z+0Ei^Is!jWx68$w&1e4}^nJaqF2;2q+$T%(X}9^b9jBeQ4LU!XyV|Vx(;6?@`aFR* zi!CsZG&bmB$r{v`@9f9rEnM{$!Q7wTx!Qb!E=&!e z-9y#S+v$TNukH}O{q;GekUZey2aVoN9?SRmLFGM!SW%!~L+O!}_4h+5LGyNKzg;X> z)7IhF$n1w}(D8h?xu0J6=gZp{2U2G9&1UZ{;70K5-SW!>@7u4E#dhDq!6qU1?Adp} Gy!{X1Zq-r% literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index c00651c..4fd118a 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -10,13 +10,21 @@ final class HomeView: BaseView { let addressView = AddressView() + let showOtherButton = ShowOtherButton() + let salesToggleView = SalesToggleView() + let currentLocationButton = UIButton().then { + $0.setImage(nil, for: .normal) + } + override func setup() { self.addSubViews([ self.mapView, self.addressView, - self.salesToggleView + self.showOtherButton, + self.salesToggleView, + self.currentLocationButton ]) } @@ -31,6 +39,17 @@ final class HomeView: BaseView { make.top.equalTo(self.safeAreaLayoutGuide) } + self.showOtherButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.bottom.equalTo(self.salesToggleView.snp.top).offset(-32) + } + + self.currentLocationButton.snp.makeConstraints { make in + make.width.height.equalTo(40) + make.right.equalToSuperview().offset(-32) + make.centerY.equalTo(self.showOtherButton) + } + self.salesToggleView.snp.makeConstraints { make in make.left.equalToSuperview() make.right.equalToSuperview() diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift new file mode 100644 index 0000000..0f56f3a --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift @@ -0,0 +1,55 @@ +import UIKit + +final class ShowOtherButton: BaseView { + fileprivate let tapGesture = UITapGestureRecognizer() + + private let backgroundView = UIView().then { + $0.layer.cornerRadius = 8 + $0.backgroundColor = .white + } + + private let checkImageView = UIImageView().then { + $0.image = UIImage(named: "ic_check") + } + + private let titleLabel = UILabel().then { + $0.font = .medium(size: 14) + $0.textColor = .gray100 + $0.text = "다른 푸드트럭 보기" + $0.setKern(kern: -0.4) + } + + override func setup() { + self.addGestureRecognizer(self.tapGesture) + self.addSubViews([ + self.backgroundView, + self.checkImageView, + self.titleLabel + ]) + } + + override func bindConstraints() { + self.backgroundView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + make.right.equalTo(self.titleLabel).offset(11) + make.bottom.equalToSuperview() + make.height.equalTo(40) + } + + self.checkImageView.snp.makeConstraints { make in + make.width.height.equalTo(16) + make.left.equalTo(self.backgroundView).offset(12) + make.centerY.equalTo(self.backgroundView) + } + + self.titleLabel.snp.makeConstraints { make in + make.left.equalTo(self.checkImageView.snp.right).offset(8) + make.centerY.equalTo(self.backgroundView) + } + + self.snp.makeConstraints { make in + make.edges.equalTo(self.backgroundView).priority(.high) + } + } +} From 2484fd73f1f36fa59f7bc477e22726889d496ebd Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 31 Mar 2022 10:05:29 +0900 Subject: [PATCH 040/166] =?UTF-8?q?feat:=20=ED=99=88=20=ED=83=AD=EB=B0=94?= =?UTF-8?q?=20=EC=84=A4=EC=A0=95=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 +++ .../domains/home/HomeView.swift | 7 ++-- .../domains/home/HomeViewController.swift | 6 +++- .../home/subviews/SalesToggleView.swift | 1 + .../domains/main/MainTabController.swift | 34 ++++++++++++++++++- .../models/presentation/TabBarTag.swift | 5 +++ 6 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/presentation/TabBarTag.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 036640d..a1f264e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; + 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; @@ -143,6 +144,7 @@ 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObserverExtensions.swift; sourceTree = ""; }; 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; + 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarTag.swift; sourceTree = ""; }; 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingViewController.swift; sourceTree = ""; }; 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingReactor.swift; sourceTree = ""; }; 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingCoordinator.swift; sourceTree = ""; }; @@ -545,6 +547,7 @@ children = ( 6EE0CFB827CB5DF90027A426 /* SocialType.swift */, 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */, + 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */, ); path = presentation; sourceTree = ""; @@ -782,6 +785,7 @@ 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */, 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, + 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index 4fd118a..d670520 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -5,7 +5,7 @@ import NMapsMap final class HomeView: BaseView { let mapView = NMFMapView().then { $0.positionMode = .direction - $0.zoomLevel = 15 + $0.zoomLevel = 17 } let addressView = AddressView() @@ -30,7 +30,10 @@ final class HomeView: BaseView { override func bindConstraints() { self.mapView.snp.makeConstraints { make in - make.edges.equalToSuperview() + make.left.equalToSuperview() + make.top.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalTo(self.salesToggleView.snp.top).offset(20) } self.addressView.snp.makeConstraints { make in diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 895d42c..0ef39fd 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -6,12 +6,16 @@ final class HomeViewController: BaseViewController, View { private let homeView = HomeView() private let homeReactor = HomeReactor() + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + static func instance() -> HomeViewController { return HomeViewController(nibName: nil, bundle: nil).then { $0.tabBarItem = UITabBarItem( title: nil, image: UIImage(named: "ic_home"), - tag: 1 + tag: TabBarTag.home.rawValue ) $0.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0) } diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index 661681a..f7f7b8a 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -8,6 +8,7 @@ final class SalesToggleView: BaseView { $0.backgroundColor = .white $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] $0.layer.masksToBounds = true + $0.layer.cornerRadius = 20 } private let offTitleLabel = UILabel().then { diff --git a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift index d4882bb..88cbd3f 100644 --- a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift +++ b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift @@ -25,9 +25,40 @@ final class MainTabController: UITabBarController { } } + override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { + self.feedbackGenerator.selectionChanged() + + guard let tabBarTag = TabBarTag(rawValue: item.tag) else { return } + + switch tabBarTag { + case .home, .myPage: + if #available(iOS 15, *) { + let appearance = UITabBarAppearance() + appearance.configureWithOpaqueBackground() + appearance.backgroundColor = .white + self.tabBar.standardAppearance = appearance + self.tabBar.scrollEdgeAppearance = appearance + } else { + self.tabBar.barTintColor = .white + self.tabBar.backgroundColor = .white + } + + case .setting: + if #available(iOS 15, *) { + let appearance = UITabBarAppearance() + appearance.configureWithOpaqueBackground() + appearance.backgroundColor = .gray100 + self.tabBar.standardAppearance = appearance + self.tabBar.scrollEdgeAppearance = appearance + } else { + self.tabBar.barTintColor = .gray100 + self.tabBar.backgroundColor = .gray100 + } + } + } + private func setupTabBarController() { self.setViewControllers([ - HomeViewController.instance(), HomeViewController.instance(), HomeViewController.instance(), HomeViewController.instance() @@ -36,5 +67,6 @@ final class MainTabController: UITabBarController { self.tabBar.layer.borderWidth = 1 self.tabBar.layer.borderColor = UIColor.gray5.cgColor self.tabBar.barTintColor = .white + self.tabBar.backgroundColor = .white } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/TabBarTag.swift b/3dollar-in-my-pocket-manager/models/presentation/TabBarTag.swift new file mode 100644 index 0000000..e124448 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/TabBarTag.swift @@ -0,0 +1,5 @@ +enum TabBarTag: Int { + case home + case myPage + case setting +} From 29ef3089c521bfab8f0b872d06bb8e0df3db1308 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 31 Mar 2022 10:18:59 +0900 Subject: [PATCH 041/166] =?UTF-8?q?feat:=20LocationManager=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++++ .../ic_marker_active.imageset/Contents.json | 12 +++ .../ic_marker_active.imageset/GPS.pdf | Bin 0 -> 5134 bytes .../domains/home/HomeView.swift | 21 +++++ .../managers/location/LocationError.swift | 24 +++++ .../managers/location/LocationManager.swift | 84 ++++++++++++++++++ .../strings/en.lproj/Localizations.strings | 17 +++- 7 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/GPS.pdf create mode 100644 3dollar-in-my-pocket-manager/managers/location/LocationError.swift create mode 100644 3dollar-in-my-pocket-manager/managers/location/LocationManager.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index a1f264e..e448fc7 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -22,6 +22,8 @@ 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; + 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; + 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; @@ -145,6 +147,8 @@ 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarTag.swift; sourceTree = ""; }; + 6E25FED227F535F100BE2941 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; + 6E25FED527F5363600BE2941 /* LocationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationError.swift; sourceTree = ""; }; 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingViewController.swift; sourceTree = ""; }; 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingReactor.swift; sourceTree = ""; }; 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingCoordinator.swift; sourceTree = ""; }; @@ -325,6 +329,15 @@ path = request; sourceTree = ""; }; + 6E25FED427F5362A00BE2941 /* location */ = { + isa = PBXGroup; + children = ( + 6E25FED227F535F100BE2941 /* LocationManager.swift */, + 6E25FED527F5363600BE2941 /* LocationError.swift */, + ); + path = location; + sourceTree = ""; + }; 6E37AF7227E7144B004FBE25 /* loading */ = { isa = PBXGroup; children = ( @@ -500,6 +513,7 @@ 6EE0CF9B27CB54A70027A426 /* managers */ = { isa = PBXGroup; children = ( + 6E25FED427F5362A00BE2941 /* location */, 6E37AF7227E7144B004FBE25 /* loading */, 6EE0CF9C27CB54AE0027A426 /* social-sign-in */, ); @@ -799,6 +813,7 @@ 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, + 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */, 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, @@ -815,6 +830,7 @@ 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, + 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/Contents.json new file mode 100644 index 0000000..bce0745 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "GPS.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/GPS.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_marker_active.imageset/GPS.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b44da96d77b00524268c06fb24562d1cdde0ebb4 GIT binary patch literal 5134 zcmd^@U5g||7KZQhSH#VLE|?YHA0UFx=prgR(=P0Vc+u9BGcDa!yIrlQzkZ(+5t)(I z-75=T+Je-)8RtaA`FP)x`Qr7fFFrDJnkJ*PI{om|q}0bBt4}_e4#&6h&&h7_-PecX zyNCD60ba?f^TYk&`fl32I{b38KV1F&GxhS@?Z5Wt=|B8uW?lc3UVePE{(AaseYC%u z^lZF|F=6@m$9aF8+`86=+2mldS9crKBsO#=7iGe-^=k4Aw4a^B(8bAn~a}r&_-)Tb;oEzu6JfwLPp!*Vdei2DLuKSyvQ81poM|E+a?Zd3#ME;Z9gVER0XLC# z!NLrh{FLOhsgO6$MM!GSKFh_bsSCw<0aGTWUQA&IgEt^ojAJh{Sac*SKsv=znkm=G ztriLwZ0lkqnXKbP9H5$#T8<8stcP;yt~NyH#9xd#LIko!;L;5WNg^kZwWgXzSA1Sf zjpS5JopxNh)>p=fKtzrRSI8&1Lk+%OOtt0k6-;EYt+TqXi>V)&cnP&iu`Xevgf*TU z$jO_jRCR->sAsCb=JiQMvoPV#`Q8y8FAbBTXkB86XR{7mazVAN+h83DZe6L96k+w4 z>Bok70^Y5S53Zu5ArmcGX)QLgGGwu-m?PK?OVZBWI@pvO8a!xSNtW6^l$fcFlAztIV4Y)1q+T!^ zORgS^bs^NfJuYLlj`(3>^nan6PlNri>% z;0ozsT1glBPvoc=k^rNSA|6_L&T4K##L65T^=E19oP#5+@C3P#QjcOvwF{j%;|n*= zbMZd&tnv;~g(a1NS+sFHwh3k_mJXxXf=dAvhsg+*m8MLy^VV7kHk?PObHF*5GnTt3 zw@wh&a+(YaZLxJOsMcMf2agKB67a|K32aUd8$)mFUZCE)hI`jc`vO(q+LILuwn+;)tC6iBTv`3K9v3Kwn!JSx1fu*}?=FlXV3est4&0bUAXv0P zjei8v7EWN*%2R-p51a+q`3#7{LLY!S>jCK^J-lVdfQ89qY_KSh*PKA0&b5IOI)k;_x;Yo&=icNdKi0B%_Vc*hVpoUW&ok z|87EBVA8}SGte=Bj|&ZKc->DMiCP=`c7u+iqM6JC%nq9?jfjkEZX+^IB7%=v3v>W-oP%b>6;|&l6Fs01W%%p} z+2%DRN~NtBr0N;R>3xqbc*c)9don3Pn{CI82p|mf3Pad_;*CSzD%vc|I+>9zuM4Kg z%T9I2JIn@a+qS`LUD!^?Tmz?BW?x|_xdC&h?8=O?+_TPmk1(9oI^3=U>#LYvYJ}jp zb^~7i8dC4xFapysO0^+tWQpQaWG}IP6#tredFg#K$)}tCU1s@+!*tR=?!b<2{kDT< zk8eJ^Pmjmb!&!azJ>P)%+x_#me;?HD_4T_$2fjJHy}ADE^sD-ABy!E(_%Ja(Yb>6w z4(HR)_xrgFv+RdRzXwe0iq z^fR{R$@$M98&A~X#*h$-Aih zspAS!qL+|I?;b-@-p(!zA%BGM5@On3p@;kHo7=;Y0Po&D#%K nPFbxf>-&d#9U1ed7cV~l#~1$vHI?|d literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index d670520..cd738dd 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -8,6 +8,10 @@ final class HomeView: BaseView { $0.zoomLevel = 17 } + let marker = UIImageView().then { + $0.image = UIImage(named: "ic_marker_active") + } + let addressView = AddressView() let showOtherButton = ShowOtherButton() @@ -21,6 +25,7 @@ final class HomeView: BaseView { override func setup() { self.addSubViews([ self.mapView, + self.marker, self.addressView, self.showOtherButton, self.salesToggleView, @@ -36,6 +41,12 @@ final class HomeView: BaseView { make.bottom.equalTo(self.salesToggleView.snp.top).offset(20) } + self.marker.snp.makeConstraints { make in + make.center.equalTo(self.mapView) + make.width.equalTo(30) + make.height.equalTo(40) + } + self.addressView.snp.makeConstraints { make in make.left.equalToSuperview().offset(24) make.right.equalToSuperview().offset(-24) @@ -59,4 +70,14 @@ final class HomeView: BaseView { make.bottom.equalTo(self.safeAreaLayoutGuide) } } + + private func setupRangeOverlayView(latitude: Double, longitude: Double) { + let rangeOverlayView = NMFCircleOverlay().then { + $0.center = NMGLatLng(lat: latitude, lng: longitude) + $0.radius = 100 + $0.fillColor = .pink.withAlphaComponent(0.2) + } + + rangeOverlayView.mapView = self.mapView + } } diff --git a/3dollar-in-my-pocket-manager/managers/location/LocationError.swift b/3dollar-in-my-pocket-manager/managers/location/LocationError.swift new file mode 100644 index 0000000..9358fa6 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/location/LocationError.swift @@ -0,0 +1,24 @@ +import Foundation + +enum LocationError: LocalizedError { + case denied + case unknown + case unknownLocation + case disableLocationService + + var localizedDescription: String { + switch self { + case .denied: + return "location_deny_description".localized + + case .unknown: + return "error_unknown".localized + + case .unknownLocation: + return "location_unknown".localized + + case .disableLocationService: + return "location_disable_service".localized + } + } +} diff --git a/3dollar-in-my-pocket-manager/managers/location/LocationManager.swift b/3dollar-in-my-pocket-manager/managers/location/LocationManager.swift new file mode 100644 index 0000000..1f1c6d6 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/location/LocationManager.swift @@ -0,0 +1,84 @@ +import RxSwift +import CoreLocation + +protocol LocationManagerProtocol { + /// 현재 위치를 조회합니다. + func getCurrentLocation() -> Observable +} + +final class LocationManager: NSObject, LocationManagerProtocol { + static let shared = LocationManager() + private var manager = CLLocationManager() + fileprivate var locationPublisher = PublishSubject() + + override init() { + super.init() + + self.manager.delegate = self + } + + func getCurrentLocation() -> Observable { + if CLLocationManager.locationServicesEnabled() { + if self.manager.authorizationStatus == .notDetermined { + self.manager.requestWhenInUseAuthorization() + } else { + self.locationPublisher = PublishSubject() + self.manager.startUpdatingLocation() + } + + return self.locationPublisher + } else { + return .error(LocationError.disableLocationService) + } + } +} + +extension LocationManager: CLLocationManagerDelegate { + func locationManager( + _ manager: CLLocationManager, + didChangeAuthorization status: CLAuthorizationStatus + ) { + switch status { + case .denied, .restricted: + self.locationPublisher.onError(LocationError.denied) + + case .authorizedAlways, .authorizedWhenInUse: + self.manager.startUpdatingLocation() + + case .notDetermined: + self.manager.requestWhenInUseAuthorization() + + default: + self.locationPublisher.onError(LocationError.unknown) + } + } + + func locationManager( + _ manager: CLLocationManager, + didUpdateLocations locations: [CLLocation] + ) { + self.manager.stopUpdatingLocation() + + guard let lastLocation = locations.last else { return } + + self.locationPublisher.onNext(lastLocation) + self.locationPublisher.onCompleted() + } + + func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { + if let error = error as? CLError { + switch error.code { + case .denied: + self.locationPublisher.onError(LocationError.denied) + + case .locationUnknown: + self.locationPublisher.onError(LocationError.unknownLocation) + + default: + self.locationPublisher.onError(LocationError.unknown) + } + } else { + self.locationPublisher.onError(LocationError.unknown) + } + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index a8d0a15..943644e 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -3,6 +3,8 @@ "error_time_out" = "알 수 없는 에러입니다.\n잠시후 다시 시도해주세요."; "error_fail_decode" = "알 수 없는 형태의 데이터입니다."; "error_nil_value" = "값이 없습니다."; + +// HTTP Error "http_error_bad_request" = "요청에 오류가 있습니다.\n다시 확인해주세요."; "http_error_unauthorized" = "세션이 만료되었습니다.\n다시 로그인해주세요."; "http_error_forbidden" = "탈퇴한 사용자입니다."; @@ -13,12 +15,19 @@ "http_error_maintenance" = "서버 점검중입니다.\n잠시 후 다시 시도해주세요."; "http_error_timeout" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; -// authorization +// Authorization "authorization_denied_title" = "권한 거절"; "authorization_denied_description" = "사진을 첨부하기 위해 권한이 필요합니다.\n설정에서 해당 권한을 허용해주세요."; "authorization_setting" = "설정"; -// signup +// Location +"location_deny_description" = "현재 내 위치를 찾기 위해 위치 권한이 필요합니다.\n설정에서 위치 권한을 허용시켜주세요."; +"location_unknown" = "현재 위치가 확인되지 않습니다.\n잠시 후 다시 시도해주세요."; +"location_disable_service" = "위치 서비스가 비활성화되어있습니다.\n서비스를 활성화시켜주세요."; + + + +// Signup "signup_title" = "회원가입"; "signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; "signup_owner_name" = "사장님 성함"; @@ -39,7 +48,7 @@ "signup_upload_photo" = "이미지 업로드"; "signup_button" = "회원 가입"; -// home +// Home "home_off_title" = "이 위치에서 영업을 시작할까요?"; "home_off_description" = "영업을 시작하면 손님들에게 노출이 시작됩니다!"; "home_off_toggle" = "영업 시작하기"; @@ -47,7 +56,7 @@ "home_on_description" = "동안 영업 중입니다."; "home_on_toggle" = "영업 종료하기!"; -// waiting +// Waiting "waiting_title" = "승인 대기 중입니다."; "waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; "waiting_question_button" = "이메일로 문의하기"; From 5180b410e72a790b8d4282c90f70df90f5b29efc Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 4 Apr 2022 22:43:52 +0900 Subject: [PATCH 042/166] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20status=20bar=20=EC=83=89?= =?UTF-8?q?=EC=83=81=20=EB=B3=80=EA=B2=BD,=20=EC=82=AC=EC=97=85=EC=9E=90?= =?UTF-8?q?=20=EB=B2=88=ED=98=B8=20=ED=8C=A8=ED=84=B4=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20=EB=B0=8F=20HomeReactor=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/home/HomeReactor.swift | 29 ++++++++++++++++++- .../domains/home/HomeViewController.swift | 2 +- .../membership/signup/SignupView.swift | 2 +- .../signup/SignupViewController.swift | 4 +++ 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index a108ab0..b69dd96 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -1,24 +1,39 @@ +import CoreLocation + import ReactorKit import RxSwift import RxCocoa -final class HomeReactor: Reactor { +final class HomeReactor: BaseReactor, Reactor { enum Action { + case viewDidLoad case tapSalesToggle } enum Mutation { + case setCameraPosition(CLLocation) case toggleSalesStatus + case showErrorAlert(Error) } struct State { var isOnSales = false + var isShowOtherStore = true + var cameraPosition: CLLocation? } let initialState = State() + private let locationManager: LocationManagerProtocol + + init(locationManager: LocationManagerProtocol) { + self.locationManager = locationManager + } func mutate(action: Action) -> Observable { switch action { + case .viewDidLoad: + return self.fetchCurrentLocation() + case .tapSalesToggle: return .just(.toggleSalesStatus) } @@ -28,10 +43,22 @@ final class HomeReactor: Reactor { var newState = state switch mutation { + case .setCameraPosition(let location): + newState.cameraPosition = location + case .toggleSalesStatus: newState.isOnSales.toggle() + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) } return newState } + + private func fetchCurrentLocation() -> Observable { + return self.locationManager.getCurrentLocation() + .map { .setCameraPosition($0) } + .catch { .just(.showErrorAlert($0)) } + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 0ef39fd..a7d6a24 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -4,7 +4,7 @@ import ReactorKit final class HomeViewController: BaseViewController, View { private let homeView = HomeView() - private let homeReactor = HomeReactor() + private let homeReactor = HomeReactor(locationManager: LocationManager.shared) override var preferredStatusBarStyle: UIStatusBarStyle { return .darkContent diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index 53c33ba..90e7d1f 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -57,7 +57,7 @@ final class SignupView: BaseView { placeholder: "signup_registeration_number_placeholder".localized ).then { $0.keyboardType = .numberPad - $0.format = "XXX-XX-XXXX" + $0.format = "XXX-XX-XXXXX" } let phoneNumberField = SignupInputField( diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 67f6f18..1009996 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -12,6 +12,10 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { private let signupReactor: SignupReactor private weak var coordinator: SignupCoordinator? + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + init(socialType: SocialType, token: String) { self.signupReactor = SignupReactor( socialType: socialType, From 709670f57f4edbbe7b635720e9c549be8939120e Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Wed, 6 Apr 2022 22:46:59 +0900 Subject: [PATCH 043/166] =?UTF-8?q?wip:=20=EA=B0=80=EA=B2=8C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=20API=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 84 +++++++++++++++++-- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../SceneDelegate.swift | 3 +- .../domains/home/HomeReactor.swift | 30 ++++++- .../domains/splash/SplashCoordinator.swift | 2 +- .../BossStoreAppearanceDayResponse.swift | 38 +++++++++ .../dto/response/BossStoreInfoResponse.swift | 67 +++++++++++++++ ...oreMenuResponseBossStoreMenuResponse.swift | 34 ++++++++ ...sResponseBossStoreOpenStatusResponse.swift | 24 ++++++ .../models/dto/response/DayOfTheWeek.swift | 9 ++ .../models/dto/response/LocalTimeRes.swift | 34 ++++++++ .../dto/response/LocationResponse.swift | 24 ++++++ .../models/dto/response/OpenStatus.swift | 4 + .../models/dto/response/TimeInterval.swift | 30 +++++++ .../models/dto/response/map/Addition.swift | 14 ++++ .../models/dto/response/map/Area.swift | 18 ++++ .../models/dto/response/map/Land.swift | 23 +++++ .../dto/response/map/NaverMapResponse.swift | 57 +++++++++++++ .../models/dto/response/map/Region.swift | 33 ++++++++ .../dto/response/map/ReverseGeoLocation.swift | 20 +++++ .../strings/en.lproj/Localizations.strings | 1 + .../services/MapService.swift | 43 ++++++++++ 22 files changed, 583 insertions(+), 11 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreAppearanceDayResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponseBossStoreMenuResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/LocationResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/OpenStatus.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/map/Addition.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/map/Area.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/map/Land.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/map/NaverMapResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/map/Region.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/map/ReverseGeoLocation.swift create mode 100644 3dollar-in-my-pocket-manager/services/MapService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index e448fc7..7ff2204 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -41,6 +41,24 @@ 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */; }; 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; + 6E5DCE5927FDABB200CA58EE /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; + 6E5DCE5A27FDABB300CA58EE /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; + 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; + 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */; }; + 6E5DCE6327FDB04600CA58EE /* Region.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6227FDB04600CA58EE /* Region.swift */; }; + 6E5DCE6527FDB06600CA58EE /* Area.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6427FDB06600CA58EE /* Area.swift */; }; + 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6627FDB09400CA58EE /* Land.swift */; }; + 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6827FDB0B900CA58EE /* Addition.swift */; }; + 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6B27FDC91100CA58EE /* BossStoreInfoResponse.swift */; }; + 6E5DCE6E27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6D27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift */; }; + 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6F27FDC97200CA58EE /* DayOfTheWeek.swift */; }; + 6E5DCE7227FDCA3100CA58EE /* TimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7127FDCA3100CA58EE /* TimeInterval.swift */; }; + 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7327FDCA4A00CA58EE /* LocalTimeRes.swift */; }; + 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7527FDCCED00CA58EE /* LocationResponse.swift */; }; + 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift */; }; + 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift */; }; + 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; @@ -99,8 +117,6 @@ 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */; }; 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */; }; 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676BC27EEE57A00D43E99 /* HomeView.swift */; }; - 6EFA3A0F27F3E1E000C13906 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; platformFilter = ios; }; - 6EFA3A1027F3E1E000C13906 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */; }; /* End PBXBuildFile section */ @@ -115,13 +131,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EFA3A1127F3E1E000C13906 /* Embed Frameworks */ = { + 6E5DCE5B27FDABB300CA58EE /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EFA3A1027F3E1E000C13906 /* Base.framework in Embed Frameworks */, + 6E5DCE5A27FDABB300CA58EE /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -167,6 +183,22 @@ 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftAlignedCollectionViewFlowLayout.swift; sourceTree = ""; }; 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; + 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapService.swift; sourceTree = ""; }; + 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaverMapResponse.swift; sourceTree = ""; }; + 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReverseGeoLocation.swift; sourceTree = ""; }; + 6E5DCE6227FDB04600CA58EE /* Region.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Region.swift; sourceTree = ""; }; + 6E5DCE6427FDB06600CA58EE /* Area.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Area.swift; sourceTree = ""; }; + 6E5DCE6627FDB09400CA58EE /* Land.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Land.swift; sourceTree = ""; }; + 6E5DCE6827FDB0B900CA58EE /* Addition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Addition.swift; sourceTree = ""; }; + 6E5DCE6B27FDC91100CA58EE /* BossStoreInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreInfoResponse.swift; sourceTree = ""; }; + 6E5DCE6D27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreAppearanceDayResponse.swift; sourceTree = ""; }; + 6E5DCE6F27FDC97200CA58EE /* DayOfTheWeek.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DayOfTheWeek.swift; sourceTree = ""; }; + 6E5DCE7127FDCA3100CA58EE /* TimeInterval.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeInterval.swift; sourceTree = ""; }; + 6E5DCE7327FDCA4A00CA58EE /* LocalTimeRes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalTimeRes.swift; sourceTree = ""; }; + 6E5DCE7527FDCCED00CA58EE /* LocationResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationResponse.swift; sourceTree = ""; }; + 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreMenuResponseBossStoreMenuResponse.swift; sourceTree = ""; }; + 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift; sourceTree = ""; }; + 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenStatus.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; @@ -225,7 +257,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6EFA3A0F27F3E1E000C13906 /* Base.framework in Frameworks */, + 6E5DCE5927FDABB200CA58EE /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -302,6 +334,7 @@ 6E1F54A527CB7A130050BBBA /* AuthService.swift */, 6E7A49D927D8CE1800E6653C /* ImageService.swift */, 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */, + 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */, ); path = services; sourceTree = ""; @@ -309,11 +342,21 @@ 6E1F54A727CB7C350050BBBA /* response */ = { isa = PBXGroup; children = ( + 6E5DCE6A27FDB0E100CA58EE /* map */, 6E1F54A227CB79120050BBBA /* LoginResponse.swift */, 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */, 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */, 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */, 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */, + 6E5DCE6B27FDC91100CA58EE /* BossStoreInfoResponse.swift */, + 6E5DCE6D27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift */, + 6E5DCE6F27FDC97200CA58EE /* DayOfTheWeek.swift */, + 6E5DCE7127FDCA3100CA58EE /* TimeInterval.swift */, + 6E5DCE7327FDCA4A00CA58EE /* LocalTimeRes.swift */, + 6E5DCE7527FDCCED00CA58EE /* LocationResponse.swift */, + 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift */, + 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift */, + 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */, ); path = response; sourceTree = ""; @@ -363,6 +406,19 @@ path = shared; sourceTree = ""; }; + 6E5DCE6A27FDB0E100CA58EE /* map */ = { + isa = PBXGroup; + children = ( + 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */, + 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */, + 6E5DCE6227FDB04600CA58EE /* Region.swift */, + 6E5DCE6427FDB06600CA58EE /* Area.swift */, + 6E5DCE6627FDB09400CA58EE /* Land.swift */, + 6E5DCE6827FDB0B900CA58EE /* Addition.swift */, + ); + path = map; + sourceTree = ""; + }; 6E64B28127D836620055354B /* subviews */ = { isa = PBXGroup; children = ( @@ -627,7 +683,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6EFA3A1127F3E1E000C13906 /* Embed Frameworks */, + 6E5DCE5B27FDABB300CA58EE /* Embed Frameworks */, ); buildRules = ( ); @@ -778,9 +834,12 @@ buildActionMask = 2147483647; files = ( 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, + 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, + 6E5DCE7227FDCA3100CA58EE /* TimeInterval.swift in Sources */, + 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */, 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, @@ -790,10 +849,12 @@ 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, + 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */, 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, + 6E5DCE6327FDB04600CA58EE /* Region.swift in Sources */, 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */, @@ -802,33 +863,43 @@ 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, + 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, + 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, + 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, + 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, + 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */, 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, + 6E5DCE6527FDB06600CA58EE /* Area.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */, 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, + 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, + 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, + 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, + 6E5DCE6E27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift in Sources */, 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, @@ -838,6 +909,7 @@ 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, + 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */, 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index b0b8225..c6e1ad8 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -50,7 +50,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", + "revision" : "14299050782ac18a40edac8e7369425c13998b68", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index 483cc43..88ce9de 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -66,7 +66,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } func goToMain() { - + self.window?.rootViewController = MainTabController.instance() + self.window?.makeKeyAndVisible() } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index b69dd96..367cc14 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -11,21 +11,28 @@ final class HomeReactor: BaseReactor, Reactor { } enum Mutation { + case setAddress(String) case setCameraPosition(CLLocation) case toggleSalesStatus case showErrorAlert(Error) } struct State { + var address = "" var isOnSales = false var isShowOtherStore = true var cameraPosition: CLLocation? } let initialState = State() + private let mapService: MapServiceProtocol private let locationManager: LocationManagerProtocol - init(locationManager: LocationManagerProtocol) { + init( + mapService: MapServiceProtocol, + locationManager: LocationManagerProtocol + ) { + self.mapService = mapService self.locationManager = locationManager } @@ -43,6 +50,9 @@ final class HomeReactor: BaseReactor, Reactor { var newState = state switch mutation { + case .setAddress(let address): + newState.address = address + case .setCameraPosition(let location): newState.cameraPosition = location @@ -58,7 +68,23 @@ final class HomeReactor: BaseReactor, Reactor { private func fetchCurrentLocation() -> Observable { return self.locationManager.getCurrentLocation() - .map { .setCameraPosition($0) } + .flatMap{ [weak self] currentLocation -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + + return .merge([ + .just(.setCameraPosition(currentLocation)), + self.searchAddress(location: currentLocation) + ]) + } .catch { .just(.showErrorAlert($0)) } } + + private func searchAddress(location: CLLocation) -> Observable { + return self.mapService.searchAddress( + latitude: location.coordinate.latitude, + longitude: location.coordinate.longitude + ) + .map { .setAddress($0) } + .catch { .just(.showErrorAlert($0)) } + } } diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift index 2846fb3..20fb190 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashCoordinator.swift @@ -28,7 +28,7 @@ extension SplashCoordinator { return } - sceneDelegate.goToWaiting() + sceneDelegate.goToMain() } func goToWaiting() { diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreAppearanceDayResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreAppearanceDayResponse.swift new file mode 100644 index 0000000..9890243 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreAppearanceDayResponse.swift @@ -0,0 +1,38 @@ +struct BossStoreAppearanceDayResponse: Decodable { + let dayOfTheWeek: DayOfTheWeek + let locationDescription: String + let openingHours: TimeInterval + + enum CodingKeys: String, CodingKey { + case dayOfTheWeek + case locationDescription + case openingHours + } + + init( + dayOfTheWeek: DayOfTheWeek = .sunday, + locationDescription: String = "", + openingHours: TimeInterval = TimeInterval() + ) { + self.dayOfTheWeek = dayOfTheWeek + self.locationDescription = locationDescription + self.openingHours = openingHours + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.dayOfTheWeek = try values.decodeIfPresent( + DayOfTheWeek.self, + forKey: .dayOfTheWeek + ) ?? .sunday + self.locationDescription = try values.decodeIfPresent( + String.self, + forKey: .locationDescription + ) ?? "" + self.openingHours = try values.decodeIfPresent( + TimeInterval.self, + forKey: .openingHours + ) ?? TimeInterval() + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift new file mode 100644 index 0000000..cbddb5a --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift @@ -0,0 +1,67 @@ +struct BossStoreInfoResponse: Decodable { + let appearanceDays: BossStoreAppearanceDayResponse + let bossStoreId: String + let categories: [StoreCategoryResponse] + let contactsNumber: String + let createdAt: String + let distance: Int + let imageUrl: String + let introduction: String + let location: LocationResponse + let menus: [BossStoreMenuResponse] + let name: String + let openStatus: BossStoreOpenStatusResponse + let snsUrl: String + let updatedAt: String + + enum CodingKeys: String, CodingKey { + case appearanceDays + case bossStoreId + case categories + case contactsNumber + case createdAt + case distance + case imageUrl + case introduction + case location + case menus + case name + case openStatus + case snsUrl + case updatedAt + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.appearanceDays = try values.decodeIfPresent( + BossStoreAppearanceDayResponse.self, + forKey: .appearanceDays + ) ?? BossStoreAppearanceDayResponse() + self.bossStoreId = try values.decodeIfPresent(String.self, forKey: .bossStoreId) ?? "" + self.categories = try values.decodeIfPresent( + [StoreCategoryResponse].self, + forKey: .categories + ) ?? [] + self.contactsNumber = try values.decodeIfPresent( + String.self, + forKey: .contactsNumber + ) ?? "" + self.createdAt = try values.decodeIfPresent(String.self, forKey: .createdAt) ?? "" + self.distance = try values.decodeIfPresent(Int.self, forKey: .distance) ?? 0 + self.imageUrl = try values.decodeIfPresent(String.self, forKey: .imageUrl) ?? "" + self.introduction = try values.decodeIfPresent(String.self, forKey: .introduction) ?? "" + self.location = try values.decodeIfPresent( + LocationResponse.self, + forKey: .location + ) ?? LocationResponse() + self.menus = try values.decodeIfPresent([BossStoreMenuResponse].self, forKey: .menus) ?? [] + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + self.openStatus = try values.decodeIfPresent( + BossStoreOpenStatusResponse.self, + forKey: .openStatus + ) ?? BossStoreOpenStatusResponse() + self.snsUrl = try values.decodeIfPresent(String.self, forKey: .snsUrl) ?? "" + self.updatedAt = try values.decodeIfPresent(String.self, forKey: .updatedAt) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponseBossStoreMenuResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponseBossStoreMenuResponse.swift new file mode 100644 index 0000000..f97db0f --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponseBossStoreMenuResponse.swift @@ -0,0 +1,34 @@ +struct BossStoreMenuResponse: Decodable { + let groupName: String + let imageUrl: String + let name: String + let price: Int + + enum CodingKeys: String, CodingKey { + case groupName + case imageUrl + case name + case price + } + + init( + groupName: String = "", + imageUrl: String = "", + name: String = "", + price: Int = 0 + ) { + self.groupName = groupName + self.imageUrl = imageUrl + self.name = name + self.price = price + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.groupName = try values.decodeIfPresent(String.self, forKey: .groupName) ?? "" + self.imageUrl = try values.decodeIfPresent(String.self, forKey: .imageUrl) ?? "" + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + self.price = try values.decodeIfPresent(Int.self, forKey: .price) ?? 0 + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift new file mode 100644 index 0000000..b989e0c --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift @@ -0,0 +1,24 @@ +struct BossStoreOpenStatusResponse: Decodable { + let openStartDateTime: String + let status: OpenStatus + + enum CodingKeys: String, CodingKey { + case openStartDateTime + case status + } + + init( + openStartDateTime: String = "", + status: OpenStatus = .closed + ) { + self.openStartDateTime = openStartDateTime + self.status = status + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.openStartDateTime = try values.decodeIfPresent(String.self, forKey: .openStartDateTime) ?? "" + self.status = try values.decodeIfPresent(OpenStatus.self, forKey: .status) ?? .closed + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift b/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift new file mode 100644 index 0000000..05ad0a8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift @@ -0,0 +1,9 @@ +enum DayOfTheWeek: String, Decodable { + case monday = "MONDAY" + case tuesday = "TUESDAY" + case wednesday = "WEDNESDAY" + case thursday = "THURSDAY" + case friday = "FRIDAY" + case saturday = "SATURDAY" + case sunday = "SUNDAY" +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift b/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift new file mode 100644 index 0000000..0ed087b --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift @@ -0,0 +1,34 @@ +struct LocalTimeRes: Decodable { + let hour: Int + let minute: Int + let nano: Int + let second: Int + + enum CodingKeys: String, CodingKey { + case hour + case minute + case nano + case second + } + + init( + hour: Int = 0, + minute: Int = 0, + nano: Int = 0, + second: Int = 0 + ) { + self.hour = hour + self.minute = minute + self.nano = nano + self.second = second + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.hour = try values.decodeIfPresent(Int.self, forKey: .hour) ?? 0 + self.minute = try values.decodeIfPresent(Int.self, forKey: .minute) ?? 0 + self.nano = try values.decodeIfPresent(Int.self, forKey: .nano) ?? 0 + self.second = try values.decodeIfPresent(Int.self, forKey: .second) ?? 0 + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/LocationResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/LocationResponse.swift new file mode 100644 index 0000000..ef77a5b --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/LocationResponse.swift @@ -0,0 +1,24 @@ +struct LocationResponse: Decodable { + let latitude: Double + let longitude: Double + + enum CodingKeys: String, CodingKey { + case latitude + case longitude + } + + init( + latitude: Double = 0, + longitude: Double = 0 + ) { + self.latitude = latitude + self.longitude = longitude + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.latitude = try values.decodeIfPresent(Double.self, forKey: .latitude) ?? 0 + self.longitude = try values.decodeIfPresent(Double.self, forKey: .longitude) ?? 0 + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/OpenStatus.swift b/3dollar-in-my-pocket-manager/models/dto/response/OpenStatus.swift new file mode 100644 index 0000000..b0792f7 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/OpenStatus.swift @@ -0,0 +1,4 @@ +enum OpenStatus: String, Decodable { + case closed = "CLOSED" + case open = "OPEN" +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift new file mode 100644 index 0000000..d250f56 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift @@ -0,0 +1,30 @@ +struct TimeInterval: Decodable { + let endTime: LocalTimeRes + let startTime: LocalTimeRes + + enum CodingKeys: String, CodingKey { + case endTime + case startTime + } + + init( + endTime: LocalTimeRes = LocalTimeRes(), + startTime: LocalTimeRes = LocalTimeRes() + ) { + self.endTime = endTime + self.startTime = startTime + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.endTime = try values.decodeIfPresent( + LocalTimeRes.self, + forKey: .endTime + ) ?? LocalTimeRes() + self.startTime = try values.decodeIfPresent( + LocalTimeRes.self, + forKey: .startTime + ) ?? LocalTimeRes() + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/map/Addition.swift b/3dollar-in-my-pocket-manager/models/dto/response/map/Addition.swift new file mode 100644 index 0000000..bc3e91d --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/map/Addition.swift @@ -0,0 +1,14 @@ +struct Addition: Decodable { + let value: String + + enum CodingKeys: String, CodingKey { + case value + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.value = try values.decodeIfPresent(String.self, forKey: .value) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/map/Area.swift b/3dollar-in-my-pocket-manager/models/dto/response/map/Area.swift new file mode 100644 index 0000000..59680c6 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/map/Area.swift @@ -0,0 +1,18 @@ +struct Area: Decodable { + let name: String + + enum CodingKeys: String, CodingKey { + case name + } + + + init() { + self.name = "" + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/map/Land.swift b/3dollar-in-my-pocket-manager/models/dto/response/map/Land.swift new file mode 100644 index 0000000..1d0afe7 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/map/Land.swift @@ -0,0 +1,23 @@ +struct Land: Decodable { + let number1: String + let number2: String + let name: String? + let addition0: Addition? + + enum CodingKeys: String, CodingKey { + case number1 + case number2 + case name + case addition0 + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.number1 = try values.decodeIfPresent(String.self, forKey: .number1) ?? "" + self.number2 = try values.decodeIfPresent(String.self, forKey: .number2) ?? "" + self.name = try values.decodeIfPresent(String.self, forKey: .name) + self.addition0 = try values.decodeIfPresent(Addition.self, forKey: .addition0) + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/map/NaverMapResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/map/NaverMapResponse.swift new file mode 100644 index 0000000..46f0534 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/map/NaverMapResponse.swift @@ -0,0 +1,57 @@ +struct NaverMapResponse: Decodable { + let results: [ReverseGeoLocation] + + enum CodingKeys: String, CodingKey { + case results + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.results = try values.decodeIfPresent( + [ReverseGeoLocation].self, + forKey: .results + ) ?? [] + } + + func getAddress() -> String { + if !results.isEmpty { + var address = "" + + if results.count == 4 { + address = "\(results[0].region.area1.name) \(results[0].region.area2.name)" + if let name = results[3].land?.name { + address = "\(address) \(name)" + } + + if let roadNumber1 = results[3].land?.number1 { + address = "\(address) \(roadNumber1)" + + if let roadNumber2 = results[3].land?.number2 { + if !roadNumber2.isEmpty { + address = "\(address)-\(roadNumber2)" + } + } + } + } else { + address = "\(results[0].region.area1.name) \(results[0].region.area2.name) \(results[0].region.area3.name)" + + if results.count > 2 { + if let jibun1 = results[2].land?.number1 { + address = "\(address) \(jibun1)" + + if let jibun2 = results[2].land?.number2, + !jibun2.isEmpty { + address = "\(address)-\(jibun2)" + } + } + } + } + + return address + } else { + return "location_address_unknown".localized + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/map/Region.swift b/3dollar-in-my-pocket-manager/models/dto/response/map/Region.swift new file mode 100644 index 0000000..c9dd354 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/map/Region.swift @@ -0,0 +1,33 @@ +struct Region: Decodable { + let area0: Area + let area1: Area + let area2: Area + let area3: Area + let area4: Area + + enum CodingKeys: String, CodingKey { + case area0 + case area1 + case area2 + case area3 + case area4 + } + + init() { + self.area0 = Area() + self.area1 = Area() + self.area2 = Area() + self.area3 = Area() + self.area4 = Area() + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.area0 = try values.decodeIfPresent(Area.self, forKey: .area0) ?? Area() + self.area1 = try values.decodeIfPresent(Area.self, forKey: .area1) ?? Area() + self.area2 = try values.decodeIfPresent(Area.self, forKey: .area2) ?? Area() + self.area3 = try values.decodeIfPresent(Area.self, forKey: .area3) ?? Area() + self.area4 = try values.decodeIfPresent(Area.self, forKey: .area4) ?? Area() + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/map/ReverseGeoLocation.swift b/3dollar-in-my-pocket-manager/models/dto/response/map/ReverseGeoLocation.swift new file mode 100644 index 0000000..657982d --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/map/ReverseGeoLocation.swift @@ -0,0 +1,20 @@ +struct ReverseGeoLocation: Decodable { + let name: String + let region: Region + let land: Land? + + enum CodingKeys: String, CodingKey { + case name + case region + case land + } + + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + self.region = try values.decodeIfPresent(Region.self, forKey: .region) ?? Region() + self.land = try values.decodeIfPresent(Land.self, forKey: .land) + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 943644e..ee6a1df 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -24,6 +24,7 @@ "location_deny_description" = "현재 내 위치를 찾기 위해 위치 권한이 필요합니다.\n설정에서 위치 권한을 허용시켜주세요."; "location_unknown" = "현재 위치가 확인되지 않습니다.\n잠시 후 다시 시도해주세요."; "location_disable_service" = "위치 서비스가 비활성화되어있습니다.\n서비스를 활성화시켜주세요."; +"location_address_unknown" = "주소를 알 수 없는 위치입니다."; diff --git a/3dollar-in-my-pocket-manager/services/MapService.swift b/3dollar-in-my-pocket-manager/services/MapService.swift new file mode 100644 index 0000000..a661159 --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/MapService.swift @@ -0,0 +1,43 @@ +import RxSwift +import Alamofire + +protocol MapServiceProtocol { + func searchAddress(latitude: Double, longitude: Double) -> Observable +} + +struct MapService: MapServiceProtocol { + func searchAddress(latitude: Double, longitude: Double) -> Observable { + return .create { observer in + let urlString = "https://naveropenapi.apigw.ntruss.com/map-reversegeocode/v2/gc" + let headers: HTTPHeaders = [ + "X-NCP-APIGW-API-KEY-ID": "hqqqtcv85g", + "X-NCP-APIGW-API-KEY": "Nk7L8VvCq9YkDuGPjvGDN8FW5ELfWTt23AgcS9ie" + ] as HTTPHeaders + let parameters: [String: Any] = [ + "request": "coordsToaddr", + "coords": "\(longitude),\(latitude)", + "orders": "legalcode,admcode,addr,roadaddr", + "output": "json" + ] + + AF.request( + urlString, + method: .get, + parameters: parameters, + headers: headers + ).responseDecodable(of: NaverMapResponse.self) { response in + if response.isSuccess() { + if let address = response.value { + observer.onNext(address.getAddress()) + } else { + observer.onError(BaseError.nilValue) + } + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } +} From 4f8aaa2c3414211c0d1d9f729ab6aaac08764531 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Fri, 8 Apr 2022 18:57:26 +0900 Subject: [PATCH 044/166] =?UTF-8?q?wip:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=A6=AC=EC=95=A1=ED=84=B0=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 40 ++++++++++++------- .../xcshareddata/swiftpm/Package.resolved | 2 +- 3dollar-in-my-pocket-manager/Info.plist | 6 +++ .../domains/home/HomeCoordinator.swift | 3 ++ .../domains/home/HomeReactor.swift | 33 +++++++++++++-- .../domains/home/HomeViewController.swift | 33 ++++++++++++--- .../domains/home/subviews/AddressView.swift | 14 ++++++- .../dto/response/BossStoreInfoResponse.swift | 32 +++++++-------- ...onse.swift => BossStoreMenuResponse.swift} | 0 ...wift => BossStoreOpenStatusResponse.swift} | 4 +- .../models/presentation/Store.swift | 25 ++++++++++++ .../services/StoreService.swift | 29 ++++++++++++++ 12 files changed, 178 insertions(+), 43 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift rename 3dollar-in-my-pocket-manager/models/dto/response/{BossStoreMenuResponseBossStoreMenuResponse.swift => BossStoreMenuResponse.swift} (100%) rename 3dollar-in-my-pocket-manager/models/dto/response/{BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift => BossStoreOpenStatusResponse.swift} (89%) create mode 100644 3dollar-in-my-pocket-manager/models/presentation/Store.swift create mode 100644 3dollar-in-my-pocket-manager/services/StoreService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 7ff2204..c607bfb 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -41,8 +41,6 @@ 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */; }; 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; - 6E5DCE5927FDABB200CA58EE /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; - 6E5DCE5A27FDABB300CA58EE /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */; }; @@ -56,8 +54,8 @@ 6E5DCE7227FDCA3100CA58EE /* TimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7127FDCA3100CA58EE /* TimeInterval.swift */; }; 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7327FDCA4A00CA58EE /* LocalTimeRes.swift */; }; 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7527FDCCED00CA58EE /* LocationResponse.swift */; }; - 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift */; }; - 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift */; }; + 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */; }; + 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */; }; 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; @@ -76,6 +74,11 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; + 6EBF1AE327FE650F0011268B /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; + 6EBF1AE427FE650F0011268B /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE627FE65950011268B /* StoreService.swift */; }; + 6EBF1AE927FE6A980011268B /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE827FE6A980011268B /* Store.swift */; }; + 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0527EEEC11009B5527 /* AddressView.swift */; }; 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; @@ -131,13 +134,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E5DCE5B27FDABB300CA58EE /* Embed Frameworks */ = { + 6EBF1AE527FE650F0011268B /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E5DCE5A27FDABB300CA58EE /* Base.framework in Embed Frameworks */, + 6EBF1AE427FE650F0011268B /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -196,8 +199,8 @@ 6E5DCE7127FDCA3100CA58EE /* TimeInterval.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeInterval.swift; sourceTree = ""; }; 6E5DCE7327FDCA4A00CA58EE /* LocalTimeRes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalTimeRes.swift; sourceTree = ""; }; 6E5DCE7527FDCCED00CA58EE /* LocationResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationResponse.swift; sourceTree = ""; }; - 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreMenuResponseBossStoreMenuResponse.swift; sourceTree = ""; }; - 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift; sourceTree = ""; }; + 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreMenuResponse.swift; sourceTree = ""; }; + 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponse.swift; sourceTree = ""; }; 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenStatus.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; @@ -217,6 +220,9 @@ 6EB94EAC27CB209000609E77 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6EB94EAF27CB209000609E77 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 6EB94EB127CB209000609E77 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6EBF1AE627FE65950011268B /* StoreService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreService.swift; sourceTree = ""; }; + 6EBF1AE827FE6A980011268B /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = ""; }; 6EC51D0527EEEC11009B5527 /* AddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressView.swift; sourceTree = ""; }; 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SalesToggleView.swift; sourceTree = ""; }; 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; @@ -257,7 +263,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E5DCE5927FDABB200CA58EE /* Base.framework in Frameworks */, + 6EBF1AE327FE650F0011268B /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -335,6 +341,7 @@ 6E7A49D927D8CE1800E6653C /* ImageService.swift */, 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */, 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */, + 6EBF1AE627FE65950011268B /* StoreService.swift */, ); path = services; sourceTree = ""; @@ -354,8 +361,8 @@ 6E5DCE7127FDCA3100CA58EE /* TimeInterval.swift */, 6E5DCE7327FDCA4A00CA58EE /* LocalTimeRes.swift */, 6E5DCE7527FDCCED00CA58EE /* LocationResponse.swift */, - 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift */, - 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift */, + 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */, + 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */, 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */, ); path = response; @@ -618,6 +625,7 @@ 6EE0CFB827CB5DF90027A426 /* SocialType.swift */, 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */, 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */, + 6EBF1AE827FE6A980011268B /* Store.swift */, ); path = presentation; sourceTree = ""; @@ -658,6 +666,7 @@ 6EF676BC27EEE57A00D43E99 /* HomeView.swift */, 6E81503527EEEA110032C518 /* HomeViewController.swift */, 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */, + 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */, ); path = home; sourceTree = ""; @@ -683,7 +692,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E5DCE5B27FDABB300CA58EE /* Embed Frameworks */, + 6EBF1AE527FE650F0011268B /* Embed Frameworks */, ); buildRules = ( ); @@ -867,7 +876,8 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, - 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift in Sources */, + 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, + 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, @@ -879,6 +889,7 @@ 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6E5DCE6527FDB06600CA58EE /* Area.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, + 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */, 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, @@ -886,7 +897,7 @@ 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, - 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponseBossStoreMenuResponse.swift in Sources */, + 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, @@ -906,6 +917,7 @@ 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, + 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index c6e1ad8..b0b8225 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -50,7 +50,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index c07c806..5314a5d 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,6 +2,12 @@ + NSLocationWhenInUseUsageDescription + 사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄 + NSLocationAlwaysUsageDescription + 사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄 + NSLocationAlwaysAndWhenInUseUsageDescription + 사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄 UIAppFonts AppleSDGothicNeoEB00.ttf diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift b/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift new file mode 100644 index 0000000..6727a56 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift @@ -0,0 +1,3 @@ +protocol HomeCoordinator: AnyObject, BaseCoordinator { + +} diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 367cc14..abedea7 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -12,6 +12,7 @@ final class HomeReactor: BaseReactor, Reactor { enum Mutation { case setAddress(String) + case setStore(Store) case setCameraPosition(CLLocation) case toggleSalesStatus case showErrorAlert(Error) @@ -19,27 +20,33 @@ final class HomeReactor: BaseReactor, Reactor { struct State { var address = "" - var isOnSales = false var isShowOtherStore = true var cameraPosition: CLLocation? + var store: Store? } let initialState = State() private let mapService: MapServiceProtocol + private let storeSerivce: StoreServiceProtocol private let locationManager: LocationManagerProtocol init( mapService: MapServiceProtocol, + storeService: StoreServiceProtocol, locationManager: LocationManagerProtocol ) { self.mapService = mapService + self.storeSerivce = storeService self.locationManager = locationManager } func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: - return self.fetchCurrentLocation() + return .merge([ + self.fetchCurrentLocation(), + self.fetchMyStoreInfo() + ]) case .tapSalesToggle: return .just(.toggleSalesStatus) @@ -53,11 +60,14 @@ final class HomeReactor: BaseReactor, Reactor { case .setAddress(let address): newState.address = address + case .setStore(let store): + newState.store = store + case .setCameraPosition(let location): newState.cameraPosition = location case .toggleSalesStatus: - newState.isOnSales.toggle() + newState.store?.isOpen.toggle() case .showErrorAlert(let error): self.showErrorAlert.accept(error) @@ -87,4 +97,21 @@ final class HomeReactor: BaseReactor, Reactor { .map { .setAddress($0) } .catch { .just(.showErrorAlert($0)) } } + + private func fetchMyStoreInfo() -> Observable { + return self.storeSerivce.fetchMyStore() + .map(Store.init(response:)) + .map { .setStore($0) } + .catch { .just(.showErrorAlert($0)) } + } } + +/// 1.내 가게 정보 조회 +/// 2. 오픈하지 않았다면 +/// 2-1. 가운데 마커 표시 +/// 2-2. 오픈전 상태 바인딩 +/// 3. 오픈한 상태라면 +/// 3-1. 내 가기 위치에 마커 표시 +/// 3-2. 내 위치와 주기적으로 비교해서 알럿 표시 여부 결정 +/// + diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index a7d6a24..7518816 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -2,9 +2,14 @@ import UIKit import ReactorKit -final class HomeViewController: BaseViewController, View { +final class HomeViewController: BaseViewController, View, HomeCoordinator { private let homeView = HomeView() - private let homeReactor = HomeReactor(locationManager: LocationManager.shared) + private let homeReactor = HomeReactor( + mapService: MapService(), + storeService: StoreService(), + locationManager: LocationManager.shared + ) + private weak var coordinator: HomeCoordinator? override var preferredStatusBarStyle: UIStatusBarStyle { return .darkContent @@ -23,12 +28,23 @@ final class HomeViewController: BaseViewController, View { override func loadView() { self.view = self.homeView - - self.reactor = self.homeReactor } override func viewDidLoad() { super.viewDidLoad() + + self.coordinator = self + self.reactor = self.homeReactor + self.homeReactor.action.onNext(.viewDidLoad) + } + + override func bindEvent() { + self.homeReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: HomeReactor) { @@ -40,7 +56,14 @@ final class HomeViewController: BaseViewController, View { // Bind state reactor.state - .map { $0.isOnSales } + .map { $0.address } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: "") + .drive(self.homeView.addressView.rx.address) + .disposed(by: self.disposeBag) + + reactor.state + .compactMap { $0.store?.isOpen } .distinctUntilChanged() .asDriver(onErrorJustReturn: false) .drive(self.homeView.salesToggleView.rx.isOn) diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift index fe362b9..77cefcc 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift @@ -1,5 +1,8 @@ import UIKit +import RxSwift +import RxCocoa + final class AddressView: BaseView { private let height:CGFloat = 56 @@ -11,10 +14,9 @@ final class AddressView: BaseView { $0.layer.shadowOpacity = 0.08 } - private let addressLabel = UILabel().then { + fileprivate let addressLabel = UILabel().then { $0.textColor = .black $0.font = .semiBold(size: 16) - $0.text = "서울특별시 사직동" $0.textAlignment = .center } @@ -42,3 +44,11 @@ final class AddressView: BaseView { } } } + +extension Reactive where Base: AddressView { + var address: Binder { + return Binder(self.base) { view, address in + view.addressLabel.text = address + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift index cbddb5a..640db88 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift @@ -1,18 +1,18 @@ struct BossStoreInfoResponse: Decodable { - let appearanceDays: BossStoreAppearanceDayResponse + let appearanceDays: [BossStoreAppearanceDayResponse] let bossStoreId: String let categories: [StoreCategoryResponse] - let contactsNumber: String - let createdAt: String + let contactsNumber: String? + let createdAt: String? let distance: Int - let imageUrl: String - let introduction: String - let location: LocationResponse + let imageUrl: String? + let introduction: String? + let location: LocationResponse? let menus: [BossStoreMenuResponse] let name: String let openStatus: BossStoreOpenStatusResponse - let snsUrl: String - let updatedAt: String + let snsUrl: String? + let updatedAt: String? enum CodingKeys: String, CodingKey { case appearanceDays @@ -35,9 +35,9 @@ struct BossStoreInfoResponse: Decodable { let values = try decoder.container(keyedBy: CodingKeys.self) self.appearanceDays = try values.decodeIfPresent( - BossStoreAppearanceDayResponse.self, + [BossStoreAppearanceDayResponse].self, forKey: .appearanceDays - ) ?? BossStoreAppearanceDayResponse() + ) ?? [] self.bossStoreId = try values.decodeIfPresent(String.self, forKey: .bossStoreId) ?? "" self.categories = try values.decodeIfPresent( [StoreCategoryResponse].self, @@ -46,11 +46,11 @@ struct BossStoreInfoResponse: Decodable { self.contactsNumber = try values.decodeIfPresent( String.self, forKey: .contactsNumber - ) ?? "" - self.createdAt = try values.decodeIfPresent(String.self, forKey: .createdAt) ?? "" + ) + self.createdAt = try values.decodeIfPresent(String.self, forKey: .createdAt) self.distance = try values.decodeIfPresent(Int.self, forKey: .distance) ?? 0 - self.imageUrl = try values.decodeIfPresent(String.self, forKey: .imageUrl) ?? "" - self.introduction = try values.decodeIfPresent(String.self, forKey: .introduction) ?? "" + self.imageUrl = try values.decodeIfPresent(String.self, forKey: .imageUrl) + self.introduction = try values.decodeIfPresent(String.self, forKey: .introduction) self.location = try values.decodeIfPresent( LocationResponse.self, forKey: .location @@ -61,7 +61,7 @@ struct BossStoreInfoResponse: Decodable { BossStoreOpenStatusResponse.self, forKey: .openStatus ) ?? BossStoreOpenStatusResponse() - self.snsUrl = try values.decodeIfPresent(String.self, forKey: .snsUrl) ?? "" - self.updatedAt = try values.decodeIfPresent(String.self, forKey: .updatedAt) ?? "" + self.snsUrl = try values.decodeIfPresent(String.self, forKey: .snsUrl) + self.updatedAt = try values.decodeIfPresent(String.self, forKey: .updatedAt) } } diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponseBossStoreMenuResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponse.swift similarity index 100% rename from 3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponseBossStoreMenuResponse.swift rename to 3dollar-in-my-pocket-manager/models/dto/response/BossStoreMenuResponse.swift diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponse.swift similarity index 89% rename from 3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift rename to 3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponse.swift index b989e0c..ec8e7a9 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponseBossStoreOpenStatusResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreOpenStatusResponse.swift @@ -1,5 +1,5 @@ struct BossStoreOpenStatusResponse: Decodable { - let openStartDateTime: String + let openStartDateTime: String? let status: OpenStatus enum CodingKeys: String, CodingKey { @@ -18,7 +18,7 @@ struct BossStoreOpenStatusResponse: Decodable { init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) - self.openStartDateTime = try values.decodeIfPresent(String.self, forKey: .openStartDateTime) ?? "" + self.openStartDateTime = try values.decodeIfPresent(String.self, forKey: .openStartDateTime) self.status = try values.decodeIfPresent(OpenStatus.self, forKey: .status) ?? .closed } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift new file mode 100644 index 0000000..31e0d13 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -0,0 +1,25 @@ +import CoreLocation +import Base + +struct Store: Equatable { + let id: String + let location: CLLocation? + var isOpen: Bool + let openTime: Date? + + init(response: BossStoreInfoResponse) { + self.id = response.bossStoreId + if let location = response.location { + self.location = CLLocation(latitude: location.latitude, longitude: location.longitude) + } else { + self.location = nil + } + self.isOpen = response.openStatus.status == .open + + if let openStartDateTime = response.openStatus.openStartDateTime { + self.openTime = DateUtils.toDate(dateString: openStartDateTime) + } else { + self.openTime = nil + } + } +} diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift new file mode 100644 index 0000000..528e1dd --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -0,0 +1,29 @@ +import RxSwift +import Alamofire + +protocol StoreServiceProtocol { + func fetchMyStore() -> Observable +} + +struct StoreService: StoreServiceProtocol { + func fetchMyStore() -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store" + let headers = HTTPUtils.defaultHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } +} From ee816981addcd3870cb6a96e8d8215cf5b533772 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Fri, 8 Apr 2022 22:13:17 +0900 Subject: [PATCH 045/166] =?UTF-8?q?feat:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=B0=94=EC=9D=B8=EB=94=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 ++-- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../domains/home/HomeReactor.swift | 10 --- .../domains/home/HomeView.swift | 61 ++++++++++++++++++- .../domains/home/HomeViewController.swift | 18 ++++++ .../models/presentation/Store.swift | 12 ++++ 6 files changed, 95 insertions(+), 20 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index c607bfb..8310377 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -21,6 +21,8 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; + 6E2073612800626B002D03C8 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; + 6E2073622800626B002D03C8 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; @@ -74,8 +76,6 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; - 6EBF1AE327FE650F0011268B /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; - 6EBF1AE427FE650F0011268B /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE627FE65950011268B /* StoreService.swift */; }; 6EBF1AE927FE6A980011268B /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE827FE6A980011268B /* Store.swift */; }; 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; @@ -134,13 +134,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EBF1AE527FE650F0011268B /* Embed Frameworks */ = { + 6E2073632800626B002D03C8 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EBF1AE427FE650F0011268B /* Base.framework in Embed Frameworks */, + 6E2073622800626B002D03C8 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -263,7 +263,7 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6EBF1AE327FE650F0011268B /* Base.framework in Frameworks */, + 6E2073612800626B002D03C8 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -692,7 +692,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6EBF1AE527FE650F0011268B /* Embed Frameworks */, + 6E2073632800626B002D03C8 /* Embed Frameworks */, ); buildRules = ( ); diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index b0b8225..c6e1ad8 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -50,7 +50,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", + "revision" : "14299050782ac18a40edac8e7369425c13998b68", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index abedea7..1d2f499 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -105,13 +105,3 @@ final class HomeReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert($0)) } } } - -/// 1.내 가게 정보 조회 -/// 2. 오픈하지 않았다면 -/// 2-1. 가운데 마커 표시 -/// 2-2. 오픈전 상태 바인딩 -/// 3. 오픈한 상태라면 -/// 3-1. 내 가기 위치에 마커 표시 -/// 3-2. 내 위치와 주기적으로 비교해서 알럿 표시 여부 결정 -/// - diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index cd738dd..265ceb5 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -1,6 +1,8 @@ import UIKit import NMapsMap +import RxSwift +import RxCocoa final class HomeView: BaseView { let mapView = NMFMapView().then { @@ -8,7 +10,7 @@ final class HomeView: BaseView { $0.zoomLevel = 17 } - let marker = UIImageView().then { + let centerMarker = UIImageView().then { $0.image = UIImage(named: "ic_marker_active") } @@ -25,7 +27,7 @@ final class HomeView: BaseView { override func setup() { self.addSubViews([ self.mapView, - self.marker, + self.centerMarker, self.addressView, self.showOtherButton, self.salesToggleView, @@ -41,7 +43,7 @@ final class HomeView: BaseView { make.bottom.equalTo(self.salesToggleView.snp.top).offset(20) } - self.marker.snp.makeConstraints { make in + self.centerMarker.snp.makeConstraints { make in make.center.equalTo(self.mapView) make.width.equalTo(30) make.height.equalTo(40) @@ -71,6 +73,45 @@ final class HomeView: BaseView { } } + fileprivate func moveCameraPosition(position: CLLocation) { + let cameraPosition = NMFCameraPosition( + NMGLatLng( + lat: position.coordinate.latitude, + lng: position.coordinate.longitude + ), + zoom: self.mapView.zoomLevel + ) + let cameraUpdate = NMFCameraUpdate(position: cameraPosition) + + cameraUpdate.animation = .easeIn + self.mapView.moveCamera(cameraUpdate) + } + + fileprivate func bind(store: Store) { + self.centerMarker.isHidden = store.isOpen + if store.isOpen { + if let location = store.location { + let position = NMGLatLng( + lat: location.coordinate.latitude, + lng: location.coordinate.longitude + ) + let marker = NMFMarker() + + marker.position = position + marker.iconImage = NMFOverlayImage(name: "ic_marker_active") + marker.width = 30 + marker.height = 40 + marker.mapView = self.mapView + + let circle = NMFCircleOverlay() + circle.center = position + circle.radius = 100 + circle.fillColor = .pink.withAlphaComponent(0.2) + circle.mapView = mapView + } + } + } + private func setupRangeOverlayView(latitude: Double, longitude: Double) { let rangeOverlayView = NMFCircleOverlay().then { $0.center = NMGLatLng(lat: latitude, lng: longitude) @@ -81,3 +122,17 @@ final class HomeView: BaseView { rangeOverlayView.mapView = self.mapView } } + +extension Reactive where Base: HomeView { + var cameraPosition: Binder { + return Binder(self.base) { view, position in + view.moveCameraPosition(position: position) + } + } + + var myStore: Binder { + return Binder(self.base) { view, store in + view.bind(store: store) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 7518816..16cfa56 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -1,4 +1,5 @@ import UIKit +import CoreLocation import ReactorKit @@ -68,5 +69,22 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .asDriver(onErrorJustReturn: false) .drive(self.homeView.salesToggleView.rx.isOn) .disposed(by: self.disposeBag) + + reactor.state + .compactMap { $0.cameraPosition } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: CLLocation( + latitude: 127.044155, + longitude: 37.547980 + )) + .drive(self.homeView.rx.cameraPosition) + .disposed(by: self.disposeBag) + + reactor.state + .compactMap { $0.store } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: Store()) + .drive(self.homeView.rx.myStore) + .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 31e0d13..23173e9 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -22,4 +22,16 @@ struct Store: Equatable { self.openTime = nil } } + + init( + id: String = "", + location: CLLocation = CLLocation(latitude: 0, longitude: 0), + isOpen: Bool = false, + openTime: Date? = nil + ) { + self.id = id + self.location = location + self.isOpen = isOpen + self.openTime = openTime + } } From b0df6de4709594b5804b64f52a80d86bc544d17f Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Mon, 11 Apr 2022 22:46:57 +0900 Subject: [PATCH 046/166] =?UTF-8?q?feat:=20=EA=B0=80=EA=B2=8C=20=EC=98=A4?= =?UTF-8?q?=ED=94=88,=20=EC=A2=85=EB=A3=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/home/HomeReactor.swift | 36 ++++++++++++- .../domains/home/HomeView.swift | 40 +++++++------- .../domains/home/HomeViewController.swift | 19 +++++++ .../models/presentation/Store.swift | 4 +- .../services/StoreService.swift | 53 +++++++++++++++++++ 5 files changed, 130 insertions(+), 22 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 1d2f499..da2464c 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -8,12 +8,14 @@ final class HomeReactor: BaseReactor, Reactor { enum Action { case viewDidLoad case tapSalesToggle + case moveCamera(CLLocation) } enum Mutation { case setAddress(String) case setStore(Store) case setCameraPosition(CLLocation) + case setStoreLocation(CLLocation) case toggleSalesStatus case showErrorAlert(Error) } @@ -49,7 +51,14 @@ final class HomeReactor: BaseReactor, Reactor { ]) case .tapSalesToggle: - return .just(.toggleSalesStatus) + if self.currentState.store?.isOpen == true { + return self.closeStore() + } else { + return self.openStore() + } + + case .moveCamera(let position): + return .just(.setCameraPosition(position)) } } @@ -66,6 +75,9 @@ final class HomeReactor: BaseReactor, Reactor { case .setCameraPosition(let location): newState.cameraPosition = location + case .setStoreLocation(let location): + newState.store?.location = location + case .toggleSalesStatus: newState.store?.isOpen.toggle() @@ -104,4 +116,26 @@ final class HomeReactor: BaseReactor, Reactor { .map { .setStore($0) } .catch { .just(.showErrorAlert($0)) } } + + private func openStore() -> Observable { + guard let storeId = self.currentState.store?.id, + let location = self.currentState.cameraPosition else { return .empty() } + + return self.storeSerivce.openStore(storeId: storeId, location: location) + .flatMap { _ -> Observable in + return .merge([ + .just(.setStoreLocation(location)), + .just(.toggleSalesStatus), + ]) + } + .catch { .just(.showErrorAlert($0)) } + } + + private func closeStore() -> Observable { + guard let storeId = self.currentState.store?.id else { return .empty() } + + return self.storeSerivce.closeStore(storeId: storeId) + .map { _ in .toggleSalesStatus } + .catch { .just(.showErrorAlert($0)) } + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index 265ceb5..da10b91 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -24,6 +24,17 @@ final class HomeView: BaseView { $0.setImage(nil, for: .normal) } + private let rangeOverlayView = NMFCircleOverlay().then { + $0.radius = 100 + $0.fillColor = .pink.withAlphaComponent(0.2) + } + + private let marker = NMFMarker().then { + $0.iconImage = NMFOverlayImage(name: "ic_marker_active") + $0.width = 30 + $0.height = 40 + } + override func setup() { self.addSubViews([ self.mapView, @@ -88,6 +99,8 @@ final class HomeView: BaseView { } fileprivate func bind(store: Store) { + self.rangeOverlayView.mapView = nil + self.marker.mapView = nil self.centerMarker.isHidden = store.isOpen if store.isOpen { if let location = store.location { @@ -95,31 +108,20 @@ final class HomeView: BaseView { lat: location.coordinate.latitude, lng: location.coordinate.longitude ) - let marker = NMFMarker() - marker.position = position - marker.iconImage = NMFOverlayImage(name: "ic_marker_active") - marker.width = 30 - marker.height = 40 - marker.mapView = self.mapView - - let circle = NMFCircleOverlay() - circle.center = position - circle.radius = 100 - circle.fillColor = .pink.withAlphaComponent(0.2) - circle.mapView = mapView + self.marker.position = position + self.marker.mapView = self.mapView + self.setupRangeOverlayView( + latitude: location.coordinate.latitude, + longitude: location.coordinate.longitude + ) } } } private func setupRangeOverlayView(latitude: Double, longitude: Double) { - let rangeOverlayView = NMFCircleOverlay().then { - $0.center = NMGLatLng(lat: latitude, lng: longitude) - $0.radius = 100 - $0.fillColor = .pink.withAlphaComponent(0.2) - } - - rangeOverlayView.mapView = self.mapView + self.rangeOverlayView.center = NMGLatLng(lat: latitude, lng: longitude) + self.rangeOverlayView.mapView = self.mapView } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 16cfa56..3feec2c 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -2,6 +2,7 @@ import UIKit import CoreLocation import ReactorKit +import NMapsMap final class HomeViewController: BaseViewController, View, HomeCoordinator { private let homeView = HomeView() @@ -37,6 +38,7 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { self.coordinator = self self.reactor = self.homeReactor self.homeReactor.action.onNext(.viewDidLoad) + self.homeView.mapView.addCameraDelegate(delegate: self) } override func bindEvent() { @@ -88,3 +90,20 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .disposed(by: self.disposeBag) } } + +extension HomeViewController: NMFMapViewCameraDelegate { + func mapView( + _ mapView: NMFMapView, + cameraDidChangeByReason reason: Int, + animated: Bool + ) { + if reason == NMFMapChangedByGesture { + let mapLocation = CLLocation( + latitude: mapView.cameraPosition.target.lat, + longitude: mapView.cameraPosition.target.lng + ) + + self.homeReactor.action.onNext(.moveCamera(mapLocation)) + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 23173e9..64a5df3 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -3,9 +3,9 @@ import Base struct Store: Equatable { let id: String - let location: CLLocation? + var location: CLLocation? var isOpen: Bool - let openTime: Date? + var openTime: Date? init(response: BossStoreInfoResponse) { self.id = response.bossStoreId diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 528e1dd..ceed69d 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -1,8 +1,14 @@ +import CoreLocation + import RxSwift import Alamofire protocol StoreServiceProtocol { func fetchMyStore() -> Observable + + func openStore(storeId: String, location: CLLocation) -> Observable + + func closeStore(storeId: String) -> Observable } struct StoreService: StoreServiceProtocol { @@ -26,4 +32,51 @@ struct StoreService: StoreServiceProtocol { return Disposables.create() } } + + func openStore(storeId: String, location: CLLocation) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(storeId)/open" + let headers = HTTPUtils.defaultHeader() + let parameters: [String: Any] = [ + "mapLatitude": location.coordinate.latitude, + "mapLongitude": location.coordinate.longitude + ] + + HTTPUtils.defaultSession.request( + urlString, + method: .put, + parameters: parameters, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } + + func closeStore(storeId: String) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(storeId)/close" + let headers = HTTPUtils.defaultHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .put, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } } From bc0dfd48cfd255498fbc5731d1c710ccbb0a5362 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Mon, 11 Apr 2022 22:51:29 +0900 Subject: [PATCH 047/166] =?UTF-8?q?fix:=20=EB=A7=88=EC=BB=A4=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager/domains/home/HomeView.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index da10b91..e84c07d 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -55,7 +55,8 @@ final class HomeView: BaseView { } self.centerMarker.snp.makeConstraints { make in - make.center.equalTo(self.mapView) + make.centerX.equalToSuperview() + make.bottom.equalTo(self.mapView.snp.centerY) make.width.equalTo(30) make.height.equalTo(40) } From 686053b0a517c60b4d6706f047fbcc2100890151 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Fri, 15 Apr 2022 21:44:54 +0900 Subject: [PATCH 048/166] =?UTF-8?q?wip:=20=EB=B0=B1=EA=B7=B8=EB=9D=BC?= =?UTF-8?q?=EC=9A=B4=EB=93=9C=20=EB=A7=A4=EB=8B=88=EC=A0=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 22 ++++++++++ .../AppDelegate.swift | 3 ++ 3dollar-in-my-pocket-manager/Info.plist | 42 +++++++++--------- .../BackgroundTaskManager.swift | 43 +++++++++++++++++++ 4 files changed, 89 insertions(+), 21 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8310377..ebe0cb7 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */; }; 6E142D6227D785A40084480C /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6127D785A40084480C /* SignupView.swift */; }; 6E142D6427D785B50084480C /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6327D785B50084480C /* BaseView.swift */; }; + 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */; }; @@ -156,6 +157,7 @@ 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkActivityLogger.swift; sourceTree = ""; }; 6E142D6127D785A40084480C /* SignupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupView.swift; sourceTree = ""; }; 6E142D6327D785B50084480C /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; + 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundTaskManager.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; @@ -307,6 +309,14 @@ path = signup; sourceTree = ""; }; + 6E1605832807032100F6649C /* background-task */ = { + isa = PBXGroup; + children = ( + 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */, + ); + path = "background-task"; + sourceTree = ""; + }; 6E1AA1B327CB210800C96D92 /* Products */ = { isa = PBXGroup; children = ( @@ -576,6 +586,7 @@ 6EE0CF9B27CB54A70027A426 /* managers */ = { isa = PBXGroup; children = ( + 6E1605832807032100F6649C /* background-task */, 6E25FED427F5362A00BE2941 /* location */, 6E37AF7227E7144B004FBE25 /* loading */, 6EE0CF9C27CB54AE0027A426 /* social-sign-in */, @@ -930,6 +941,7 @@ 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, + 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */, 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); @@ -1086,6 +1098,11 @@ DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; + INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; + INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "가게 인증 사진을 가져오기 위해 앨범권한을 허용해주세요."; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = ""; @@ -1119,6 +1136,11 @@ DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; + INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; + INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "가게 인증 사진을 가져오기 위해 앨범권한을 허용해주세요."; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = ""; diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 3a3791a..ba9b984 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -1,4 +1,5 @@ import UIKit +import BackgroundTasks import KakaoSDKCommon @@ -10,6 +11,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { ) -> Bool { self.initializeKakaoSDK() self.initializeNetworkLogger() + BackgroundTaskManager.shared.registerBackgroundTask() + BackgroundTaskManager.shared.scheduleBackgroundTask() return true } diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 5314a5d..2bf9475 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,29 +2,12 @@ - NSLocationWhenInUseUsageDescription - 사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄 - NSLocationAlwaysUsageDescription - 사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄 - NSLocationAlwaysAndWhenInUseUsageDescription - 사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄 - UIAppFonts + BGTaskSchedulerPermittedIdentifiers - AppleSDGothicNeoEB00.ttf + com.macgongmon.-dollar-in-my-pocket-manager-dev.background - NSPhotoLibraryUsageDescription - 가게 인증 사진을 가져오기 위해 앨범권한을 허용해주세요. - NSCameraUsageDescription - 가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요. - KAKAO_APP_KEY - $(KAKAO_APP_KEY) API_URL $(API_URL) - LSApplicationQueriesSchemes - - kakaokompassauth - kakaolink - CFBundleURLTypes @@ -36,6 +19,19 @@ + KAKAO_APP_KEY + $(KAKAO_APP_KEY) + LSApplicationQueriesSchemes + + kakaokompassauth + kakaolink + + NMFClientId + h14485sw4a + UIAppFonts + + AppleSDGothicNeoEB00.ttf + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes @@ -53,7 +49,11 @@ - NMFClientId - h14485sw4a + UIBackgroundModes + + fetch + location + processing + diff --git a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift new file mode 100644 index 0000000..eef2af7 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift @@ -0,0 +1,43 @@ +import BackgroundTasks + +protocol BackgroundTaskManagerProtocol { + func registerBackgroundTask() +} + +final class BackgroundTaskManager: BackgroundTaskManagerProtocol { + static let shared = BackgroundTaskManager() + + private let backgroundTaskId = "com.macgongmon.-dollar-in-my-pocket-manager-dev.background" + + func registerBackgroundTask() { + BGTaskScheduler.shared.register( + forTaskWithIdentifier: self.backgroundTaskId, + using: nil + ) { task in + self.renewOpenState(task: task as! BGAppRefreshTask) + } + } + + func scheduleBackgroundTask() { + let request = BGProcessingTaskRequest(identifier: self.backgroundTaskId) + + request.earliestBeginDate = Date(timeInterval: 5, since: Date()) + request.requiresNetworkConnectivity = true + do { + try BGTaskScheduler.shared.submit(request) + } catch { + print("Could not schedule background task: \(error)") + } + + + } + + private func renewOpenState(task: BGAppRefreshTask) { + print("Background task") + task.expirationHandler = { + task.setTaskCompleted(success: false) + } + self.scheduleBackgroundTask() + task.setTaskCompleted(success: true) + } +} From 3a149999016a36281b443fd1433aeac775cd41f6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Fri, 15 Apr 2022 23:41:19 +0900 Subject: [PATCH 049/166] =?UTF-8?q?wip:=20=EB=B0=B1=EA=B7=B8=EB=9D=BC?= =?UTF-8?q?=EC=9A=B4=EB=93=9C=20=EB=A7=A4=EB=8B=88=EC=A0=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager/AppDelegate.swift | 1 - 3dollar-in-my-pocket-manager/Info.plist | 5 ++--- 3dollar-in-my-pocket-manager/SceneDelegate.swift | 1 + .../managers/background-task/BackgroundTaskManager.swift | 6 ++---- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index ba9b984..9af94bf 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -12,7 +12,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.initializeKakaoSDK() self.initializeNetworkLogger() BackgroundTaskManager.shared.registerBackgroundTask() - BackgroundTaskManager.shared.scheduleBackgroundTask() return true } diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 2bf9475..fd69e7e 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,12 +2,12 @@ + API_URL + $(API_URL) BGTaskSchedulerPermittedIdentifiers com.macgongmon.-dollar-in-my-pocket-manager-dev.background - API_URL - $(API_URL) CFBundleURLTypes @@ -53,7 +53,6 @@ fetch location - processing diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index 88ce9de..aa775af 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -50,6 +50,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } func sceneDidEnterBackground(_ scene: UIScene) { + BackgroundTaskManager.shared.scheduleBackgroundTask() // Called as the scene transitions from the foreground to the background. // Use this method to save data, release shared resources, and store enough scene-specific state information // to restore the scene back to its current state. diff --git a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift index eef2af7..840adae 100644 --- a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift +++ b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift @@ -19,17 +19,15 @@ final class BackgroundTaskManager: BackgroundTaskManagerProtocol { } func scheduleBackgroundTask() { - let request = BGProcessingTaskRequest(identifier: self.backgroundTaskId) + let request = BGAppRefreshTaskRequest(identifier: self.backgroundTaskId) request.earliestBeginDate = Date(timeInterval: 5, since: Date()) - request.requiresNetworkConnectivity = true do { try BGTaskScheduler.shared.submit(request) + print("BGTaskScheduler.shared.submit") } catch { print("Could not schedule background task: \(error)") } - - } private func renewOpenState(task: BGAppRefreshTask) { From 59af8c198f5b7c15a3fd848cd1d85eb8a56e590d Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 16 Apr 2022 11:28:58 +0900 Subject: [PATCH 050/166] =?UTF-8?q?feat:=20BackgroundTaskManager=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/home/HomeReactor.swift | 7 +++- .../BackgroundTaskManager.swift | 38 ++++++++++++++++--- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index da2464c..40c3919 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -31,15 +31,18 @@ final class HomeReactor: BaseReactor, Reactor { private let mapService: MapServiceProtocol private let storeSerivce: StoreServiceProtocol private let locationManager: LocationManagerProtocol + private let backgroundTaskManager: BackgroundTaskManagerProtocol init( mapService: MapServiceProtocol, storeService: StoreServiceProtocol, - locationManager: LocationManagerProtocol + locationManager: LocationManagerProtocol, + backgroundTaskManager: BackgroundTaskManagerProtocol ) { self.mapService = mapService self.storeSerivce = storeService self.locationManager = locationManager + self.backgroundTaskManager = backgroundTaskManager } func mutate(action: Action) -> Observable { @@ -52,8 +55,10 @@ final class HomeReactor: BaseReactor, Reactor { case .tapSalesToggle: if self.currentState.store?.isOpen == true { + self.backgroundTaskManager.cancelBackgroundTask() return self.closeStore() } else { + self.backgroundTaskManager.registerBackgroundTask() return self.openStore() } diff --git a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift index 840adae..8a10216 100644 --- a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift +++ b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift @@ -1,13 +1,21 @@ import BackgroundTasks +import RxSwift + protocol BackgroundTaskManagerProtocol { func registerBackgroundTask() + + func cancelBackgroundTask() } final class BackgroundTaskManager: BackgroundTaskManagerProtocol { static let shared = BackgroundTaskManager() + private let locationManager = LocationManager.shared + private let storeService = StoreService() + private let disposeBag = DisposeBag() - private let backgroundTaskId = "com.macgongmon.-dollar-in-my-pocket-manager-dev.background" + private let backgroundTaskId + = "com.macgongmon.-dollar-in-my-pocket-manager-dev.background" func registerBackgroundTask() { BGTaskScheduler.shared.register( @@ -18,10 +26,14 @@ final class BackgroundTaskManager: BackgroundTaskManagerProtocol { } } - func scheduleBackgroundTask() { + func cancelBackgroundTask() { + BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: self.backgroundTaskId) + } + + private func scheduleBackgroundTask() { let request = BGAppRefreshTaskRequest(identifier: self.backgroundTaskId) - request.earliestBeginDate = Date(timeInterval: 5, since: Date()) + request.earliestBeginDate = Date(timeInterval: 60 * 15, since: Date()) do { try BGTaskScheduler.shared.submit(request) print("BGTaskScheduler.shared.submit") @@ -31,11 +43,27 @@ final class BackgroundTaskManager: BackgroundTaskManagerProtocol { } private func renewOpenState(task: BGAppRefreshTask) { - print("Background task") + self.locationManager.getCurrentLocation() + .asSingle() + .flatMap { [weak self] location -> Single in + guard let self = self else { return .error(BaseError.unknown) } + + return self.storeService.openStore( + storeId: "", + location: location + ) + .asSingle() + } + .subscribe { isSuccess in + task.setTaskCompleted(success: true) + } onFailure: { error in + task.setTaskCompleted(success: false) + } + .disposed(by: self.disposeBag) + task.expirationHandler = { task.setTaskCompleted(success: false) } self.scheduleBackgroundTask() - task.setTaskCompleted(success: true) } } From 0636fe5b36add3d9cf71385793f1f6ff8f82761f Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 16 Apr 2022 18:51:24 +0900 Subject: [PATCH 051/166] =?UTF-8?q?feat:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=8B=A4=EB=A5=B8=20=ED=91=B8=EB=93=9C=ED=8A=B8=EB=9F=AD=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20API=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../ic_store.imageset/Contents.json | 23 ++++++++ .../Assets.xcassets/ic_store.imageset/GPS.png | Bin 0 -> 809 bytes .../ic_store.imageset/GPS@2x.png | Bin 0 -> 1539 bytes .../ic_store.imageset/GPS@3x.png | Bin 0 -> 2170 bytes .../domains/home/HomeReactor.swift | 48 +++++++++++++++-- .../domains/home/HomeView.swift | 36 +++++++++++++ .../domains/home/HomeViewController.swift | 24 ++++++++- .../home/subviews/ShowOtherStoreButton.swift | 20 +++++++ .../BackgroundTaskManager.swift | 4 +- .../BossStoreAroundInfoResponse.swift | 49 ++++++++++++++++++ .../models/presentation/Store.swift | 16 ++++++ .../services/StoreService.swift | 34 ++++++++++++ 13 files changed, 252 insertions(+), 6 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS@3x.png create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreAroundInfoResponse.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index ebe0cb7..b5e35c0 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -121,6 +121,7 @@ 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */; }; 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */; }; 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676BC27EEE57A00D43E99 /* HomeView.swift */; }; + 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */; }; CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */; }; /* End PBXBuildFile section */ @@ -251,6 +252,7 @@ 6EF676B727EECC6D00D43E99 /* SplashReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashReactor.swift; sourceTree = ""; }; 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashCoordinator.swift; sourceTree = ""; }; 6EF676BC27EEE57A00D43E99 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; + 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreAroundInfoResponse.swift; sourceTree = ""; }; 6EFA3A0E27F3E1E000C13906 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cintsqyfrfisoodqdbyniuyngmnr/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 90AB2FCCDB6AA6ABA4B64642 /* Pods-3dollar-in-my-pocket-manager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; path = "Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -374,6 +376,7 @@ 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */, 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */, 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */, + 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */, ); path = response; sourceTree = ""; @@ -869,6 +872,7 @@ 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, + 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */, 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/Contents.json new file mode 100644 index 0000000..c719506 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "GPS.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "GPS@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "GPS@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9ab2379eb0b5ab6da8718031feaa07249b5d8a GIT binary patch literal 809 zcmV+^1J?YBP)X1^@s6D=Y3@00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPK)OfK2KMzXstQ_>NIkg%?z^wW~uHQL>)6?a=uYpGUfnJuX}B1rsQLp!t-8bZUp z&%}rwGqcV;$z*1}`M&3Q|GxJd1N#Jn!N9m)uY>f+8w>_B#&)~igyXp3cDo(ATrN>> zy+P|ktJU%m;m_4-ds`#HR}!k7B>;;zn~gwZ zzGAV+`u#pzE|*$%FptN>B9RD0-}XYHrT|%uFjULsGG8bZ*uNkg4&xF@&?SeJNU|Ex49R$rqn7&{T~Q6_M_M~uCRZzOS%5Hv2k)qDEl_Vd z@kAz9i@gj~7I~24(8tLGQOgV26FDb{c_NX}B?lLIAc9-!rkzeFD2k$xN~Lsr|KsDM zWWC-TAe~OL`}_OvB=9Dcsnh9vH=S65d*>)JJ@XyHqn26sd1+G zHs(4yI`S-FgqTl2*vH4m_{+;nJQNCjBw?d;j+E+4ee(3|CpAy$Y}eM-+I~rSCa|}+ z2Z6r|!HWdGy}jkf)zuZhZfR*@qyc`EK!)D&qqn!$W*%TnKnOlV&A7aGc6L@cE-x?H z&CN~8-!?ThvDVgB*4Ea>Iy*aAdwaY3I7dXj5s?h51_2Trrt!BF93#BBxyiP+w#o|Z z256?gzn={Z46x?rW_dd!h~#wMp+(@};NUaa_B>1_2*FEXaBz?f4-ZQs+S+g>K*G<^ z%hG5cA0M;D#l=7cR{@PAlS!@-E?g*-?(XjXR_Qkt3GDCh!(_goy}Z24NB%W1GBUys zf%%@Ep2>23%Mu{r=jfDz$;{2oaR+@(z`-XcCuQU+OQIwJX*Ljkc6OFsTwJiX03z1( z^fV_?&YUdg4HEv7wE2aFg*Ou(KuCu60my_9?(9=U0HKmP@?Wg2t#PM)Yru4umX>(i zvaEH?{OWV32GVpy@gop;FF?qKOfua{Uy2^HTc8dC8Vp0i~>gNUs4;k@4*{=yU%{4&Y{U^>QFPoT{ z;1i7_qvWHEXJcby{2GFzpHn-s-_+EUkw#=>lok^@JUon1qIQB2Nu^R+FM)7k6e$hVfi779Gc-V^|G^?#;>M|~fv&DDRt=a$Cq>p6G!R8gH~N%W*9L-yh6b&EimZ_W z0XVS^L>#UP?(Xii`YEzTEoO*nWv7*j0hM4(pjt`Z#>NKo0t>|^G;|#Z(JE*yz$DJk z&$atYKcoPZM-<`&bR7u5`Z!1+r7%fhu=odP@N+PsQ(U+uVk&}MFCalPNnrq`hLpD` zjmV+p%xT;Z#EK23<0bo52K&^isj0CYH?`qs%?#m@|9FW!a0YZA zQg|;5CpfSqKz?gmi9`ZUY~zNPJjaxTAK?M4Ed+RJp3eiMihmssjQ|qJ>)k4MaDMdj zvt*T-FiP?`a{{!|M@2Xf)tEZ73WV2k(Fx?d+Pnm06TX_0gO5)Nv9l~Wqf>`y){rkkdBMdcRv4(08EJ%`bk73tW*6uwIASr!yh3F9f?x=W@R@x zc6WDUv}n#^Ukv4um6esMZ7n&0i~u7K$A$1TPbK>L`hJ$`TXBm?CE<4l)dd_DHV?CL z6CQBgj0FsbDE-|On? z(mJ0Z812-PHol0`b`;kjf+`t^m}aChZBa%Xz^MOa^4Wo>ZzY^W0FVI*9HlA@ux*Sm z4iv{6^(9+;FOgw}@b$Hd*eL;-k4zz>1M%g`4?6$j^+ON9_vbbeh*;rpI7(3?MuL5y pTh32za&-Jh0wbc>y5B;$;eQAUC`snsR)7Ei002ovPDHLkV1n@0zXt#S literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_store.imageset/GPS@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ba234bd9b4d02a86f78f9ed4db9d2a3d6186c9 GIT binary patch literal 2170 zcmV-=2!;2FP)H;J-zfnj~>cl`^Zml+rsWc%yaujTmmWxfBBV|{ID!-fq@BO@crszEeD(89vPsBYjf z{X481JFFZ4QTqS*SO4zr+qW-NHKR6ygcRM7Ga?x^psj!5j~_q&I&k2?lBxmT35tpN zQ}2#u-Sh6C-2r)h^nCO`A4F+bvtRsLh)C^-^l^IGw)6t zfHv5Jw2dA)@3~xpVh1o_ADh#!pgW*xI-<0DQwfS4!3gLq1g$mLj_ta2 z>!#E0TS1VPp0mpElF`|}oAzilZhHq-5EO?jA|N?y!R};%wwbC%+wEShgCJ9S zP%TE}YaI||_G(|he(f;W9R!)ubNlw~o*ZBKhJAXJxinLu6@`@ks=xS$C?yI`}`9RDc;HhlarIqf0)J{J$kh3eQ5(< zp5yr<&teLENIM^aUQMum{rW%1!HJ5E$_0D_7jjSu28Bh)0Sq3wU(}ATScDvT_QHh= zcFd;|kRsDB`ts$=S+)^DU0TnMVefvW;i(=IR^Mx{ft0Y-W-?P6K1wt5L%Rm>C;Ej&XV1g+(fdr?^9 z&p`+Z$zr7LE3mH~ysM!nofH#8pa;vRoc*4G8 zSS_QX)VU{OWWAaobm9s#v_kf^#Xrgu>Z~T~24C@W)1TAA(?-SGa-vM6FAG$BG!37r zDJwX)jEW_mkq>W}BF&~r@|l{lgrp5YNePInn=T+5(o`mv1fWj`*W^GCHC|$a5`uyt zP`*I^yYBiS)XL0A_<$)vaMRLxpbiOg9m@#tNoHndYU}#x5PYY^u|Fn3%nfOcjg8TZ zg>rJ&u3gF(?3x^3fE=qr!walXahL?{nH-XFlQVpiR2MnG3>OP0;z@^cfdri|H52$E zsZMeLZ5L<*eV1)SP&}f zN{)SGEAt>KlNIL0UXgKaVr*x%b=E8mw##3VSuu4=kpQC$3AXW;^G$?+u{~xxP4xmD z1i_qn19@-XJ(>+jn3$MIN>CU&AX!b-CY?BO!aSU{3(Hqj+Rx9=4{8tctz=tyabCI! z@G+V!+Oj6Qq|OFf5mCezX>t-N!n)V3YJw)op-rak$(m1=8gkvccQ3Xmlw(w_R}zCh zKwD^&f!VA%u9-1u&FDE52h#|}VkhdhM@@mY7~$o%ZJ14D5)>Qkb8?KIaPs6y)$c%Z zOrM7~=FRxY&1%F$kV!eFK*6=dWHkXf<}fO@J7L~4UDH0;BU1$Xm81-Ern)^>cuMBN z!orkUN6nyvfNg$1a}*ME%ZLxG&@m5IJMfKq@ih@%waRhHAKyfj5zd`_;nVCHuZjUb3>A{CuQ3{rzixvbj(yey9sPaU7KXUYInPga5P zrG65MVVr2s Observable { + return self.storeSerivce.fetchAroundStores(location: location, distance: 1) + .map { $0.map(Store.init) } + .map { Mutation.setAroundStores($0) } + .catch { .just(.showErrorAlert($0)) } + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index e84c07d..e695482 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -35,6 +35,8 @@ final class HomeView: BaseView { $0.height = 40 } + private var otherStoreMarkers: [NMFMarker] = [] + override func setup() { self.addSubViews([ self.mapView, @@ -120,6 +122,34 @@ final class HomeView: BaseView { } } + fileprivate func setOtherStores(stores: [Store]) { + // 지도에 마커 추가 + self.clearOtherStoreMarkers() + for store in stores { + if let location = store.location { + let marker = NMFMarker().then { + $0.iconImage = NMFOverlayImage(name: "ic_store") + $0.width = 24 + $0.height = 24 + } + let position = NMGLatLng( + lat: location.coordinate.latitude, + lng: location.coordinate.longitude + ) + marker.position = position + marker.mapView = self.mapView + self.otherStoreMarkers.append(marker) + } + } + } + + private func clearOtherStoreMarkers() { + for marker in self.otherStoreMarkers { + marker.mapView = nil + } + otherStoreMarkers.removeAll() + } + private func setupRangeOverlayView(latitude: Double, longitude: Double) { self.rangeOverlayView.center = NMGLatLng(lat: latitude, lng: longitude) self.rangeOverlayView.mapView = self.mapView @@ -138,4 +168,10 @@ extension Reactive where Base: HomeView { view.bind(store: store) } } + + var otherStores: Binder<[Store]> { + return Binder(self.base) { view, stores in + view.setOtherStores(stores: stores) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 3feec2c..e7d4fa3 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -9,7 +9,8 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { private let homeReactor = HomeReactor( mapService: MapService(), storeService: StoreService(), - locationManager: LocationManager.shared + locationManager: LocationManager.shared, + backgroundTaskManager: BackgroundTaskManager.shared ) private weak var coordinator: HomeCoordinator? @@ -57,6 +58,11 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .bind(to: reactor.action) .disposed(by: self.disposeBag) + self.homeView.showOtherButton.rx.tap + .map { Reactor.Action.tapShowOtherStore } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + // Bind state reactor.state .map { $0.address } @@ -72,6 +78,13 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .drive(self.homeView.salesToggleView.rx.isOn) .disposed(by: self.disposeBag) + reactor.state + .map { $0.isShowOtherStore } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.homeView.showOtherButton.rx.isShowOtherStore) + .disposed(by: self.disposeBag) + reactor.state .compactMap { $0.cameraPosition } .distinctUntilChanged() @@ -88,6 +101,13 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .asDriver(onErrorJustReturn: Store()) .drive(self.homeView.rx.myStore) .disposed(by: self.disposeBag) + + reactor.state + .map { $0.aroundStores } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.homeView.rx.otherStores) + .disposed(by: self.disposeBag) } } @@ -97,7 +117,7 @@ extension HomeViewController: NMFMapViewCameraDelegate { cameraDidChangeByReason reason: Int, animated: Bool ) { - if reason == NMFMapChangedByGesture { + if reason == NMFMapChangedByGesture && animated { let mapLocation = CLLocation( latitude: mapView.cameraPosition.target.lat, longitude: mapView.cameraPosition.target.lng diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift index 0f56f3a..bf7f85e 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift @@ -1,5 +1,8 @@ import UIKit +import RxSwift +import RxCocoa + final class ShowOtherButton: BaseView { fileprivate let tapGesture = UITapGestureRecognizer() @@ -10,6 +13,7 @@ final class ShowOtherButton: BaseView { private let checkImageView = UIImageView().then { $0.image = UIImage(named: "ic_check") + $0.isHidden = true } private let titleLabel = UILabel().then { @@ -52,4 +56,20 @@ final class ShowOtherButton: BaseView { make.edges.equalTo(self.backgroundView).priority(.high) } } + + fileprivate func setShowOtherStores(isShow: Bool) { + self.checkImageView.isHidden = !isShow + } +} + +extension Reactive where Base: ShowOtherButton { + var tap: ControlEvent { + return ControlEvent(events: base.tapGesture.rx.event.map { _ in Void() }) + } + + var isShowOtherStore: Binder { + return Binder(self.base) { view, isShowOtherStore in + view.setShowOtherStores(isShow: isShowOtherStore) + } + } } diff --git a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift index 8a10216..c204098 100644 --- a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift +++ b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift @@ -5,6 +5,8 @@ import RxSwift protocol BackgroundTaskManagerProtocol { func registerBackgroundTask() + func scheduleBackgroundTask() + func cancelBackgroundTask() } @@ -30,7 +32,7 @@ final class BackgroundTaskManager: BackgroundTaskManagerProtocol { BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: self.backgroundTaskId) } - private func scheduleBackgroundTask() { + func scheduleBackgroundTask() { let request = BGAppRefreshTaskRequest(identifier: self.backgroundTaskId) request.earliestBeginDate = Date(timeInterval: 60 * 15, since: Date()) diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreAroundInfoResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreAroundInfoResponse.swift new file mode 100644 index 0000000..7d5fbe9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreAroundInfoResponse.swift @@ -0,0 +1,49 @@ +struct BossStoreAroundInfoResponse: Decodable { + let bossStoreId: String + let categories: [StoreCategoryResponse] + let createdAt: String? + let distance: Int + let location: LocationResponse? + let menus: [BossStoreMenuResponse] + let name: String + let openStatus: BossStoreOpenStatusResponse + let totalFeedbacksCounts: Int + let updatedAt: String? + + enum CodingKeys: String, CodingKey { + case bossStoreId + case categories + case createdAt + case distance + case location + case menus + case name + case openStatus + case totalFeedbacksCounts + case updatedAt + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.bossStoreId = try values.decodeIfPresent(String.self, forKey: .bossStoreId) ?? "" + self.categories = try values.decodeIfPresent( + [StoreCategoryResponse].self, + forKey: .categories + ) ?? [] + self.createdAt = try values.decodeIfPresent(String.self, forKey: .createdAt) + self.distance = try values.decodeIfPresent(Int.self, forKey: .distance) ?? 0 + self.location = try values.decodeIfPresent( + LocationResponse.self, + forKey: .location + ) ?? LocationResponse() + self.menus = try values.decodeIfPresent([BossStoreMenuResponse].self, forKey: .menus) ?? [] + self.name = try values.decodeIfPresent(String.self, forKey: .name) ?? "" + self.openStatus = try values.decodeIfPresent( + BossStoreOpenStatusResponse.self, + forKey: .openStatus + ) ?? BossStoreOpenStatusResponse() + self.totalFeedbacksCounts = try values.decodeIfPresent(Int.self, forKey: .totalFeedbacksCounts) ?? 0 + self.updatedAt = try values.decodeIfPresent(String.self, forKey: .updatedAt) + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 64a5df3..7c206ad 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -23,6 +23,22 @@ struct Store: Equatable { } } + init(response: BossStoreAroundInfoResponse) { + self.id = response.bossStoreId + if let location = response.location { + self.location = CLLocation(latitude: location.latitude, longitude: location.longitude) + } else { + self.location = nil + } + self.isOpen = response.openStatus.status == .open + + if let openStartDateTime = response.openStatus.openStartDateTime { + self.openTime = DateUtils.toDate(dateString: openStartDateTime) + } else { + self.openTime = nil + } + } + init( id: String = "", location: CLLocation = CLLocation(latitude: 0, longitude: 0), diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index ceed69d..975d2a6 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -9,6 +9,11 @@ protocol StoreServiceProtocol { func openStore(storeId: String, location: CLLocation) -> Observable func closeStore(storeId: String) -> Observable + + func fetchAroundStores( + location: CLLocation, + distance: Int + ) -> Observable<[BossStoreAroundInfoResponse]> } struct StoreService: StoreServiceProtocol { @@ -79,4 +84,33 @@ struct StoreService: StoreServiceProtocol { return Disposables.create() } } + + func fetchAroundStores( + location: CLLocation, + distance: Int + ) -> Observable<[BossStoreAroundInfoResponse]> { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/stores/around" + let headers = HTTPUtils.jsonHeader() + let parameters: [String: Any] = [ + "mapLatitude": location.coordinate.latitude, + "mapLongitude": location.coordinate.longitude, + "distanceKm": distance + ] + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + parameters: parameters, + headers: headers + ).responseDecodable(of: ResponseContainer<[BossStoreAroundInfoResponse]>.self) { ressponse in + if ressponse.isSuccess() { + observer.processValue(response: ressponse) + } else { + observer.processHTTPError(response: ressponse) + } + } + return Disposables.create() + } + } } From 082bf691724739e799baa523a74f9304270a61a8 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 17 Apr 2022 09:30:04 +0900 Subject: [PATCH 052/166] =?UTF-8?q?wip:=20=ED=99=88=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=ED=83=80=EC=9D=B4=EB=A8=B8=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../domains/home/HomeViewController.swift | 7 +++ .../home/subviews/SalesToggleView.swift | 44 ++++++++++++++++ .../domains/shared/PaddingLabel.swift | 50 +++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/domains/shared/PaddingLabel.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index b5e35c0..bc52a80 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -44,6 +44,7 @@ 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */; }; 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; + 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E479461280AE42000A3D96C /* PaddingLabel.swift */; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */; }; @@ -189,6 +190,7 @@ 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftAlignedCollectionViewFlowLayout.swift; sourceTree = ""; }; 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; + 6E479461280AE42000A3D96C /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapService.swift; sourceTree = ""; }; 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaverMapResponse.swift; sourceTree = ""; }; 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReverseGeoLocation.swift; sourceTree = ""; }; @@ -422,6 +424,7 @@ isa = PBXGroup; children = ( 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */, + 6E479461280AE42000A3D96C /* PaddingLabel.swift */, ); path = shared; sourceTree = ""; @@ -934,6 +937,7 @@ 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, + 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index e7d4fa3..a579a2a 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -78,6 +78,13 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .drive(self.homeView.salesToggleView.rx.isOn) .disposed(by: self.disposeBag) + reactor.state + .compactMap { $0.store?.openTime } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: Date()) + .drive(self.homeView.salesToggleView.rx.openTime) + .disposed(by: self.disposeBag) + reactor.state .map { $0.isShowOtherStore } .distinctUntilChanged() diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index f7f7b8a..2581e6f 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -32,6 +32,20 @@ final class SalesToggleView: BaseView { $0.isHidden = true } + private let timerView = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.backgroundColor = UIColor(r: 51, g: 209, b: 133) + $0.layer.cornerRadius = 8 + $0.layer.masksToBounds = true + $0.textColor = .white + $0.font = .bold(size: 16) + $0.text = "5시간 24분 23초" + } + private let onDescriptionLabel = UILabel().then { $0.font = .extraBold(size: 18) $0.textColor = .white @@ -55,6 +69,7 @@ final class SalesToggleView: BaseView { self.offTitleLabel, self.offDescriptionLabel, self.onTitleLabel, + self.timerView, self.onDescriptionLabel, self.badgeImageView, self.toggleButton @@ -96,6 +111,11 @@ final class SalesToggleView: BaseView { make.bottom.equalTo(self.onDescriptionLabel.snp.top).offset(-2) } + self.timerView.snp.makeConstraints { make in + make.left.equalTo(self.onTitleLabel.snp.right).offset(4) + make.centerY.equalTo(self.onTitleLabel) + } + self.badgeImageView.snp.makeConstraints { make in make.top.equalTo(self.backgroundView).offset(24) make.right.equalTo(self.backgroundView).offset(-24) @@ -111,6 +131,7 @@ final class SalesToggleView: BaseView { self.offTitleLabel.isHidden = isOn self.offDescriptionLabel.isHidden = isOn self.onTitleLabel.isHidden = !isOn + self.timerView.isHidden = !isOn self.onDescriptionLabel.isHidden = !isOn self.toggleButton.setTitle( isOn ? "home_on_toggle".localized : "home_off_toggle".localized, @@ -123,6 +144,23 @@ final class SalesToggleView: BaseView { self?.backgroundView.backgroundColor = isOn ? .green : .white } } + + fileprivate func setTimer(startDate: Date) { + Observable.interval(.seconds(1), scheduler: MainScheduler.instance) + .bind { [weak self] time in + let dateFormatter = DateComponentsFormatter() + var calendar = Calendar.current + calendar.locale = Locale.current + + dateFormatter.unitsStyle = .full + dateFormatter.calendar = calendar + dateFormatter.allowedUnits = [.hour, .minute, .second] + let timeDiff = Date().timeIntervalSinceReferenceDate - startDate.timeIntervalSinceReferenceDate + + self?.timerView.text = dateFormatter.string(from: timeDiff) + } + .disposed(by: self.disposeBag) + } } extension Reactive where Base: SalesToggleView { @@ -135,4 +173,10 @@ extension Reactive where Base: SalesToggleView { var tapButton: ControlEvent { return self.base.toggleButton.rx.tap } + + var openTime: Binder { + return Binder(self.base) { view, openTime in + view.setTimer(startDate: openTime) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/shared/PaddingLabel.swift b/3dollar-in-my-pocket-manager/domains/shared/PaddingLabel.swift new file mode 100644 index 0000000..881f44b --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/shared/PaddingLabel.swift @@ -0,0 +1,50 @@ +import UIKit + +final class PaddingLabel: UILabel { + let topInset: CGFloat + let bottomInset: CGFloat + let leftInset: CGFloat + let rightInset: CGFloat + + + init( + topInset: CGFloat, + bottomInset: CGFloat, + leftInset: CGFloat, + rightInset: CGFloat + ) { + self.topInset = topInset + self.bottomInset = bottomInset + self.leftInset = leftInset + self.rightInset = rightInset + + super.init(frame: .zero) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func drawText(in rect: CGRect) { + let insets = UIEdgeInsets( + top: topInset, + left: leftInset, + bottom: bottomInset, + right: rightInset + ) + super.drawText(in: rect.inset(by: insets)) + } + + override var intrinsicContentSize: CGSize { + let size = super.intrinsicContentSize + return CGSize(width: size.width + leftInset + rightInset, + height: size.height + topInset + bottomInset) + } + + override var bounds: CGRect { + didSet { + // ensures this works within stack views if multi-line + preferredMaxLayoutWidth = bounds.width - (leftInset + rightInset) + } + } +} From 5405daa6cd2f86603998c99fa2758e66254ad2e5 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 17 Apr 2022 13:45:07 +0900 Subject: [PATCH 053/166] =?UTF-8?q?feat:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=ED=83=80=EC=9D=B4=EB=A8=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift | 5 +++++ .../domains/home/subviews/SalesToggleView.swift | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index af92cfc..87dd3ff 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -19,6 +19,7 @@ final class HomeReactor: BaseReactor, Reactor { case setShowOtherStore(Bool) case setCameraPosition(CLLocation) case setStoreLocation(CLLocation) + case setStoreOpenTime(Date) case toggleSalesStatus case showErrorAlert(Error) } @@ -118,6 +119,9 @@ final class HomeReactor: BaseReactor, Reactor { case .setStoreLocation(let location): newState.store?.location = location + case .setStoreOpenTime(let date): + newState.store?.openTime = date + case .toggleSalesStatus: newState.store?.isOpen.toggle() @@ -165,6 +169,7 @@ final class HomeReactor: BaseReactor, Reactor { .flatMap { _ -> Observable in return .merge([ .just(.setStoreLocation(location)), + .just(.setStoreOpenTime(Date())), .just(.toggleSalesStatus), ]) } diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index 2581e6f..7519825 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -43,7 +43,6 @@ final class SalesToggleView: BaseView { $0.layer.masksToBounds = true $0.textColor = .white $0.font = .bold(size: 16) - $0.text = "5시간 24분 23초" } private let onDescriptionLabel = UILabel().then { @@ -150,7 +149,7 @@ final class SalesToggleView: BaseView { .bind { [weak self] time in let dateFormatter = DateComponentsFormatter() var calendar = Calendar.current - calendar.locale = Locale.current + calendar.locale = Locale(identifier: "ko_KR") dateFormatter.unitsStyle = .full dateFormatter.calendar = calendar From 85794ccc5f784994fc43f5cd6e8ba0a1d82df876 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 17 Apr 2022 15:57:31 +0900 Subject: [PATCH 054/166] =?UTF-8?q?feat:=20=EB=A7=88=EC=9D=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B0=80=EA=B2=8C=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?overview=20cell=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 73 +++++++ .../xcshareddata/swiftpm/Package.resolved | 9 + .../domains/main/MainTabController.swift | 2 +- .../domains/my/MyPageView.swift | 45 +++++ .../domains/my/MyPageViewController.swift | 97 +++++++++ .../my/my-store-info/MyStoreInfoView.swift | 48 +++++ .../MyStoreInfoViewController.swift | 41 ++++ .../cells/MyStoreInfoOverviewCell.swift | 187 ++++++++++++++++++ .../extensions/UIColorExtensions.swift | 3 + .../extensions/UIImageViewExtensions.swift | 12 ++ .../models/presentation/Store.swift | 22 ++- 11 files changed, 537 insertions(+), 2 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/MyPageView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift create mode 100644 3dollar-in-my-pocket-manager/extensions/UIImageViewExtensions.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index bc52a80..68d14ec 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -62,6 +62,13 @@ 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */; }; 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; + 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */; }; + 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */; }; + 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */; }; + 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */; }; + 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */; }; + 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 6E6C9C76280BEE26009AFAE8 /* Kingfisher */; }; + 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; @@ -208,6 +215,12 @@ 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponse.swift; sourceTree = ""; }; 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenStatus.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; + 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageViewController.swift; sourceTree = ""; }; + 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageView.swift; sourceTree = ""; }; + 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoView.swift; sourceTree = ""; }; + 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoOverviewCell.swift; sourceTree = ""; }; + 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoViewController.swift; sourceTree = ""; }; + 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageViewExtensions.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadResponse.swift; sourceTree = ""; }; @@ -268,6 +281,7 @@ 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */, 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, + 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6E2073612800626B002D03C8 /* Base.framework in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, @@ -454,6 +468,42 @@ path = subviews; sourceTree = ""; }; + 6E6C9C66280BD467009AFAE8 /* my */ = { + isa = PBXGroup; + children = ( + 6E6C9C6C280BD92B009AFAE8 /* my-store-info */, + 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */, + 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */, + ); + path = my; + sourceTree = ""; + }; + 6E6C9C6C280BD92B009AFAE8 /* my-store-info */ = { + isa = PBXGroup; + children = ( + 6E6C9C6F280BDC3B009AFAE8 /* subviews */, + 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */, + 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */, + ); + path = "my-store-info"; + sourceTree = ""; + }; + 6E6C9C6F280BDC3B009AFAE8 /* subviews */ = { + isa = PBXGroup; + children = ( + 6E6C9C70280BDC3E009AFAE8 /* cells */, + ); + path = subviews; + sourceTree = ""; + }; + 6E6C9C70280BDC3E009AFAE8 /* cells */ = { + isa = PBXGroup; + children = ( + 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E9F995227E7018D00C95C41 /* waiting */ = { isa = PBXGroup; children = ( @@ -517,6 +567,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6E6C9C66280BD467009AFAE8 /* my */, 6EEA3D6827F1E73A00BC5F31 /* main */, 6EF676BB27EEE57500D43E99 /* home */, 6EF676B227EECBE600D43E99 /* splash */, @@ -568,6 +619,7 @@ 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */, 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */, 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */, + 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -734,6 +786,7 @@ 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */, 6E8E7F2E27EEBDB7005345BB /* CropViewController */, 6E8E7F3027EEBDB7005345BB /* TOCropViewController */, + 6E6C9C76280BEE26009AFAE8 /* Kingfisher */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -772,6 +825,7 @@ 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */, 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */, 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */, + 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -869,6 +923,7 @@ 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, + 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */, 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, @@ -889,6 +944,7 @@ 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, + 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, @@ -896,6 +952,7 @@ 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, + 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, @@ -922,6 +979,7 @@ 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, + 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, @@ -931,10 +989,12 @@ 6E5DCE6E27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift in Sources */, 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, + 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, + 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */, 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */, @@ -1193,6 +1253,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/onevcat/Kingfisher.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.0.0; + }; + }; 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TimOliver/TOCropViewController.git"; @@ -1260,6 +1328,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 6E6C9C76280BEE26009AFAE8 /* Kingfisher */ = { + isa = XCSwiftPackageProductDependency; + package = 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */; + productName = Kingfisher; + }; 6E8E7F2E27EEBDB7005345BB /* CropViewController */ = { isa = XCSwiftPackageProductDependency; package = 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index c6e1ad8..127e1ae 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -18,6 +18,15 @@ "version" : "2.9.0" } }, + { + "identity" : "kingfisher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/onevcat/Kingfisher.git", + "state" : { + "revision" : "1a7b5480eb750a8e171654b9b1cb0a2cbeb27a55", + "version" : "7.2.1" + } + }, { "identity" : "reactorkit", "kind" : "remoteSourceControl", diff --git a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift index 88cbd3f..9e7568a 100644 --- a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift +++ b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift @@ -61,7 +61,7 @@ final class MainTabController: UITabBarController { self.setViewControllers([ HomeViewController.instance(), HomeViewController.instance(), - HomeViewController.instance() + MyPageViewController.instance() ], animated: true) self.tabBar.tintColor = .green self.tabBar.layer.borderWidth = 1 diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift new file mode 100644 index 0000000..c2cc18e --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift @@ -0,0 +1,45 @@ +import UIKit + +final class MyPageView: BaseView { + private let myStoreInfoButton = UIButton().then { + $0.setTitle("가게정보", for: .normal) + $0.setTitleColor(.gray95, for: .normal) + $0.titleLabel?.font = .extraBold(size: 18) + } + + private let statisticsButton = UIButton().then { + $0.setTitle("통계", for: .normal) + $0.setTitleColor(.gray95, for: .normal) + $0.titleLabel?.font = .extraBold(size: 18) + } + + let containerView = UIView() + + override func setup() { + self.backgroundColor = .white + self.addSubViews([ + self.myStoreInfoButton, + self.statisticsButton, + self.containerView + ]) + } + + override func bindConstraints() { + self.myStoreInfoButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(21) + } + + self.statisticsButton.snp.makeConstraints { make in + make.centerY.equalTo(self.myStoreInfoButton) + make.left.equalTo(self.myStoreInfoButton.snp.right).offset(22) + } + + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.myStoreInfoButton.snp.bottom).offset(16) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift new file mode 100644 index 0000000..9977736 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -0,0 +1,97 @@ +import UIKit + +final class MyPageViewController: BaseViewController { + private let myPageView = MyPageView() + + private let pageViewController = UIPageViewController( + transitionStyle: .pageCurl, + navigationOrientation: .horizontal, + options: nil + ) + + private let pageViewControllers: [BaseViewController] = [ + MyStoreInfoViewController.instance(), + MyStoreInfoViewController.instance() + ] + + static func instance() -> MyPageViewController { + return MyPageViewController(nibName: nil, bundle: nil).then { + $0.tabBarItem = UITabBarItem( + title: nil, + image: UIImage(named: "ic_home"), + tag: TabBarTag.myPage.rawValue + ) + $0.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0) + } + } + + override func loadView() { + self.view = myPageView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.setupPageViewController() + } + + private func setupPageViewController() { + self.addChild(self.pageViewController) + self.pageViewController.delegate = self + self.pageViewController.dataSource = self + self.myPageView.containerView.addSubview(self.pageViewController.view) + self.pageViewController.view.snp.makeConstraints { make in + make.edges.equalTo(self.myPageView.containerView) + } + self.pageViewController.setViewControllers( + [self.pageViewControllers[0]], + direction: .forward, + animated: false, + completion: nil + ) + } +} + +extension MyPageViewController: UIPageViewControllerDelegate, UIPageViewControllerDataSource { + func pageViewController( + _ pageViewController: UIPageViewController, + viewControllerBefore viewController: UIViewController + ) -> UIViewController? { + guard let viewController = viewController as? BaseViewController, + let index = self.pageViewControllers.firstIndex(of: viewController) else { + return nil + } + let previousIndex = index - 1 + + guard previousIndex >= 0 else { + return nil + } + + guard self.pageViewControllers.count > previousIndex else { + return nil + } + + return self.pageViewControllers[previousIndex] + } + + func pageViewController( + _ pageViewController: UIPageViewController, + viewControllerAfter viewController: UIViewController + ) -> UIViewController? { + guard let viewController = viewController as? BaseViewController, + let index = self.pageViewControllers.firstIndex(of: viewController) else { + return nil + } + let nextIndex = index + 1 + + guard nextIndex < self.pageViewControllers.count else { + return nil + } + + guard self.pageViewControllers.count > nextIndex else { + return nil + } + + return self.pageViewControllers[nextIndex] + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift new file mode 100644 index 0000000..f5504bb --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -0,0 +1,48 @@ +import UIKit + +final class MyStoreInfoView: BaseView { + let collectionView = UICollectionView( + frame: .zero, + collectionViewLayout: UICollectionViewLayout() + ).then { + let layout = UICollectionViewCompositionalLayout { sectionIndex, _ in + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(477) + )) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(477) + ), subitems: [item]) + let section = NSCollectionLayoutSection(group: group) + + return section +// if sectionIndex == 0 { +// +// } else { +// return +// } + } + + $0.collectionViewLayout = layout + $0.register( + MyStoreInfoOverviewCell.self, + forCellWithReuseIdentifier: MyStoreInfoOverviewCell.registerId + ) + } + + override func setup() { + self.addSubViews([ + self.collectionView + ]) + } + + override func bindConstraints() { + self.collectionView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift new file mode 100644 index 0000000..6efe22b --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -0,0 +1,41 @@ +import UIKit + +final class MyStoreInfoViewController: BaseViewController { + private let myStoreInfoView = MyStoreInfoView() + + static func instance() -> MyStoreInfoViewController { + return MyStoreInfoViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.myStoreInfoView + } + + override func viewDidLoad() { + self.myStoreInfoView.collectionView.dataSource = self + self.myStoreInfoView.collectionView.delegate = self + } +} + +extension MyStoreInfoViewController: UICollectionViewDataSource { + func numberOfSections(in collectionView: UICollectionView) -> Int { + return 1 + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 1 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoOverviewCell.registerId, + for: indexPath + ) as? MyStoreInfoOverviewCell else { return BaseCollectionViewCell() } + + return cell + } +} + +extension MyStoreInfoViewController: UICollectionViewDelegate { + +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift new file mode 100644 index 0000000..2833f18 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift @@ -0,0 +1,187 @@ +import UIKit + +import Kingfisher + +final class MyStoreInfoOverviewCell: BaseCollectionViewCell { + static let registerId = "\(MyStoreInfoOverviewCell.self)" + static let height: CGFloat = 477 + + private let photoView = UIImageView().then { + $0.contentMode = .scaleAspectFill + $0.backgroundColor = .gray5 + } + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 12 + $0.layer.shadowColor = UIColor.black.cgColor + $0.layer.shadowOffset = CGSize(width: 8, height: 8) + $0.layer.shadowOpacity = 0.04 + } + + private let nameLabel = UILabel().then { + $0.font = .bold(size: 24) + $0.textColor = .gray100 + $0.text = "은평구 핫도그 아저씨" + $0.textAlignment = .center + } + + private let categoryStackView = UIStackView().then { + $0.axis = .horizontal + $0.spacing = 4 + $0.distribution = .equalCentering + } + + private let contactContainerView = UIView().then { + $0.backgroundColor = .gray0 + $0.layer.cornerRadius = 12 + } + + private let phoneNumberLabel = UILabel().then { + $0.font = .bold(size: 12) + $0.textColor = .black + $0.text = "연락처" + $0.setContentHuggingPriority(.defaultHigh, for: .horizontal) + } + + private let phoneNumberValueLabel = UILabel().then { + $0.font = .regular(size: 12) + $0.textColor = .gray50 + $0.text = "010-1245-5456" + $0.textAlignment = .right + } + + private let snsLabel = UILabel().then { + $0.font = .bold(size: 12) + $0.textColor = .black + $0.text = "SNS" + $0.setContentHuggingPriority(.defaultHigh, for: .horizontal) + } + + private let snsValueLabel = UILabel().then { + $0.font = .regular(size: 12) + $0.textColor = .gray50 + $0.text = "instagram.com/3dollar_in_my_pocket?utm_medium=copy_link" + $0.textAlignment = .right + $0.numberOfLines = 2 + } + + private let editButton = UIButton().then { + $0.layer.cornerRadius = 8 + $0.layer.masksToBounds = true + $0.setBackgroundColor(color: .green, forState: .normal) + $0.setTitle("대표 정보 수정", for: .normal) + $0.setTitleColor(.white, for: .normal) + $0.titleLabel?.font = .bold(size: 14) + } + + override func prepareForReuse() { + super.prepareForReuse() + + self.categoryStackView.arrangedSubviews.forEach { + $0.removeFromSuperview() + } + } + + override func setup() { + self.addSubViews([ + self.photoView, + self.containerView, + self.nameLabel, + self.categoryStackView, + self.contactContainerView, + self.phoneNumberLabel, + self.phoneNumberValueLabel, + self.snsLabel, + self.snsValueLabel, + self.editButton + ]) + } + + override func bindConstraints() { + self.photoView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(240) + } + + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalTo(self.photoView.snp.bottom).offset(-30) + make.bottom.equalToSuperview().offset(-7) + } + + self.nameLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.containerView).offset(20) + } + + self.categoryStackView.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.nameLabel.snp.bottom).offset(8) + } + + self.contactContainerView.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.categoryStackView.snp.bottom).offset(16) + make.height.equalTo(78) + } + + self.phoneNumberLabel.snp.makeConstraints { make in + make.left.equalTo(self.contactContainerView).offset(12) + make.top.equalTo(self.contactContainerView).offset(12) + } + + self.phoneNumberValueLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.phoneNumberLabel) + make.right.equalTo(self.contactContainerView).offset(-12) + make.left.equalTo(self.phoneNumberLabel.snp.right).offset(12) + } + + self.snsLabel.snp.makeConstraints { make in + make.left.equalTo(self.phoneNumberLabel) + make.top.equalTo(self.phoneNumberLabel.snp.bottom).offset(10) + } + + self.snsValueLabel.snp.makeConstraints { make in + make.top.equalTo(self.snsLabel) + make.right.equalTo(self.contactContainerView).offset(-12) + make.left.equalTo(self.phoneNumberLabel.snp.right).offset(12) + } + + self.editButton.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.contactContainerView.snp.bottom).offset(16) + make.height.equalTo(48) + } + } + + fileprivate func bind(store: Store) { + self.photoView.setImage(urlString: store.imageUrl) + + for category in store.categories { + let categoryLagel = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.backgroundColor = UIColor(r: 0, g: 198, b: 103) + $0.textColor = .green + $0.layer.cornerRadius = 8 + $0.text = category.name + } + + self.categoryStackView.addArrangedSubview(categoryLagel) + } + + self.phoneNumberValueLabel.text = store.phoneNumber + self.snsValueLabel.text = store.snsUrl + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 920f8d4..03d2c94 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -27,4 +27,7 @@ extension UIColor { /// r: 0, g: 198, b: 103 static let green = UIColor(r: 0, g: 198, b: 103) + + /// r:5, g: 5, b: 5 + static let black = UIColor(r: 5, g: 5, b: 5) } diff --git a/3dollar-in-my-pocket-manager/extensions/UIImageViewExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIImageViewExtensions.swift new file mode 100644 index 0000000..38b81e9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/UIImageViewExtensions.swift @@ -0,0 +1,12 @@ +import UIKit + +import Kingfisher + +extension UIImageView { + func setImage(urlString: String?) { + if let urlString = urlString, + let url = URL(string: urlString) { + self.kf.setImage(with: url) + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 7c206ad..f0cfad7 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -6,6 +6,10 @@ struct Store: Equatable { var location: CLLocation? var isOpen: Bool var openTime: Date? + var imageUrl: String? + var categories: [StoreCategory] + var phoneNumber: String? + var snsUrl: String? init(response: BossStoreInfoResponse) { self.id = response.bossStoreId @@ -21,6 +25,10 @@ struct Store: Equatable { } else { self.openTime = nil } + self.imageUrl = response.imageUrl + self.categories = response.categories.map(StoreCategory.init) + self.phoneNumber = response.contactsNumber + self.snsUrl = response.snsUrl } init(response: BossStoreAroundInfoResponse) { @@ -37,17 +45,29 @@ struct Store: Equatable { } else { self.openTime = nil } + self.imageUrl = nil + self.categories = response.categories.map(StoreCategory.init) + self.phoneNumber = nil + self.snsUrl = nil } init( id: String = "", location: CLLocation = CLLocation(latitude: 0, longitude: 0), isOpen: Bool = false, - openTime: Date? = nil + openTime: Date? = nil, + imageUrl: String? = nil, + categories: [StoreCategory] = [], + phoneNumber: String? = nil, + snsUrl: String? = nil ) { self.id = id self.location = location self.isOpen = isOpen self.openTime = openTime + self.imageUrl = imageUrl + self.categories = categories + self.phoneNumber = phoneNumber + self.snsUrl = snsUrl } } From 552c2038f44f7cf76069041f637b3147be9c829a Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 17 Apr 2022 16:23:25 +0900 Subject: [PATCH 055/166] =?UTF-8?q?wip:=20=EC=82=AC=EC=9E=A5=EB=8B=98=20?= =?UTF-8?q?=ED=95=9C=EB=A7=88=EB=94=94=20=EC=85=80=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../my/my-store-info/MyStoreInfoView.swift | 46 ++++++++++++------- .../MyStoreInfoViewController.swift | 23 +++++++--- .../cells/MyStoreInfoIntroductionCell.swift | 46 +++++++++++++++++++ .../extensions/UIColorExtensions.swift | 3 ++ 5 files changed, 99 insertions(+), 23 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 68d14ec..0c1bac4 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -69,6 +69,7 @@ 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */; }; 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 6E6C9C76280BEE26009AFAE8 /* Kingfisher */; }; 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */; }; + 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; @@ -221,6 +222,7 @@ 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoOverviewCell.swift; sourceTree = ""; }; 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoViewController.swift; sourceTree = ""; }; 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageViewExtensions.swift; sourceTree = ""; }; + 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoIntroductionCell.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadResponse.swift; sourceTree = ""; }; @@ -500,6 +502,7 @@ isa = PBXGroup; children = ( 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */, + 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */, ); path = cells; sourceTree = ""; @@ -945,6 +948,7 @@ 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */, + 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index f5504bb..9da63c4 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -6,29 +6,43 @@ final class MyStoreInfoView: BaseView { collectionViewLayout: UICollectionViewLayout() ).then { let layout = UICollectionViewCompositionalLayout { sectionIndex, _ in - let item = NSCollectionLayoutItem(layoutSize: .init( - widthDimension: .fractionalWidth(1), - heightDimension: .absolute(477) - )) - let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( - widthDimension: .fractionalWidth(1), - heightDimension: .absolute(477) - ), subitems: [item]) - let section = NSCollectionLayoutSection(group: group) - - return section -// if sectionIndex == 0 { -// -// } else { -// return -// } + if sectionIndex == 0 { + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoOverviewCell.height) + )) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoOverviewCell.height) + ), subitems: [item]) + let section = NSCollectionLayoutSection(group: group) + + return section + } else { + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(MyStoreInfoIntroductionCell.height) + )) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(MyStoreInfoIntroductionCell.height) + ), subitems: [item]) + let section = NSCollectionLayoutSection(group: group) + + return section + } } $0.collectionViewLayout = layout + $0.backgroundColor = .gray0 $0.register( MyStoreInfoOverviewCell.self, forCellWithReuseIdentifier: MyStoreInfoOverviewCell.registerId ) + $0.register( + MyStoreInfoIntroductionCell.self, + forCellWithReuseIdentifier: MyStoreInfoIntroductionCell.registerId + ) } override func setup() { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 6efe22b..471c050 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -19,7 +19,7 @@ final class MyStoreInfoViewController: BaseViewController { extension MyStoreInfoViewController: UICollectionViewDataSource { func numberOfSections(in collectionView: UICollectionView) -> Int { - return 1 + return 2 } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { @@ -27,12 +27,21 @@ extension MyStoreInfoViewController: UICollectionViewDataSource { } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - guard let cell = collectionView.dequeueReusableCell( - withReuseIdentifier: MyStoreInfoOverviewCell.registerId, - for: indexPath - ) as? MyStoreInfoOverviewCell else { return BaseCollectionViewCell() } - - return cell + if indexPath.section == 0 { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoOverviewCell.registerId, + for: indexPath + ) as? MyStoreInfoOverviewCell else { return BaseCollectionViewCell() } + + return cell + } else { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoIntroductionCell.registerId, + for: indexPath + ) as? MyStoreInfoIntroductionCell else { return BaseCollectionViewCell() } + + return cell + } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift new file mode 100644 index 0000000..95a4b6b --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift @@ -0,0 +1,46 @@ +import UIKit + +final class MyStoreInfoIntroductionCell: BaseCollectionViewCell { + static let registerId = "\(MyStoreInfoIntroductionCell.self)" + static let height: CGFloat = 72 + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 12 + } + + private let introductionLabel = UILabel().then { + $0.textColor = .gray70 + $0.font = .regular(size: 14) + $0.numberOfLines = 0 + $0.text = "손님들에게 하고 싶은 말을 적어주세요!\nex) 오전에 오시면 서비스가 있습니다!" + $0.setContentHuggingPriority(.defaultHigh, for: .vertical) + } + + override func setup() { + self.addSubViews([ + self.containerView, + self.introductionLabel + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview() + make.bottom.equalToSuperview() + make.bottom.equalTo(self.introductionLabel).offset(16) + } + + self.introductionLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.containerView).offset(16) + } + } + + fileprivate func bind(introduction: String?) { + self.introductionLabel.text = introduction + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 03d2c94..a227790 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -13,6 +13,9 @@ extension UIColor { /// r: 120, g: 120, b: 120 static let gray50 = UIColor(r: 120, g: 120, b: 120) + /// r: 70, g: 70, b: 70 + static let gray70 = UIColor(r: 70, g: 70, b: 70) + /// r: 50 g: 50, b: 50 static let gray80 = UIColor(r: 50, g: 50, b: 50) From 3d2e351d48c04976e9d8501d33085a5058273344 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 17 Apr 2022 21:05:54 +0900 Subject: [PATCH 056/166] =?UTF-8?q?wip:=20=EB=A7=88=EC=9D=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=97=A4=EB=8D=94=EB=B7=B0=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../domains/my/MyPageViewController.swift | 4 ++ .../my/my-store-info/MyStoreInfoView.swift | 13 +++++ .../MyStoreInfoViewController.swift | 20 ++++++++ .../cells/MyStoreInfoHeaderView.swift | 49 +++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 0c1bac4..0eba1e7 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -91,6 +91,7 @@ 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0527EEEC11009B5527 /* AddressView.swift */; }; 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */; }; + 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; @@ -245,6 +246,7 @@ 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = ""; }; 6EC51D0527EEEC11009B5527 /* AddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressView.swift; sourceTree = ""; }; 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SalesToggleView.swift; sourceTree = ""; }; + 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoHeaderView.swift; sourceTree = ""; }; 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialSigninButton.swift; sourceTree = ""; }; 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AppleSDGothicNeoEB00.ttf; sourceTree = ""; }; @@ -503,6 +505,7 @@ children = ( 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */, 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */, + 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */, ); path = cells; sourceTree = ""; @@ -919,6 +922,7 @@ 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, + 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, 6E5DCE7227FDCA3100CA58EE /* TimeInterval.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index 9977736..a3914db 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -14,6 +14,10 @@ final class MyPageViewController: BaseViewController { MyStoreInfoViewController.instance() ] + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + static func instance() -> MyPageViewController { return MyPageViewController(nibName: nil, bundle: nil).then { $0.tabBarItem = UITabBarItem( diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index 9da63c4..e1d1fb6 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -29,6 +29,14 @@ final class MyStoreInfoView: BaseView { ), subitems: [item]) let section = NSCollectionLayoutSection(group: group) + section.boundarySupplementaryItems = [.init( + layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoHeaderView.height) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + )] return section } } @@ -43,6 +51,11 @@ final class MyStoreInfoView: BaseView { MyStoreInfoIntroductionCell.self, forCellWithReuseIdentifier: MyStoreInfoIntroductionCell.registerId ) + $0.register( + MyStoreInfoHeaderView.self, + forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, + withReuseIdentifier: MyStoreInfoHeaderView.registerId + ) } override func setup() { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 471c050..b8b4213 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -43,6 +43,26 @@ extension MyStoreInfoViewController: UICollectionViewDataSource { return cell } } + + func collectionView( + _ collectionView: UICollectionView, + viewForSupplementaryElementOfKind kind: String, + at indexPath: IndexPath + ) -> UICollectionReusableView { + switch kind { + case UICollectionView.elementKindSectionHeader: + guard let headerView = collectionView.dequeueReusableSupplementaryView( + ofKind: UICollectionView.elementKindSectionHeader, + withReuseIdentifier: MyStoreInfoHeaderView.registerId, + for: indexPath + ) as? MyStoreInfoHeaderView else { return UICollectionReusableView() } + + return headerView + + default: + return UICollectionReusableView() + } + } } extension MyStoreInfoViewController: UICollectionViewDelegate { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift new file mode 100644 index 0000000..b920a49 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift @@ -0,0 +1,49 @@ +import UIKit + +final class MyStoreInfoHeaderView: UICollectionReusableView { + static let registerId = "\(MyStoreInfoHeaderView.self)" + static let height: CGFloat = 69 + + private let titleLabel = UILabel().then { + $0.font = .extraBold(size: 18) + $0.textColor = .gray95 + $0.text = "사장님 한마디" + } + + fileprivate let rightButton = UIButton().then { + $0.setTitleColor(.green, for: .normal) + $0.setTitle("정보 수정", for: .normal) + $0.titleLabel?.font = .bold(size: 12) + } + + override init(frame: CGRect) { + super.init(frame: frame) + + self.setup() + self.bindConstraints() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setup() { + self.addSubViews([ + self.titleLabel, + self.rightButton + ]) + } + + private func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview().offset(37) + make.bottom.equalToSuperview().offset(-12) + } + + self.rightButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-24) + make.centerY.equalTo(self.titleLabel) + } + } +} From 995ad49e846a40e5cd3f519e137205d367710aac Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 17 Apr 2022 21:35:10 +0900 Subject: [PATCH 057/166] =?UTF-8?q?wip:=20=EB=A7=88=EC=9D=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9A=94=EC=9D=BC=20=EC=85=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../my/my-store-info/MyStoreInfoView.swift | 26 +++++++- .../MyStoreInfoViewController.swift | 17 ++++- .../cells/MyStoreInfoWorkDayCell.swift | 64 +++++++++++++++++++ 4 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 0eba1e7..6813abc 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -92,6 +92,7 @@ 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0527EEEC11009B5527 /* AddressView.swift */; }; 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */; }; 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */; }; + 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; @@ -247,6 +248,7 @@ 6EC51D0527EEEC11009B5527 /* AddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressView.swift; sourceTree = ""; }; 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SalesToggleView.swift; sourceTree = ""; }; 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoHeaderView.swift; sourceTree = ""; }; + 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoWorkDayCell.swift; sourceTree = ""; }; 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialSigninButton.swift; sourceTree = ""; }; 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AppleSDGothicNeoEB00.ttf; sourceTree = ""; }; @@ -506,6 +508,7 @@ 6E6C9C71280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift */, 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */, 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */, + 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */, ); path = cells; sourceTree = ""; @@ -1008,6 +1011,7 @@ 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, + 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */, 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */, 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index e1d1fb6..779739f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -18,7 +18,7 @@ final class MyStoreInfoView: BaseView { let section = NSCollectionLayoutSection(group: group) return section - } else { + } else if sectionIndex == 1 { let item = NSCollectionLayoutItem(layoutSize: .init( widthDimension: .fractionalWidth(1), heightDimension: .estimated(MyStoreInfoIntroductionCell.height) @@ -29,6 +29,26 @@ final class MyStoreInfoView: BaseView { ), subitems: [item]) let section = NSCollectionLayoutSection(group: group) + section.boundarySupplementaryItems = [.init( + layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoHeaderView.height) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + )] + return section + } else { + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(MyStoreInfoWorkDayCell.height) + )) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(MyStoreInfoWorkDayCell.height) + ), subitems: [item]) + let section = NSCollectionLayoutSection(group: group) + section.boundarySupplementaryItems = [.init( layoutSize: .init( widthDimension: .fractionalWidth(1), @@ -51,6 +71,10 @@ final class MyStoreInfoView: BaseView { MyStoreInfoIntroductionCell.self, forCellWithReuseIdentifier: MyStoreInfoIntroductionCell.registerId ) + $0.register( + MyStoreInfoWorkDayCell.self, + forCellWithReuseIdentifier: MyStoreInfoWorkDayCell.registerId + ) $0.register( MyStoreInfoHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index b8b4213..f88b082 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -19,11 +19,15 @@ final class MyStoreInfoViewController: BaseViewController { extension MyStoreInfoViewController: UICollectionViewDataSource { func numberOfSections(in collectionView: UICollectionView) -> Int { - return 2 + return 3 } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return 1 + if section == 2 { + return 7 + } else { + return 1 + } } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { @@ -34,12 +38,19 @@ extension MyStoreInfoViewController: UICollectionViewDataSource { ) as? MyStoreInfoOverviewCell else { return BaseCollectionViewCell() } return cell - } else { + } else if indexPath.section == 1 { guard let cell = collectionView.dequeueReusableCell( withReuseIdentifier: MyStoreInfoIntroductionCell.registerId, for: indexPath ) as? MyStoreInfoIntroductionCell else { return BaseCollectionViewCell() } + return cell + } else { + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, + for: indexPath + ) as? MyStoreInfoWorkDayCell else { return BaseCollectionViewCell() } + return cell } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift new file mode 100644 index 0000000..e1c98d0 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift @@ -0,0 +1,64 @@ +import UIKit + +final class MyStoreInfoWorkDayCell: BaseCollectionViewCell { + static let registerId = "\(MyStoreInfoWorkDayCell.self)" + static let height: CGFloat = 86 + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 12 + } + + private let weekDayLabel = UILabel().then { + $0.font = .medium(size: 14) + $0.textColor = .gray95 + $0.text = "월요일" + } + + private let timeLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray70 + $0.text = "15:00 - 20:00" + $0.textAlignment = .right + } + + private let locationLabel = UILabel().then { + $0.font = .regular(size: 14) + $0.textColor = .gray70 + $0.text = "서울특별시 강남역 0번 출구" + $0.textAlignment = .right + } + + override func setup() { + self.addSubViews([ + self.containerView, + self.weekDayLabel, + self.timeLabel, + self.locationLabel + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview().offset(4) + make.right.equalToSuperview().offset(-24) + make.bottom.equalToSuperview().offset(-8) + } + + self.weekDayLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.top.equalTo(self.containerView).offset(16) + } + + self.timeLabel.snp.makeConstraints { make in + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.weekDayLabel) + } + + self.locationLabel.snp.makeConstraints { make in + make.right.equalTo(self.containerView).offset(-16) + make.top.equalTo(self.timeLabel.snp.bottom).offset(2) + } + } +} From c75485ac91df5069f810dd8a1113296df9028dc5 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Mon, 18 Apr 2022 21:25:34 +0900 Subject: [PATCH 058/166] =?UTF-8?q?wip:=20=EC=82=AC=EC=9E=A5=EB=8B=98=20?= =?UTF-8?q?=ED=95=9C=EB=A7=88=EB=94=94=20=EC=88=98=EC=A0=95=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 24 ++++ .../domains/my/MyPageViewController.swift | 14 ++- .../my/my-store-info/MyStoreInfoReactor.swift | 8 ++ .../MyStoreInfoViewController.swift | 17 ++- .../EditIntroductionReactor.swift | 61 ++++++++++ .../EditIntroductionView.swift | 111 ++++++++++++++++++ .../EditIntroductionViewController.swift | 28 +++++ .../cells/MyStoreInfoHeaderView.swift | 17 +++ .../strings/en.lproj/Localizations.strings | 6 + 9 files changed, 279 insertions(+), 7 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 6813abc..8541cdf 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -14,6 +14,10 @@ 6E142D6227D785A40084480C /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6127D785A40084480C /* SignupView.swift */; }; 6E142D6427D785B50084480C /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6327D785B50084480C /* BaseView.swift */; }; 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */; }; + 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */; }; + 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */; }; + 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */; }; + 6E1AB7A5280D8B040059DCF4 /* EditIntroductionReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */; }; @@ -171,6 +175,10 @@ 6E142D6327D785B50084480C /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundTaskManager.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; + 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoReactor.swift; sourceTree = ""; }; + 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionView.swift; sourceTree = ""; }; + 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionViewController.swift; sourceTree = ""; }; + 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionReactor.swift; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequest.swift; sourceTree = ""; }; @@ -359,6 +367,16 @@ name = Frameworks; sourceTree = ""; }; + 6E1AB79F280D7F1F0059DCF4 /* edit-introduction */ = { + isa = PBXGroup; + children = ( + 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */, + 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */, + 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */, + ); + path = "edit-introduction"; + sourceTree = ""; + }; 6E1F54A127CB785B0050BBBA /* dto */ = { isa = PBXGroup; children = ( @@ -487,9 +505,11 @@ 6E6C9C6C280BD92B009AFAE8 /* my-store-info */ = { isa = PBXGroup; children = ( + 6E1AB79F280D7F1F0059DCF4 /* edit-introduction */, 6E6C9C6F280BDC3B009AFAE8 /* subviews */, 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */, 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */, + 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */, ); path = "my-store-info"; sourceTree = ""; @@ -969,6 +989,7 @@ 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */, + 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */, @@ -985,9 +1006,11 @@ 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, + 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */, 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, + 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, @@ -997,6 +1020,7 @@ 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, + 6E1AB7A5280D8B040059DCF4 /* EditIntroductionReactor.swift in Sources */, 6E5DCE6E27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift in Sources */, 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index a3914db..8dca956 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -9,7 +9,7 @@ final class MyPageViewController: BaseViewController { options: nil ) - private let pageViewControllers: [BaseViewController] = [ + private let pageViewControllers: [UIViewController] = [ MyStoreInfoViewController.instance(), MyStoreInfoViewController.instance() ] @@ -18,8 +18,8 @@ final class MyPageViewController: BaseViewController { return .darkContent } - static func instance() -> MyPageViewController { - return MyPageViewController(nibName: nil, bundle: nil).then { + static func instance() -> UINavigationController { + let viewController = MyPageViewController(nibName: nil, bundle: nil).then { $0.tabBarItem = UITabBarItem( title: nil, image: UIImage(named: "ic_home"), @@ -27,6 +27,10 @@ final class MyPageViewController: BaseViewController { ) $0.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0) } + + return UINavigationController(rootViewController: viewController).then { + $0.isNavigationBarHidden = true + } } override func loadView() { @@ -61,7 +65,7 @@ extension MyPageViewController: UIPageViewControllerDelegate, UIPageViewControll _ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController ) -> UIViewController? { - guard let viewController = viewController as? BaseViewController, + guard let viewController = viewController as? UIViewController, let index = self.pageViewControllers.firstIndex(of: viewController) else { return nil } @@ -82,7 +86,7 @@ extension MyPageViewController: UIPageViewControllerDelegate, UIPageViewControll _ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController ) -> UIViewController? { - guard let viewController = viewController as? BaseViewController, + guard let viewController = viewController as? UIViewController, let index = self.pageViewControllers.firstIndex(of: viewController) else { return nil } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift new file mode 100644 index 0000000..18a6685 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -0,0 +1,8 @@ +// +// MyStoreInfoReactor.swift +// 3dollar-in-my-pocket-manager +// +// Created by Hyun Sik Yoo on 2022/04/18. +// + +import Foundation diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index f88b082..93a99d5 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -3,8 +3,12 @@ import UIKit final class MyStoreInfoViewController: BaseViewController { private let myStoreInfoView = MyStoreInfoView() - static func instance() -> MyStoreInfoViewController { - return MyStoreInfoViewController(nibName: nil, bundle: nil) + static func instance() -> UINavigationController { + let viewController = MyStoreInfoViewController(nibName: nil, bundle: nil) + + return UINavigationController(rootViewController: viewController).then { + $0.setNavigationBarHidden(true, animated: false) + } } override func loadView() { @@ -68,6 +72,15 @@ extension MyStoreInfoViewController: UICollectionViewDataSource { for: indexPath ) as? MyStoreInfoHeaderView else { return UICollectionReusableView() } + headerView.rx.tapRightButton + .asDriver() + .drive(onNext: { [weak self] in + let viewController = EditIntroductionViewController.instance() + + self?.parent?.navigationController?.pushViewController(viewController, animated: true) + }) + .disposed(by: headerView.disposeBag) + return headerView default: diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift new file mode 100644 index 0000000..c1f2896 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift @@ -0,0 +1,61 @@ +import RxSwift +import RxCocoa +import ReactorKit + +final class EditIntroductionReactor: Reactor { + enum Action { + case inputText(String) + case tapEditButton + } + + enum Mutation { + case setIntroduction(String) + case setEditButtonEnable(Bool) + case popWishIntroduction(String) + } + + struct State { + var introduction: String? + var isEditButtonEnable: Bool + } + + let initialState: State + let popupWithIntroductionPublisher = PublishRelay() + + init(introduction: String?) { + self.initialState = State( + introduction: introduction, + isEditButtonEnable: introduction?.isEmpty == false + ) + } + + func mutate(action: Action) -> Observable { + switch action { + case .inputText(let text): + return .merge([ + .just(.setIntroduction(text)), + .just(.setEditButtonEnable(!text.isEmpty)) + ]) + + case .tapEditButton: + return .empty() + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setIntroduction(let introduction): + newState.introduction = introduction + + case .setEditButtonEnable(let isEnable): + newState.isEditButtonEnable = isEnable + + case .popWishIntroduction(let introduction): + self.popupWithIntroductionPublisher.accept(introduction) + } + + return newState + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift new file mode 100644 index 0000000..3b0de65 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift @@ -0,0 +1,111 @@ +import UIKit + +final class EditIntroductionView: BaseView { + let backButton = UIButton().then { + $0.setImage(UIImage(named: "ic_back"), for: .normal) + } + + private let titleLabel = UILabel().then { + $0.font = .semiBold(size: 16) + $0.textColor = .gray100 + $0.text = "edit_introduction_title".localized + } + + private let mainDescriptionLabel = UILabel().then { + let string = "edit_introduction_main_description".localized + let attributedString = NSMutableAttributedString(string: string) + + attributedString.addAttribute( + .font, + value: UIFont.bold(size: 24) as Any, + range: (string as NSString).range(of: "손님들에게 하고 싶은 말") + ) + + $0.font = .regular(size: 24) + $0.textColor = .black + $0.numberOfLines = 0 + $0.attributedText = attributedString + } + + private let subDescriptionLabel = UILabel().then { + $0.font = .regular(size: 14) + $0.textColor = .gray50 + $0.text = "edit_introduction_sub_description".localized + } + + private let textViewBackground = UIView().then { + $0.layer.cornerRadius = 8 + $0.backgroundColor = .gray5 + } + + private let textView = UITextView().then { + $0.textColor = .gray100 + $0.font = .medium(size: 14) + $0.backgroundColor = .clear + } + + let editButton = UIButton().then { + $0.setTitle("edit_introdution_edit_button".localized, for: .normal) + $0.titleLabel?.font = .medium(size: 16) + $0.setTitleColor(UIColor(r: 251, g: 251, b: 251), for: .normal) + $0.setBackgroundColor(color: .green, forState: .normal) + } + + override func setup() { + self.backgroundColor = UIColor(r: 251, g: 251, b: 251) + self.addSubViews([ + self.backButton, + self.titleLabel, + self.mainDescriptionLabel, + self.subDescriptionLabel, + self.textViewBackground, + self.textView, + self.editButton + ]) + } + + override func bindConstraints() { + self.backButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(15) + make.width.equalTo(24) + make.height.equalTo(24) + } + + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(self.backButton) + } + + self.mainDescriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.backButton.snp.bottom).offset(53) + } + + self.subDescriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.mainDescriptionLabel.snp.bottom).offset(8) + } + + self.textViewBackground.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalTo(self.subDescriptionLabel.snp.bottom).offset(24) + make.height.equalTo(274) + } + + self.textView.snp.makeConstraints { make in + make.left.equalTo(self.textViewBackground).offset(12) + make.right.equalTo(self.textViewBackground).offset(-12) + make.top.equalTo(self.textViewBackground).offset(15) + make.bottom.equalTo(self.textViewBackground).offset(-15) + } + + self.editButton.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom).offset(-64) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift new file mode 100644 index 0000000..ff41a58 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift @@ -0,0 +1,28 @@ +import UIKit + +final class EditIntroductionViewController: BaseViewController { + private let editIntroductionView = EditIntroductionView() + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + + static func instance() -> EditIntroductionViewController { + return EditIntroductionViewController(nibName: nil, bundle: nil).then { + $0.hidesBottomBarWhenPushed = true + } + } + + override func loadView() { + self.view = self.editIntroductionView + } + + override func bindEvent() { + self.editIntroductionView.backButton.rx.tap + .asDriver() + .drive(onNext: {[weak self] in + self?.navigationController?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift index b920a49..fe27cf0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift @@ -1,9 +1,14 @@ import UIKit +import RxSwift +import RxCocoa + final class MyStoreInfoHeaderView: UICollectionReusableView { static let registerId = "\(MyStoreInfoHeaderView.self)" static let height: CGFloat = 69 + var disposeBag = DisposeBag() + private let titleLabel = UILabel().then { $0.font = .extraBold(size: 18) $0.textColor = .gray95 @@ -16,6 +21,12 @@ final class MyStoreInfoHeaderView: UICollectionReusableView { $0.titleLabel?.font = .bold(size: 12) } + override func prepareForReuse() { + super.prepareForReuse() + + self.disposeBag = DisposeBag() + } + override init(frame: CGRect) { super.init(frame: frame) @@ -47,3 +58,9 @@ final class MyStoreInfoHeaderView: UICollectionReusableView { } } } + +extension Reactive where Base: MyStoreInfoHeaderView { + var tapRightButton: ControlEvent { + return base.rightButton.rx.tap + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index ee6a1df..ec4c5f7 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -62,3 +62,9 @@ "waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; "waiting_question_button" = "이메일로 문의하기"; + +// Edit Introduction +"edit_introduction_title" = "사장님 한마디 수정"; +"edit_introduction_main_description" = "손님들에게 하고 싶은 말을\n적어주세요!"; +"edit_introduction_sub_description" = "ex) 오전에 오시면 서비스가 있습니다 😋"; +"edit_introdution_edit_button" = "저장하기"; From 3f42aa6d837695f419786d4e3651872c04f01a16 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Mon, 18 Apr 2022 22:00:38 +0900 Subject: [PATCH 059/166] =?UTF-8?q?wip:=20=EC=82=AC=EC=9E=A5=EB=8B=98=20?= =?UTF-8?q?=ED=95=9C=EB=A7=88=EB=94=94=20=EC=88=98=EC=A0=95=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ++++++ .../dto/request/AppearanceDayRequest.swift | 25 +++++++++ .../models/dto/request/LocalTimeReq.swift | 25 +++++++++ .../models/dto/request/MenuRequest.swift | 25 +++++++++ .../request/PatchBossStoreInfoRequest.swift | 56 +++++++++++++++++++ .../models/dto/response/DayOfTheWeek.swift | 2 +- 6 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8541cdf..ef2382a 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -18,6 +18,10 @@ 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */; }; 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */; }; 6E1AB7A5280D8B040059DCF4 /* EditIntroductionReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */; }; + 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */; }; + 6E1AB7A9280D928E0059DCF4 /* AppearanceDayRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */; }; + 6E1AB7AB280D92C70059DCF4 /* LocalTimeReq.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7AA280D92C70059DCF4 /* LocalTimeReq.swift */; }; + 6E1AB7AD280D966D0059DCF4 /* MenuRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */; }; @@ -179,6 +183,10 @@ 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionView.swift; sourceTree = ""; }; 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionViewController.swift; sourceTree = ""; }; 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionReactor.swift; sourceTree = ""; }; + 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PatchBossStoreInfoRequest.swift; sourceTree = ""; }; + 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceDayRequest.swift; sourceTree = ""; }; + 6E1AB7AA280D92C70059DCF4 /* LocalTimeReq.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalTimeReq.swift; sourceTree = ""; }; + 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuRequest.swift; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequest.swift; sourceTree = ""; }; @@ -428,6 +436,10 @@ 6E1F54AB27CB94EB0050BBBA /* Requestable.swift */, 6E7A49DB27D8D03E00E6653C /* SignupRequest.swift */, 6E6F98F427DE0BAE001302A6 /* FileType.swift */, + 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */, + 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */, + 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */, + 6E1AB7AA280D92C70059DCF4 /* LocalTimeReq.swift */, ); path = request; sourceTree = ""; @@ -942,10 +954,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 6E1AB7AD280D966D0059DCF4 /* MenuRequest.swift in Sources */, 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, + 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, 6E5DCE7227FDCA3100CA58EE /* TimeInterval.swift in Sources */, @@ -1005,6 +1019,7 @@ 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */, + 6E1AB7A9280D928E0059DCF4 /* AppearanceDayRequest.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */, 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, @@ -1026,6 +1041,7 @@ 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, + 6E1AB7AB280D92C70059DCF4 /* LocalTimeReq.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift new file mode 100644 index 0000000..2ab2bec --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift @@ -0,0 +1,25 @@ +import Foundation + +struct AppearanceDayRequest: Encodable { + let dayOfTheWeek: DayOfTheWeek + let endTime: LocalTimeReq + let locationDescription: String? + let startTime: LocalTimeReq + + enum CodingKeys: String, CodingKey { + case dayOfTheWeek + case endTime + case locationDescription + case startTime + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + + try container.encode(self.dayOfTheWeek, forKey: .dayOfTheWeek) + try container.encode(self.endTime, forKey: .endTime) + try container.encodeIfPresent(self.locationDescription, forKey: .locationDescription) + try container.encode(self.startTime, forKey: .startTime) + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift b/3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift new file mode 100644 index 0000000..5463fc5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift @@ -0,0 +1,25 @@ +import Foundation + +struct LocalTimeReq: Encodable { + let hour: String? + let minute: String? + let nano: Int? + let second: String? + + enum CodingKeys: String, CodingKey { + case hour + case minute + case nano + case second + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + + try container.encodeIfPresent(self.hour, forKey: .hour) + try container.encodeIfPresent(self.minute, forKey: .minute) + try container.encodeIfPresent(self.nano, forKey: .nano) + try container.encodeIfPresent(self.second, forKey: .second) + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift new file mode 100644 index 0000000..7899104 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift @@ -0,0 +1,25 @@ +import Foundation + +struct MenuRequest: Encodable { + let groupName: String + let imageUrl: String? + let name: String + let price: Int? + + enum CodingKeys: String, CodingKey { + case groupName + case imageUrl + case name + case price + } + + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + + try container.encode(self.groupName, forKey: .groupName) + try container.encodeIfPresent(self.imageUrl, forKey: .imageUrl) + try container.encode(self.name, forKey: .name) + try container.encodeIfPresent(self.price, forKey: .price) + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift new file mode 100644 index 0000000..d700514 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift @@ -0,0 +1,56 @@ +import Foundation + +struct PatchBossStoreInfoRequest: Encodable { + let appearanceDays: [AppearanceDayRequest]? + let categoriesIds: [String]? + let contactsNumber: String? + let imageUrl: String? + let introduction: String? + let menus: [MenuRequest]? + let name: String? + let snsUrl: String? + + enum CodingKeys: String, CodingKey { + case appearanceDays + case categoriesIds + case contactsNumber + case imageUrl + case introduction + case menus + case name + case snsUrl + } + + init( + appearanceDays: [AppearanceDayRequest]? = nil, + categoriesIds: [String]? = nil, + contactsNumber: String? = nil, + imageUrl: String? = nil, + introduction: String? = nil, + menus: [MenuRequest]? = nil, + name: String? = nil, + snsUrl: String? = nil + ) { + self.appearanceDays = appearanceDays + self.categoriesIds = categoriesIds + self.contactsNumber = contactsNumber + self.imageUrl = imageUrl + self.introduction = introduction + self.menus = menus + self.name = name + self.snsUrl = snsUrl + } + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + + try container.encodeIfPresent(self.appearanceDays, forKey: .appearanceDays) + try container.encodeIfPresent(self.categoriesIds, forKey: .categoriesIds) + try container.encodeIfPresent(self.contactsNumber, forKey: .contactsNumber) + try container.encodeIfPresent(self.imageUrl, forKey: .imageUrl) + try container.encodeIfPresent(self.introduction, forKey: .introduction) + try container.encodeIfPresent(self.menus, forKey: .menus) + try container.encodeIfPresent(self.name, forKey: .name) + try container.encodeIfPresent(self.snsUrl, forKey: .snsUrl) + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift b/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift index 05ad0a8..d447bc1 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift @@ -1,4 +1,4 @@ -enum DayOfTheWeek: String, Decodable { +enum DayOfTheWeek: String, Codable { case monday = "MONDAY" case tuesday = "TUESDAY" case wednesday = "WEDNESDAY" From 9918fb8876b62da5b84c0fe4e1acedcc99d42e4a Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 26 Apr 2022 22:29:45 +0900 Subject: [PATCH 060/166] =?UTF-8?q?feat:=20=EC=82=AC=EC=9E=A5=EB=8B=98=20?= =?UTF-8?q?=ED=95=9C=EB=A7=88=EB=94=94=20=EC=88=98=EC=A0=95=20API=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 + .../domains/base/BaseCoordinator.swift | 6 ++ .../MyStoreInfoViewController.swift | 2 +- .../EditIntroductionCoordinator.swift | 12 +++ .../EditIntroductionReactor.swift | 50 ++++++++-- .../EditIntroductionView.swift | 15 ++- .../EditIntroductionViewController.swift | 91 ++++++++++++++++++- .../extensions/ObserverExtensions.swift | 6 +- .../services/StoreService.swift | 41 +++++++++ 9 files changed, 210 insertions(+), 17 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index ef2382a..7d9668a 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -90,6 +90,7 @@ 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; + 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; @@ -252,6 +253,7 @@ 6E808CAD27F016CF00C46459 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cpqyhqxhepkpbfajpzjhmdywgxbk/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; + 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -381,6 +383,7 @@ 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */, 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */, 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */, + 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */, ); path = "edit-introduction"; sourceTree = ""; @@ -958,6 +961,7 @@ 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, + 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift index 8a0ecb2..feb65a3 100644 --- a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift @@ -4,6 +4,8 @@ import Base protocol BaseCoordinator { var presenter: BaseViewController { get } + func popViewController(animated: Bool) + func showErrorAlert(error: Error) func openURL(url: String) @@ -16,6 +18,10 @@ extension BaseCoordinator where Self: BaseViewController { return self } + func popViewController(animated: Bool) { + self.presenter.navigationController?.popViewController(animated: true) + } + func showErrorAlert(error: Error) { AlertUtils.showWithAction( diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 93a99d5..da74669 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -75,7 +75,7 @@ extension MyStoreInfoViewController: UICollectionViewDataSource { headerView.rx.tapRightButton .asDriver() .drive(onNext: { [weak self] in - let viewController = EditIntroductionViewController.instance() + let viewController = EditIntroductionViewController.instance(storeId: "", introduction: nil) self?.parent?.navigationController?.pushViewController(viewController, animated: true) }) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift new file mode 100644 index 0000000..ef97296 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift @@ -0,0 +1,12 @@ +protocol EditIntroductionCoordinator: AnyObject, BaseCoordinator { + func popWithIntroduction(introduction: String?) +} + +extension EditIntroductionCoordinator { + func popWithIntroduction(introduction: String?) { + if let delegate = self as? EditIntroductionDelegate { + delegate.onUpdateIntroduction(introduction: introduction) + } + self.presenter.navigationController?.popViewController(animated: true) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift index c1f2896..07e9abb 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift @@ -2,16 +2,18 @@ import RxSwift import RxCocoa import ReactorKit -final class EditIntroductionReactor: Reactor { +final class EditIntroductionReactor: BaseReactor, Reactor { enum Action { - case inputText(String) + case inputText(String?) case tapEditButton } enum Mutation { - case setIntroduction(String) + case setIntroduction(String?) case setEditButtonEnable(Bool) case popWishIntroduction(String) + case showLoading(isShow: Bool) + case showErrorAlert(Error) } struct State { @@ -20,9 +22,17 @@ final class EditIntroductionReactor: Reactor { } let initialState: State - let popupWithIntroductionPublisher = PublishRelay() + let popupWithIntroductionPublisher = PublishRelay() + private let storeId: String + private let storeService: StoreServiceProtocol - init(introduction: String?) { + init( + storeId: String, + storeService: StoreServiceProtocol, + introduction: String? = nil + ) { + self.storeId = storeId + self.storeService = storeService self.initialState = State( introduction: introduction, isEditButtonEnable: introduction?.isEmpty == false @@ -34,11 +44,17 @@ final class EditIntroductionReactor: Reactor { case .inputText(let text): return .merge([ .just(.setIntroduction(text)), - .just(.setEditButtonEnable(!text.isEmpty)) + .just(.setEditButtonEnable(text?.isEmpty == false)) ]) case .tapEditButton: - return .empty() + guard let introduction = self.currentState.introduction else { return .empty() } + + return .concat([ + .just(.showLoading(isShow: true)), + self.updateStore(introduction: introduction), + .just(.showLoading(isShow: false)) + ]) } } @@ -54,8 +70,28 @@ final class EditIntroductionReactor: Reactor { case .popWishIntroduction(let introduction): self.popupWithIntroductionPublisher.accept(introduction) + + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) } return newState } + + private func updateStore(introduction: String) -> Observable { + return self.storeService.updateStore( + storeId: self.storeId, + introduction: introduction + ) + .map { _ in Mutation.setIntroduction(introduction) } + .catch { + return .merge([ + .just(.showLoading(isShow: false)), + .just(.showErrorAlert($0)) + ]) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift index 3b0de65..e5981ca 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift @@ -1,6 +1,11 @@ import UIKit +import RxSwift +import RxCocoa + final class EditIntroductionView: BaseView { + fileprivate let tapGesture = UITapGestureRecognizer() + let backButton = UIButton().then { $0.setImage(UIImage(named: "ic_back"), for: .normal) } @@ -38,7 +43,7 @@ final class EditIntroductionView: BaseView { $0.backgroundColor = .gray5 } - private let textView = UITextView().then { + let textView = UITextView().then { $0.textColor = .gray100 $0.font = .medium(size: 14) $0.backgroundColor = .clear @@ -49,9 +54,11 @@ final class EditIntroductionView: BaseView { $0.titleLabel?.font = .medium(size: 16) $0.setTitleColor(UIColor(r: 251, g: 251, b: 251), for: .normal) $0.setBackgroundColor(color: .green, forState: .normal) + $0.setBackgroundColor(color: .gray30, forState: .disabled) } override func setup() { + self.addGestureRecognizer(self.tapGesture) self.backgroundColor = UIColor(r: 251, g: 251, b: 251) self.addSubViews([ self.backButton, @@ -109,3 +116,9 @@ final class EditIntroductionView: BaseView { } } } + +extension Reactive where Base: EditIntroductionView { + var tapBackground: ControlEvent { + return ControlEvent(events: base.tapGesture.rx.event.map { _ in () }) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift index ff41a58..3e2dab4 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift @@ -1,28 +1,111 @@ import UIKit -final class EditIntroductionViewController: BaseViewController { +import ReactorKit + +protocol EditIntroductionDelegate: AnyObject { + func onUpdateIntroduction(introduction: String?) +} + +final class EditIntroductionViewController: BaseViewController, View, EditIntroductionCoordinator { + weak var delegate: EditIntroductionDelegate? private let editIntroductionView = EditIntroductionView() + private let editIntroductionReactor: EditIntroductionReactor + private weak var coordinator: EditIntroductionCoordinator? override var preferredStatusBarStyle: UIStatusBarStyle { return .darkContent } - static func instance() -> EditIntroductionViewController { - return EditIntroductionViewController(nibName: nil, bundle: nil).then { + static func instance(storeId: String, introduction: String?) -> EditIntroductionViewController { + return EditIntroductionViewController( + storeId: storeId, + introduction: introduction + ).then { $0.hidesBottomBarWhenPushed = true } } + init(storeId: String, introduction: String?) { + self.editIntroductionReactor = EditIntroductionReactor( + storeId: storeId, + storeService: StoreService(), + introduction: introduction + ) + + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override func loadView() { self.view = self.editIntroductionView } + override func viewDidLoad() { + super.viewDidLoad() + + self.coordinator = self + self.reactor = self.editIntroductionReactor + } + override func bindEvent() { + self.editIntroductionView.rx.tapBackground + .asDriver() + .drive(onNext: { [weak self] in + self?.editIntroductionView.endEditing(true) + }) + .disposed(by: self.eventDisposeBag) + self.editIntroductionView.backButton.rx.tap .asDriver() .drive(onNext: {[weak self] in - self?.navigationController?.popViewController(animated: true) + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + + self.editIntroductionReactor.popupWithIntroductionPublisher + .asDriver(onErrorJustReturn: "") + .drive(onNext: { [weak self] introduction in + self?.coordinator?.popWithIntroduction(introduction: introduction) + }) + .disposed(by: self.eventDisposeBag) + + self.editIntroductionReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.editIntroductionReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) }) .disposed(by: self.eventDisposeBag) } + + func bind(reactor: EditIntroductionReactor) { + // Bind action + self.editIntroductionView.textView.rx.text + .map { Reactor.Action.inputText($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editIntroductionView.editButton.rx.tap + .throttle(.milliseconds(300), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapEditButton } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind state + self.editIntroductionReactor.state + .map { $0.isEditButtonEnable } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.editIntroductionView.editButton.rx.isEnabled) + .disposed(by: self.disposeBag) + } } diff --git a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift index d841f40..f45b62c 100644 --- a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift @@ -8,10 +8,8 @@ extension AnyObserver { if let httpError = HTTPError(rawValue: statusCode) { self.onError(httpError) } else { - if let value = response.value { - if let responseContainer: ResponseContainer = JsonUtils.decode(object: value) { - self.onError(BaseError.custom(responseContainer.message)) - } + if let value = response.value as? ResponseContainer { + self.onError(BaseError.custom(value.message)) } else { self.onError(BaseError.unknown) } diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 975d2a6..79ea208 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -14,6 +14,11 @@ protocol StoreServiceProtocol { location: CLLocation, distance: Int ) -> Observable<[BossStoreAroundInfoResponse]> + + func updateStore( + storeId: String, + introduction: String? + ) -> Observable } struct StoreService: StoreServiceProtocol { @@ -113,4 +118,40 @@ struct StoreService: StoreServiceProtocol { return Disposables.create() } } + + func updateStore( + storeId: String, + introduction: String? + ) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store/\(storeId)" + let headers = HTTPUtils.defaultHeader() + let parameters = PatchBossStoreInfoRequest( + appearanceDays: nil, + categoriesIds: nil, + contactsNumber: nil, + imageUrl: nil, + introduction: introduction, + menus: nil, + name: nil, + snsUrl: nil + ) + + HTTPUtils.defaultSession.request( + urlString, + method: .patch, + parameters: parameters, + encoder: JSONParameterEncoder.default, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } } From 7b3cf769e3f7e43997e43e0aae8ea74e2a204d39 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 27 Apr 2022 23:22:56 +0900 Subject: [PATCH 061/166] =?UTF-8?q?wip:=20=EB=A7=88=EC=9D=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=B0=94?= =?UTF-8?q?=EC=9D=B8=EB=94=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 37 ++++ .../xcshareddata/swiftpm/Package.resolved | 11 +- .../MyStoreInfoCoordinator.swift | 9 + .../my/my-store-info/MyStoreInfoReactor.swift | 95 ++++++++++- .../MyStoreInfoViewController.swift | 160 ++++++++++-------- .../cells/MyStoreInfoIntroductionCell.swift | 2 +- .../cells/MyStoreInfoOverviewCell.swift | 17 +- .../models/presentation/Menu.swift | 19 +++ .../MyStoreInfoSectionModel.swift | 34 ++++ .../models/presentation/Store.swift | 17 +- 10 files changed, 316 insertions(+), 85 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/Menu.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 7d9668a..087ae56 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -69,6 +69,11 @@ 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */; }; 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */; }; 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */; }; + 6E5F212D281976B200922A99 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212C281976B200922A99 /* Differentiator */; }; + 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212E281976B200922A99 /* RxDataSources */; }; + 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */; }; + 6E5F21342819778E00922A99 /* Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21332819778E00922A99 /* Menu.swift */; }; + 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */; }; 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */; }; @@ -234,6 +239,9 @@ 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreMenuResponse.swift; sourceTree = ""; }; 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponse.swift; sourceTree = ""; }; 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenStatus.swift; sourceTree = ""; }; + 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; + 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; + 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoCoordinator.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageViewController.swift; sourceTree = ""; }; 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageView.swift; sourceTree = ""; }; @@ -306,8 +314,10 @@ 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, + 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6E2073612800626B002D03C8 /* Base.framework in Frameworks */, + 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, @@ -525,6 +535,7 @@ 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */, 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */, 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */, + 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */, ); path = "my-store-info"; sourceTree = ""; @@ -739,6 +750,8 @@ 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */, 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */, 6EBF1AE827FE6A980011268B /* Store.swift */, + 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */, + 6E5F21332819778E00922A99 /* Menu.swift */, ); path = presentation; sourceTree = ""; @@ -831,6 +844,8 @@ 6E8E7F2E27EEBDB7005345BB /* CropViewController */, 6E8E7F3027EEBDB7005345BB /* TOCropViewController */, 6E6C9C76280BEE26009AFAE8 /* Kingfisher */, + 6E5F212C281976B200922A99 /* Differentiator */, + 6E5F212E281976B200922A99 /* RxDataSources */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -870,6 +885,7 @@ 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */, 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */, 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */, + 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -1002,6 +1018,7 @@ 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */, + 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, @@ -1030,6 +1047,7 @@ 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */, + 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, @@ -1043,6 +1061,7 @@ 6E5DCE6E27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift in Sources */, 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, + 6E5F21342819778E00922A99 /* Menu.swift in Sources */, 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6E1AB7AB280D92C70059DCF4 /* LocalTimeReq.swift in Sources */, @@ -1309,6 +1328,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/RxSwiftCommunity/RxDataSources.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/onevcat/Kingfisher.git"; @@ -1384,6 +1411,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 6E5F212C281976B200922A99 /* Differentiator */ = { + isa = XCSwiftPackageProductDependency; + package = 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = Differentiator; + }; + 6E5F212E281976B200922A99 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; 6E6C9C76280BEE26009AFAE8 /* Kingfisher */ = { isa = XCSwiftPackageProductDependency; package = 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 127e1ae..4831c31 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -36,6 +36,15 @@ "revision" : "65654e182bc9d62fd6b78da6fc4db5968c6bbe1c" } }, + { + "identity" : "rxdatasources", + "kind" : "remoteSourceControl", + "location" : "https://github.com/RxSwiftCommunity/RxDataSources.git", + "state" : { + "revision" : "90c29b48b628479097fe775ed1966d75ac374518", + "version" : "5.0.2" + } + }, { "identity" : "rxswift", "kind" : "remoteSourceControl", @@ -59,7 +68,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift new file mode 100644 index 0000000..29cadea --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -0,0 +1,9 @@ +protocol MyStoreInfoCoordinator: AnyObject, BaseCoordinator { + func pushEditStoreInfo(store: Store) +} + +extension MyStoreInfoCoordinator { + func pushEditStoreInfo(store: Store) { + + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index 18a6685..0edecca 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -1,8 +1,89 @@ -// -// MyStoreInfoReactor.swift -// 3dollar-in-my-pocket-manager -// -// Created by Hyun Sik Yoo on 2022/04/18. -// +import ReactorKit +import RxSwift +import RxCocoa -import Foundation +final class MyStoreInfoReactor: BaseReactor, Reactor { + enum Action { + case viewDidLoad + case tapEditStoreInfo + case tapEditIntroduction + case tapEditMenus + case tapEditSchedule + } + + enum Mutation { + case setStore(Store) + case pushEditStoreInfo(store: Store) + case pushEditIntroduction(storeId: String, introduction: String?) + case pushEditMenus + case pushEditSchedule + case showErrorAlert(Error) + } + + struct State { + var store = Store() + } + + let initialState = State() + let pushEditStoreInfoPublisher = PublishRelay() + let pushEditIntroductionPublisher = PublishRelay<(String, String?)>() + private let storeService: StoreServiceProtocol + + init(storeService: StoreServiceProtocol) { + self.storeService = storeService + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + return self.fetchMyStore() + + case .tapEditStoreInfo: + return .just(.pushEditStoreInfo(store: self.currentState.store)) + + case .tapEditIntroduction: + return .just(.pushEditIntroduction( + storeId: self.currentState.store.id, + introduction: self.currentState.store.introduction + )) + + case .tapEditMenus: + return .empty() + + case .tapEditSchedule: + return .empty() + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setStore(let store): + newState.store = store + + case .pushEditStoreInfo(let store): + self.pushEditStoreInfoPublisher.accept(store) + + case .pushEditIntroduction(let storeId, let introduction): + self.pushEditIntroductionPublisher.accept((storeId, introduction)) + + case .pushEditMenus: + break + + case .pushEditSchedule: + break + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func fetchMyStore() -> Observable { + return self.storeService.fetchMyStore() + .map { .setStore(Store(response: $0)) } + .catch { .just(.showErrorAlert($0)) } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index da74669..687f1a2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -1,7 +1,14 @@ import UIKit -final class MyStoreInfoViewController: BaseViewController { +import ReactorKit +import RxDataSources + +final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoordinator { private let myStoreInfoView = MyStoreInfoView() + private let myStoreInfoReactor = MyStoreInfoReactor(storeService: StoreService()) + private weak var coordinator: MyStoreInfoCoordinator? + private var myStoreInfoCollectionViewDataSource + : RxCollectionViewSectionedReloadDataSource! static func instance() -> UINavigationController { let viewController = MyStoreInfoViewController(nibName: nil, bundle: nil) @@ -16,79 +23,98 @@ final class MyStoreInfoViewController: BaseViewController { } override func viewDidLoad() { - self.myStoreInfoView.collectionView.dataSource = self - self.myStoreInfoView.collectionView.delegate = self - } -} - -extension MyStoreInfoViewController: UICollectionViewDataSource { - func numberOfSections(in collectionView: UICollectionView) -> Int { - return 3 + self.setupDataSource() + self.coordinator = self + self.reactor = self.myStoreInfoReactor + self.myStoreInfoReactor.action.onNext(.viewDidLoad) } - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - if section == 2 { - return 7 - } else { - return 1 - } + override func bindEvent() { + self.myStoreInfoReactor.pushEditStoreInfoPublisher + .asDriver(onErrorJustReturn: Store()) + .drive(onNext: { [weak self] store in + self?.coordinator?.pushEditStoreInfo(store: store) + }) + .disposed(by: self.eventDisposeBag) } - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - if indexPath.section == 0 { - guard let cell = collectionView.dequeueReusableCell( - withReuseIdentifier: MyStoreInfoOverviewCell.registerId, - for: indexPath - ) as? MyStoreInfoOverviewCell else { return BaseCollectionViewCell() } - - return cell - } else if indexPath.section == 1 { - guard let cell = collectionView.dequeueReusableCell( - withReuseIdentifier: MyStoreInfoIntroductionCell.registerId, - for: indexPath - ) as? MyStoreInfoIntroductionCell else { return BaseCollectionViewCell() } - - return cell - } else { - guard let cell = collectionView.dequeueReusableCell( - withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, - for: indexPath - ) as? MyStoreInfoWorkDayCell else { return BaseCollectionViewCell() } - - return cell - } + func bind(reactor: MyStoreInfoReactor) { + // Bind state + reactor.state + .map { [ + MyStoreInfoSectionModel(store: $0.store), + MyStoreInfoSectionModel(introduction: $0.store.introduction), + MyStoreInfoSectionModel(menus: $0.store.menus) + ] } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.myStoreInfoView.collectionView.rx.items( + dataSource: self.myStoreInfoCollectionViewDataSource + )) + .disposed(by: self.disposeBag) } - func collectionView( - _ collectionView: UICollectionView, - viewForSupplementaryElementOfKind kind: String, - at indexPath: IndexPath - ) -> UICollectionReusableView { - switch kind { - case UICollectionView.elementKindSectionHeader: - guard let headerView = collectionView.dequeueReusableSupplementaryView( - ofKind: UICollectionView.elementKindSectionHeader, - withReuseIdentifier: MyStoreInfoHeaderView.registerId, - for: indexPath - ) as? MyStoreInfoHeaderView else { return UICollectionReusableView() } - - headerView.rx.tapRightButton - .asDriver() - .drive(onNext: { [weak self] in - let viewController = EditIntroductionViewController.instance(storeId: "", introduction: nil) + private func setupDataSource() { + self.myStoreInfoCollectionViewDataSource + = RxCollectionViewSectionedReloadDataSource( + configureCell: { dataSource, collectionView, indexPath, item in + switch item { + case .overview(let store): + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoOverviewCell.registerId, + for: indexPath + ) as? MyStoreInfoOverviewCell else { return BaseCollectionViewCell() } + + cell.bind(store: store) + cell.editButton.rx.tap + .map { Reactor.Action.tapEditStoreInfo } + .bind(to: self.myStoreInfoReactor.action) + .disposed(by: cell.disposeBag) + return cell - self?.parent?.navigationController?.pushViewController(viewController, animated: true) - }) - .disposed(by: headerView.disposeBag) - - return headerView - - default: - return UICollectionReusableView() + case .introduction(let introduction): + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoIntroductionCell.registerId, + for: indexPath + ) as? MyStoreInfoIntroductionCell else { return BaseCollectionViewCell() } + + cell.bind(introduction: introduction) + return cell + + case .menu(let menu): + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, + for: indexPath + ) as? MyStoreInfoWorkDayCell else { return BaseCollectionViewCell() } + + return cell + } + }) + + self.myStoreInfoCollectionViewDataSource.configureSupplementaryView + = { dataSource, collectionView, kind, indexPath -> UICollectionReusableView in + switch kind { + case UICollectionView.elementKindSectionHeader: + guard let headerView = collectionView.dequeueReusableSupplementaryView( + ofKind: UICollectionView.elementKindSectionHeader, + withReuseIdentifier: MyStoreInfoHeaderView.registerId, + for: indexPath + ) as? MyStoreInfoHeaderView else { return UICollectionReusableView() } + + headerView.rx.tapRightButton + .asDriver() + .drive(onNext: { [weak self] in + let viewController = EditIntroductionViewController.instance(storeId: "", introduction: nil) + + self?.parent?.navigationController?.pushViewController(viewController, animated: true) + }) + .disposed(by: headerView.disposeBag) + + return headerView + + default: + return UICollectionReusableView() + } } } } - -extension MyStoreInfoViewController: UICollectionViewDelegate { - -} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift index 95a4b6b..c8aeb3a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift @@ -40,7 +40,7 @@ final class MyStoreInfoIntroductionCell: BaseCollectionViewCell { } } - fileprivate func bind(introduction: String?) { + func bind(introduction: String?) { self.introductionLabel.text = introduction } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift index 2833f18..6436ee1 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift @@ -29,7 +29,8 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { private let categoryStackView = UIStackView().then { $0.axis = .horizontal $0.spacing = 4 - $0.distribution = .equalCentering + $0.distribution = .equalSpacing + $0.alignment = .fill } private let contactContainerView = UIView().then { @@ -47,7 +48,6 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { private let phoneNumberValueLabel = UILabel().then { $0.font = .regular(size: 12) $0.textColor = .gray50 - $0.text = "010-1245-5456" $0.textAlignment = .right } @@ -61,12 +61,11 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { private let snsValueLabel = UILabel().then { $0.font = .regular(size: 12) $0.textColor = .gray50 - $0.text = "instagram.com/3dollar_in_my_pocket?utm_medium=copy_link" $0.textAlignment = .right $0.numberOfLines = 2 } - private let editButton = UIButton().then { + let editButton = UIButton().then { $0.layer.cornerRadius = 8 $0.layer.masksToBounds = true $0.setBackgroundColor(color: .green, forState: .normal) @@ -120,8 +119,7 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { } self.categoryStackView.snp.makeConstraints { make in - make.left.equalTo(self.containerView).offset(16) - make.right.equalTo(self.containerView).offset(-16) + make.centerX.equalTo(self.containerView) make.top.equalTo(self.nameLabel.snp.bottom).offset(8) } @@ -162,7 +160,8 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { } } - fileprivate func bind(store: Store) { + func bind(store: Store) { + self.nameLabel.text = store.name self.photoView.setImage(urlString: store.imageUrl) for category in store.categories { @@ -172,10 +171,12 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { leftInset: 8, rightInset: 8 ).then { - $0.backgroundColor = UIColor(r: 0, g: 198, b: 103) + $0.backgroundColor = UIColor(r: 0, g: 198, b: 103, a: 0.1) $0.textColor = .green $0.layer.cornerRadius = 8 $0.text = category.name + $0.layer.masksToBounds = true + $0.setContentHuggingPriority(.defaultHigh, for: .horizontal) } self.categoryStackView.addArrangedSubview(categoryLagel) diff --git a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift new file mode 100644 index 0000000..9457b74 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift @@ -0,0 +1,19 @@ +import Foundation + +struct Menu: Equatable { + let imageUrl: String + let name: String + let price: Int + + init(response: BossStoreMenuResponse) { + self.imageUrl = response.imageUrl + self.name = response.name + self.price = response.price + } + + init() { + self.imageUrl = "" + self.name = "" + self.price = 0 + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift new file mode 100644 index 0000000..174ee5f --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift @@ -0,0 +1,34 @@ +import RxDataSources + +struct MyStoreInfoSectionModel: Equatable { + var items: [Item] +} + +extension MyStoreInfoSectionModel: SectionModelType { + typealias Item = SectionItemType + + enum SectionItemType: Equatable { + case overview(Store) + case introduction(String?) + case menu(Menu) + } + + init(original: MyStoreInfoSectionModel, items: [Item]) { + self = original + self.items = items + } + + init(store: Store) { + self.items = [.overview(store)] + } + + init(introduction: String?) { + self.items = [.introduction(introduction)] + } + + init(menus: [Menu]) { + let menus = menus.map { SectionItemType.menu($0) } + + self.items = menus + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index f0cfad7..0b05adb 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -10,6 +10,9 @@ struct Store: Equatable { var categories: [StoreCategory] var phoneNumber: String? var snsUrl: String? + var introduction: String? + let menus: [Menu] + let name: String init(response: BossStoreInfoResponse) { self.id = response.bossStoreId @@ -29,6 +32,9 @@ struct Store: Equatable { self.categories = response.categories.map(StoreCategory.init) self.phoneNumber = response.contactsNumber self.snsUrl = response.snsUrl + self.introduction = response.introduction + self.menus = response.menus.map(Menu.init) + self.name = response.name } init(response: BossStoreAroundInfoResponse) { @@ -49,6 +55,9 @@ struct Store: Equatable { self.categories = response.categories.map(StoreCategory.init) self.phoneNumber = nil self.snsUrl = nil + self.introduction = nil + self.menus = response.menus.map(Menu.init) + self.name = response.name } init( @@ -59,7 +68,10 @@ struct Store: Equatable { imageUrl: String? = nil, categories: [StoreCategory] = [], phoneNumber: String? = nil, - snsUrl: String? = nil + snsUrl: String? = nil, + introduction: String? = nil, + menus: [Menu] = [], + name: String = "" ) { self.id = id self.location = location @@ -69,5 +81,8 @@ struct Store: Equatable { self.categories = categories self.phoneNumber = phoneNumber self.snsUrl = snsUrl + self.introduction = introduction + self.menus = menus + self.name = name } } From 01c4532fc13b4d0d159a56898ab6135860e04f5d Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Thu, 28 Apr 2022 21:33:00 +0900 Subject: [PATCH 062/166] =?UTF-8?q?wip:=20=EB=A7=88=EC=9D=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=97=A4=EB=8D=94=20=EB=B0=94=EC=9D=B8?= =?UTF-8?q?=EB=94=A9=20=EB=B0=8F=20=EC=82=AC=EC=9E=A5=EB=8B=98=20=ED=95=9C?= =?UTF-8?q?=EB=A7=88=EB=94=94=20=ED=99=94=EB=A9=B4=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyStoreInfoCoordinator.swift | 14 ++++++ .../my/my-store-info/MyStoreInfoReactor.swift | 8 +++ .../MyStoreInfoViewController.swift | 49 ++++++++++++++++--- .../EditIntroductionCoordinator.swift | 9 +--- .../EditIntroductionReactor.swift | 4 +- .../EditIntroductionView.swift | 4 ++ .../EditIntroductionViewController.swift | 14 ++++-- .../cells/MyStoreInfoHeaderView.swift | 6 +-- .../cells/MyStoreInfoIntroductionCell.swift | 7 ++- .../strings/en.lproj/Localizations.strings | 7 ++- 10 files changed, 95 insertions(+), 27 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift index 29cadea..2769562 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -1,9 +1,23 @@ protocol MyStoreInfoCoordinator: AnyObject, BaseCoordinator { func pushEditStoreInfo(store: Store) + + func pushEditIntroduction(storeId: String, introduction: String?) } extension MyStoreInfoCoordinator { func pushEditStoreInfo(store: Store) { } + + func pushEditIntroduction(storeId: String, introduction: String?) { + let viewController = EditIntroductionViewController.instance( + storeId: storeId, + introduction: introduction + ) + + viewController.delegate = self as? EditIntroductionDelegate + self.presenter.parent? + .navigationController? + .pushViewController(viewController, animated: true) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index 0edecca..7dffedc 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -7,12 +7,14 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case viewDidLoad case tapEditStoreInfo case tapEditIntroduction + case updateIntroduction(String) case tapEditMenus case tapEditSchedule } enum Mutation { case setStore(Store) + case updateIntorudction(String) case pushEditStoreInfo(store: Store) case pushEditIntroduction(storeId: String, introduction: String?) case pushEditMenus @@ -47,6 +49,9 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { introduction: self.currentState.store.introduction )) + case .updateIntroduction(let introduction): + return .just(.updateIntorudction(introduction)) + case .tapEditMenus: return .empty() @@ -62,6 +67,9 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .setStore(let store): newState.store = store + case .updateIntorudction(let introduction): + newState.store.introduction = introduction + case .pushEditStoreInfo(let store): self.pushEditStoreInfoPublisher.accept(store) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 687f1a2..ca7d178 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -23,6 +23,8 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor } override func viewDidLoad() { + super.viewDidLoad() + self.setupDataSource() self.coordinator = self self.reactor = self.myStoreInfoReactor @@ -36,6 +38,17 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor self?.coordinator?.pushEditStoreInfo(store: store) }) .disposed(by: self.eventDisposeBag) + + self.myStoreInfoReactor.pushEditIntroductionPublisher + .debug() + .asDriver(onErrorJustReturn: ("", nil)) + .drive(onNext: { [weak self] storeId, introduction in + self?.coordinator?.pushEditIntroduction( + storeId: storeId, + introduction: introduction + ) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: MyStoreInfoReactor) { @@ -101,14 +114,28 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor for: indexPath ) as? MyStoreInfoHeaderView else { return UICollectionReusableView() } - headerView.rx.tapRightButton - .asDriver() - .drive(onNext: { [weak self] in - let viewController = EditIntroductionViewController.instance(storeId: "", introduction: nil) - - self?.parent?.navigationController?.pushViewController(viewController, animated: true) - }) - .disposed(by: headerView.disposeBag) + if indexPath.section == 1 { + headerView.titleLabel.text + = "my_store_info_header_introduction".localized + headerView.rightButton.setTitle( + "my_store_info_header_introduction_button".localized, + for: .normal + ) + headerView.rx.tapRightButton + .map { Reactor.Action.tapEditIntroduction } + .bind(to: self.myStoreInfoReactor.action) + .disposed(by: headerView.disposeBag) + } else if indexPath.section == 2 { + headerView.titleLabel.text = "my_store_info_header_menus".localized + headerView.rightButton.setTitle( + "my_store_info_header_menus_button".localized, + for: .normal + ) + headerView.rx.tapRightButton + .map { Reactor.Action.tapEditMenus } + .bind(to: self.myStoreInfoReactor.action) + .disposed(by: headerView.disposeBag) + } return headerView @@ -118,3 +145,9 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor } } } + +extension MyStoreInfoViewController: EditIntroductionDelegate { + func onUpdateIntroduction(introduction: String) { + self.myStoreInfoReactor.action.onNext(.updateIntroduction(introduction)) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift index ef97296..3422bd2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionCoordinator.swift @@ -1,12 +1,7 @@ protocol EditIntroductionCoordinator: AnyObject, BaseCoordinator { - func popWithIntroduction(introduction: String?) + } extension EditIntroductionCoordinator { - func popWithIntroduction(introduction: String?) { - if let delegate = self as? EditIntroductionDelegate { - delegate.onUpdateIntroduction(introduction: introduction) - } - self.presenter.navigationController?.popViewController(animated: true) - } + } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift index 07e9abb..70754ec 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift @@ -22,7 +22,7 @@ final class EditIntroductionReactor: BaseReactor, Reactor { } let initialState: State - let popupWithIntroductionPublisher = PublishRelay() + let popupWithIntroductionPublisher = PublishRelay() private let storeId: String private let storeService: StoreServiceProtocol @@ -86,7 +86,7 @@ final class EditIntroductionReactor: BaseReactor, Reactor { storeId: self.storeId, introduction: introduction ) - .map { _ in Mutation.setIntroduction(introduction) } + .map { _ in Mutation.popWishIntroduction(introduction) } .catch { return .merge([ .just(.showLoading(isShow: false)), diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift index e5981ca..1128695 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift @@ -115,6 +115,10 @@ final class EditIntroductionView: BaseView { make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom).offset(-64) } } + + func bind(introduction: String?) { + self.textView.text = introduction + } } extension Reactive where Base: EditIntroductionView { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift index 3e2dab4..cc0b615 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift @@ -3,10 +3,11 @@ import UIKit import ReactorKit protocol EditIntroductionDelegate: AnyObject { - func onUpdateIntroduction(introduction: String?) + func onUpdateIntroduction(introduction: String) } -final class EditIntroductionViewController: BaseViewController, View, EditIntroductionCoordinator { +final class EditIntroductionViewController: + BaseViewController, View, EditIntroductionCoordinator { weak var delegate: EditIntroductionDelegate? private let editIntroductionView = EditIntroductionView() private let editIntroductionReactor: EditIntroductionReactor @@ -16,7 +17,10 @@ final class EditIntroductionViewController: BaseViewController, View, EditIntrod return .darkContent } - static func instance(storeId: String, introduction: String?) -> EditIntroductionViewController { + static func instance( + storeId: String, + introduction: String? + ) -> EditIntroductionViewController { return EditIntroductionViewController( storeId: storeId, introduction: introduction @@ -33,6 +37,7 @@ final class EditIntroductionViewController: BaseViewController, View, EditIntrod ) super.init(nibName: nil, bundle: nil) + self.editIntroductionView.bind(introduction: introduction) } required init?(coder: NSCoder) { @@ -68,7 +73,8 @@ final class EditIntroductionViewController: BaseViewController, View, EditIntrod self.editIntroductionReactor.popupWithIntroductionPublisher .asDriver(onErrorJustReturn: "") .drive(onNext: { [weak self] introduction in - self?.coordinator?.popWithIntroduction(introduction: introduction) + self?.delegate?.onUpdateIntroduction(introduction: introduction) + self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift index fe27cf0..38355c0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoHeaderView.swift @@ -9,15 +9,13 @@ final class MyStoreInfoHeaderView: UICollectionReusableView { var disposeBag = DisposeBag() - private let titleLabel = UILabel().then { + let titleLabel = UILabel().then { $0.font = .extraBold(size: 18) $0.textColor = .gray95 - $0.text = "사장님 한마디" } - fileprivate let rightButton = UIButton().then { + let rightButton = UIButton().then { $0.setTitleColor(.green, for: .normal) - $0.setTitle("정보 수정", for: .normal) $0.titleLabel?.font = .bold(size: 12) } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift index c8aeb3a..3d852df 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift @@ -41,6 +41,11 @@ final class MyStoreInfoIntroductionCell: BaseCollectionViewCell { } func bind(introduction: String?) { - self.introductionLabel.text = introduction + if let introduction = introduction { + self.introductionLabel.text = introduction + } else { + self.introductionLabel.text = "my_store_info_introduction_placeholder".localized + } + } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index ec4c5f7..3d34a8d 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -27,7 +27,6 @@ "location_address_unknown" = "주소를 알 수 없는 위치입니다."; - // Signup "signup_title" = "회원가입"; "signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; @@ -62,6 +61,12 @@ "waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; "waiting_question_button" = "이메일로 문의하기"; +// My Store Info +"my_store_info_introduction_placeholder" = "손님들에게 하고 싶은 말을 적어주세요!\nex) 오전에 오시면 서비스가 있습니다!"; +"my_store_info_header_introduction" = "사장님 한마디"; +"my_store_info_header_introduction_button" = "정보 수정"; +"my_store_info_header_menus" = "메뉴 정보"; +"my_store_info_header_menus_button" = "메뉴 수정"; // Edit Introduction "edit_introduction_title" = "사장님 한마디 수정"; From 10bb19a2f7557f09302318740349bd3635147abc Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Fri, 29 Apr 2022 22:01:23 +0900 Subject: [PATCH 063/166] =?UTF-8?q?feat:=20=EB=A7=88=EC=9D=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EB=B2=84=ED=8A=BC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/my/MyPageView.swift | 39 ++++++++++++- .../domains/my/MyPageViewController.swift | 55 ++++++++----------- .../strings/en.lproj/Localizations.strings | 4 ++ 3 files changed, 64 insertions(+), 34 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift index c2cc18e..29ffe8c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift @@ -1,16 +1,26 @@ import UIKit +import RxSwift +import RxCocoa + final class MyPageView: BaseView { + fileprivate let tapTabPublisher = PublishSubject() + private let myStoreInfoButton = UIButton().then { - $0.setTitle("가게정보", for: .normal) - $0.setTitleColor(.gray95, for: .normal) + $0.setTitle("my_page_store_info".localized, for: .normal) + $0.setTitleColor(.gray30, for: .normal) + $0.setTitleColor(.gray95, for: .selected) $0.titleLabel?.font = .extraBold(size: 18) + $0.isSelected = true } private let statisticsButton = UIButton().then { - $0.setTitle("통계", for: .normal) + $0.setTitle("my_pate_statistics".localized, for: .normal) $0.setTitleColor(.gray95, for: .normal) + $0.setTitleColor(.gray30, for: .normal) + $0.setTitleColor(.gray95, for: .selected) $0.titleLabel?.font = .extraBold(size: 18) + $0.isSelected = false } let containerView = UIView() @@ -22,6 +32,23 @@ final class MyPageView: BaseView { self.statisticsButton, self.containerView ]) + self.myStoreInfoButton.rx.tap + .do(onNext: { [weak self] in + self?.myStoreInfoButton.isSelected = true + self?.statisticsButton.isSelected = false + }) + .map { _ in 0 } + .bind(to: self.tapTabPublisher) + .disposed(by: self.disposeBag) + + self.statisticsButton.rx.tap + .do(onNext: { [weak self] in + self?.myStoreInfoButton.isSelected = false + self?.statisticsButton.isSelected = true + }) + .map { _ in 1 } + .bind(to: self.tapTabPublisher) + .disposed(by: self.disposeBag) } override func bindConstraints() { @@ -43,3 +70,9 @@ final class MyPageView: BaseView { } } } + +extension Reactive where Base: MyPageView { + var tapTab: ControlEvent { + return ControlEvent(events: base.tapTabPublisher) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index 8dca956..aa96e19 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -4,7 +4,7 @@ final class MyPageViewController: BaseViewController { private let myPageView = MyPageView() private let pageViewController = UIPageViewController( - transitionStyle: .pageCurl, + transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil ) @@ -43,6 +43,21 @@ final class MyPageViewController: BaseViewController { self.setupPageViewController() } + override func bindEvent() { + self.myPageView.rx.tapTab + .asDriver() + .drive(onNext: { [weak self] index in + guard let self = self else { return } + self.pageViewController.setViewControllers( + [self.pageViewControllers[index]], + direction: .forward, + animated: false, + completion: nil + ) + }) + .disposed(by: self.eventDisposeBag) + } + private func setupPageViewController() { self.addChild(self.pageViewController) self.pageViewController.delegate = self @@ -57,6 +72,12 @@ final class MyPageViewController: BaseViewController { animated: false, completion: nil ) + + for view in self.pageViewController.view.subviews { + if let scrollView = view as? UIScrollView { + scrollView.isScrollEnabled = false + } + } } } @@ -65,41 +86,13 @@ extension MyPageViewController: UIPageViewControllerDelegate, UIPageViewControll _ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController ) -> UIViewController? { - guard let viewController = viewController as? UIViewController, - let index = self.pageViewControllers.firstIndex(of: viewController) else { - return nil - } - let previousIndex = index - 1 - - guard previousIndex >= 0 else { - return nil - } - - guard self.pageViewControllers.count > previousIndex else { - return nil - } - - return self.pageViewControllers[previousIndex] + return nil } func pageViewController( _ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController ) -> UIViewController? { - guard let viewController = viewController as? UIViewController, - let index = self.pageViewControllers.firstIndex(of: viewController) else { - return nil - } - let nextIndex = index + 1 - - guard nextIndex < self.pageViewControllers.count else { - return nil - } - - guard self.pageViewControllers.count > nextIndex else { - return nil - } - - return self.pageViewControllers[nextIndex] + return nil } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 3d34a8d..e22e005 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -61,6 +61,10 @@ "waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; "waiting_question_button" = "이메일로 문의하기"; +// My Page +"my_page_store_info" = "가제정보"; +"my_pate_statistics" = "통계"; + // My Store Info "my_store_info_introduction_placeholder" = "손님들에게 하고 싶은 말을 적어주세요!\nex) 오전에 오시면 서비스가 있습니다!"; "my_store_info_header_introduction" = "사장님 한마디"; From 7c22ae70c83ee815683895bf324dd16ee890fb70 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Fri, 29 Apr 2022 22:40:59 +0900 Subject: [PATCH 064/166] =?UTF-8?q?wip:=20=EB=8C=80=ED=91=9C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=88=98=EC=A0=95=20=ED=99=94=EB=A9=B4=20=EB=B7=B0?= =?UTF-8?q?=20=EA=B7=B8=EB=A6=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 20 +++ .../xcshareddata/swiftpm/Package.resolved | 2 +- .../MyStoreInfoCoordinator.swift | 4 + .../EditStoreInfoCoordinator.swift | 3 + .../edit-store-info/EditStoreInfoView.swift | 154 ++++++++++++++++++ .../EditStoreInfoViewController.swift | 35 ++++ .../strings/en.lproj/Localizations.strings | 5 + 7 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 087ae56..f783c44 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -74,6 +74,9 @@ 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */; }; 6E5F21342819778E00922A99 /* Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21332819778E00922A99 /* Menu.swift */; }; 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */; }; + 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */; }; + 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */; }; + 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */; }; 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */; }; 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */; }; @@ -242,6 +245,9 @@ 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoCoordinator.swift; sourceTree = ""; }; + 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoView.swift; sourceTree = ""; }; + 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoViewController.swift; sourceTree = ""; }; + 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoCoordinator.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageViewController.swift; sourceTree = ""; }; 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageView.swift; sourceTree = ""; }; @@ -505,6 +511,16 @@ path = map; sourceTree = ""; }; + 6E63FF69281C192A00EC49DE /* edit-store-info */ = { + isa = PBXGroup; + children = ( + 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */, + 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */, + 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */, + ); + path = "edit-store-info"; + sourceTree = ""; + }; 6E64B28127D836620055354B /* subviews */ = { isa = PBXGroup; children = ( @@ -530,6 +546,7 @@ 6E6C9C6C280BD92B009AFAE8 /* my-store-info */ = { isa = PBXGroup; children = ( + 6E63FF69281C192A00EC49DE /* edit-store-info */, 6E1AB79F280D7F1F0059DCF4 /* edit-introduction */, 6E6C9C6F280BDC3B009AFAE8 /* subviews */, 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */, @@ -977,6 +994,7 @@ 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, + 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */, @@ -988,6 +1006,7 @@ 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */, + 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */, 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, @@ -1062,6 +1081,7 @@ 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, 6E5F21342819778E00922A99 /* Menu.swift in Sources */, + 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */, 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6E1AB7AB280D92C70059DCF4 /* LocalTimeReq.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4831c31..f61da9a 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -68,7 +68,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", + "revision" : "14299050782ac18a40edac8e7369425c13998b68", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift index 2769562..01a6472 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -6,7 +6,11 @@ protocol MyStoreInfoCoordinator: AnyObject, BaseCoordinator { extension MyStoreInfoCoordinator { func pushEditStoreInfo(store: Store) { + let viewController = EditStoreInfoViewController.instance() + self.presenter.parent? + .navigationController? + .pushViewController(viewController, animated: true) } func pushEditIntroduction(storeId: String, introduction: String?) { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift new file mode 100644 index 0000000..e019423 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift @@ -0,0 +1,3 @@ +protocol EditStoreInfoCoordinator: AnyObject, BaseCoordinator { + +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift new file mode 100644 index 0000000..50da032 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -0,0 +1,154 @@ +import UIKit + +final class EditStoreInfoView: BaseView { + let backButton = UIButton().then { + $0.setImage(UIImage(named: "ic_back"), for: .normal) + } + + private let titleLabel = UILabel().then { + $0.font = .semiBold(size: 16) + $0.textColor = .gray100 + $0.text = "edit_store_info_title".localized + } + + private let scrollView = UIScrollView().then { + $0.backgroundColor = .clear + } + + private let containerView = UIView() + + private let roundedBackgroundView = UIView().then { + $0.backgroundColor = .white + $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + $0.layer.cornerRadius = 24 + $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor + $0.layer.shadowOpacity = 0.04 + } + + let storeNameField = SignupInputField( + title: "signup_store_name".localized, + isRequired: true, + description: "signup_store_name_description".localized, + placeholder: "signup_store_name_placeholder".localized + ).then { + $0.maxLength = 20 + } + + let phoneNumberField = SignupInputField( + title: "signup_phone_number_title".localized, + isRequired: true, + description: "signup_phone_number_description".localized, + placeholder: "signup_phone_number_placeholder".localized + ).then { + $0.keyboardType = .numberPad + $0.format = "XXX-XXXX-XXXX" + } + + let categoryCollectionView = SignupCategorySelectView() + + let photoView = SignupPhotoView() + + let snsField = SignupInputField( + title: "edit_store_info_sns".localized, + isRequired: false + ) + + let saveButton = UIButton().then { + $0.setTitle("edit_store_info_save".localized, for: .normal) + $0.titleLabel?.font = .medium(size: 16) + $0.setTitleColor(UIColor(r: 251, g: 251, b: 251), for: .normal) + $0.setBackgroundColor(color: .green, forState: .normal) + $0.setBackgroundColor(color: .gray30, forState: .disabled) + $0.isEnabled = false + } + + override func setup() { + self.backgroundColor = .gray0 + self.containerView.addSubViews([ + self.roundedBackgroundView, + self.storeNameField, + self.phoneNumberField, + self.categoryCollectionView, + self.photoView, + self.snsField + ]) + self.scrollView.addSubview(self.containerView) + self.addSubViews([ + self.backButton, + self.titleLabel, + self.scrollView, + self.saveButton + ]) + } + + override func bindConstraints() { + self.backButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(15) + make.width.height.equalTo(24) + } + + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(self.backButton) + } + + self.scrollView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.backButton.snp.bottom).offset(21) + make.bottom.equalTo(self.saveButton.snp.top) + } + + self.containerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.top.equalTo(self.roundedBackgroundView).priority(.high) + make.bottom.equalTo(self.roundedBackgroundView).priority(.high) + make.width.equalTo(UIScreen.main.bounds.width) + } + + self.roundedBackgroundView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalToSuperview().offset(28) + make.bottom.equalTo(self.snsField).offset(44) + } + + self.storeNameField.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalTo(self.roundedBackgroundView).offset(32) + } + + self.phoneNumberField.snp.makeConstraints { make in + make.left.equalTo(self.storeNameField) + make.right.equalTo(self.storeNameField) + make.top.equalTo(self.storeNameField.snp.bottom).offset(32) + } + + self.categoryCollectionView.snp.makeConstraints { make in + make.left.equalTo(self.storeNameField) + make.right.equalTo(self.storeNameField) + make.top.equalTo(self.phoneNumberField.snp.bottom).offset(32) + } + + self.photoView.snp.makeConstraints { make in + make.left.equalTo(self.storeNameField) + make.right.equalTo(self.storeNameField) + make.top.equalTo(self.categoryCollectionView.snp.bottom).offset(32) + } + + self.snsField.snp.makeConstraints { make in + make.left.equalTo(self.storeNameField) + make.right.equalTo(self.storeNameField) + make.top.equalTo(self.photoView.snp.bottom).offset(32) + } + + self.saveButton.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.height.equalTo(82) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift new file mode 100644 index 0000000..6655dfd --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift @@ -0,0 +1,35 @@ +import UIKit + +final class EditStoreInfoViewController: BaseViewController, EditStoreInfoCoordinator { + private let editStoreInfoView = EditStoreInfoView() + private weak var coordinator: EditStoreInfoCoordinator? + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + + static func instance() -> EditStoreInfoViewController { + return EditStoreInfoViewController(nibName: nil, bundle: nil).then { + $0.hidesBottomBarWhenPushed = true + } + } + + override func loadView() { + self.view = self.editStoreInfoView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.coordinator = self + } + + override func bindEvent() { + self.editStoreInfoView.backButton.rx.tap + .asDriver() + .drive(onNext: { [weak self] in + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index e22e005..da8761e 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -77,3 +77,8 @@ "edit_introduction_main_description" = "손님들에게 하고 싶은 말을\n적어주세요!"; "edit_introduction_sub_description" = "ex) 오전에 오시면 서비스가 있습니다 😋"; "edit_introdution_edit_button" = "저장하기"; + +// Edit Store Info +"edit_store_info_title" = "대표 정보 수정"; +"edit_store_info_sns" = "SNS"; +"edit_store_info_save" = "저장하기"; From 94a160dfd5b63889a7530bb9923c22c42b35bab6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 30 Apr 2022 16:59:23 +0900 Subject: [PATCH 065/166] =?UTF-8?q?feat:=20GlobalState=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20EditStoreInfoReactor=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 20 +- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../domains/home/HomeReactor.swift | 4 +- .../MyStoreInfoCoordinator.swift | 12 +- .../my/my-store-info/MyStoreInfoReactor.swift | 34 +-- .../MyStoreInfoViewController.swift | 21 +- .../EditIntroductionReactor.swift | 56 +++-- .../EditIntroductionViewController.swift | 30 +-- .../EditStoreInfoReactor.swift | 212 ++++++++++++++++++ .../edit-store-info/EditStoreInfoView.swift | 4 + .../EditStoreInfoViewController.swift | 14 +- .../domains/shared/GlobalState.swift | 9 + .../models/dto/request/MenuRequest.swift | 6 + .../request/PatchBossStoreInfoRequest.swift | 11 + .../models/presentation/Store.swift | 9 +- .../services/StoreService.swift | 27 +-- 16 files changed, 352 insertions(+), 119 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index f783c44..1eccdd7 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -30,11 +30,11 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; - 6E2073612800626B002D03C8 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; - 6E2073622800626B002D03C8 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; + 6E2CE46A2809A12E00FBBA3F /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; + 6E2CE46B2809A12E00FBBA3F /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; @@ -74,6 +74,8 @@ 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */; }; 6E5F21342819778E00922A99 /* Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21332819778E00922A99 /* Menu.swift */; }; 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */; }; + 6E5F3DCF281CEF2A002282B6 /* EditStoreInfoReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DCE281CEF2A002282B6 /* EditStoreInfoReactor.swift */; }; + 6E5F3DD2281D2200002282B6 /* GlobalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DD1281D2200002282B6 /* GlobalState.swift */; }; 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */; }; 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */; }; 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */; }; @@ -164,13 +166,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E2073632800626B002D03C8 /* Embed Frameworks */ = { + 6E2CE46C2809A12E00FBBA3F /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E2073622800626B002D03C8 /* Base.framework in Embed Frameworks */, + 6E2CE46B2809A12E00FBBA3F /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -245,6 +247,8 @@ 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoCoordinator.swift; sourceTree = ""; }; + 6E5F3DCE281CEF2A002282B6 /* EditStoreInfoReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoReactor.swift; sourceTree = ""; }; + 6E5F3DD1281D2200002282B6 /* GlobalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalState.swift; sourceTree = ""; }; 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoView.swift; sourceTree = ""; }; 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoViewController.swift; sourceTree = ""; }; 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoCoordinator.swift; sourceTree = ""; }; @@ -322,7 +326,7 @@ 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E2073612800626B002D03C8 /* Base.framework in Frameworks */, + 6E2CE46A2809A12E00FBBA3F /* Base.framework in Frameworks */, 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, @@ -494,6 +498,7 @@ children = ( 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */, 6E479461280AE42000A3D96C /* PaddingLabel.swift */, + 6E5F3DD1281D2200002282B6 /* GlobalState.swift */, ); path = shared; sourceTree = ""; @@ -517,6 +522,7 @@ 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */, 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */, 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */, + 6E5F3DCE281CEF2A002282B6 /* EditStoreInfoReactor.swift */, ); path = "edit-store-info"; sourceTree = ""; @@ -835,7 +841,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E2073632800626B002D03C8 /* Embed Frameworks */, + 6E2CE46C2809A12E00FBBA3F /* Embed Frameworks */, ); buildRules = ( ); @@ -1050,6 +1056,7 @@ 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6E5DCE6527FDB06600CA58EE /* Area.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, + 6E5F3DCF281CEF2A002282B6 /* EditStoreInfoReactor.swift in Sources */, 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */, 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */, @@ -1057,6 +1064,7 @@ 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, + 6E5F3DD2281D2200002282B6 /* GlobalState.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */, 6E1AB7A9280D928E0059DCF4 /* AppearanceDayRequest.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index f61da9a..4831c31 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -68,7 +68,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 87dd3ff..000cbbf 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -34,13 +34,13 @@ final class HomeReactor: BaseReactor, Reactor { let initialState = State() private let mapService: MapServiceProtocol - private let storeSerivce: StoreServiceProtocol + private let storeSerivce: StoreServiceType private let locationManager: LocationManagerProtocol private let backgroundTaskManager: BackgroundTaskManagerProtocol init( mapService: MapServiceProtocol, - storeService: StoreServiceProtocol, + storeService: StoreServiceType, locationManager: LocationManagerProtocol, backgroundTaskManager: BackgroundTaskManagerProtocol ) { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift index 01a6472..3a2f341 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -1,25 +1,21 @@ protocol MyStoreInfoCoordinator: AnyObject, BaseCoordinator { func pushEditStoreInfo(store: Store) - func pushEditIntroduction(storeId: String, introduction: String?) + func pushEditIntroduction(store: Store) } extension MyStoreInfoCoordinator { func pushEditStoreInfo(store: Store) { - let viewController = EditStoreInfoViewController.instance() + let viewController = EditStoreInfoViewController.instance(store: store) self.presenter.parent? .navigationController? .pushViewController(viewController, animated: true) } - func pushEditIntroduction(storeId: String, introduction: String?) { - let viewController = EditIntroductionViewController.instance( - storeId: storeId, - introduction: introduction - ) + func pushEditIntroduction(store: Store) { + let viewController = EditIntroductionViewController.instance(store: store) - viewController.delegate = self as? EditIntroductionDelegate self.presenter.parent? .navigationController? .pushViewController(viewController, animated: true) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index 7dffedc..60fa07e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -7,7 +7,6 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case viewDidLoad case tapEditStoreInfo case tapEditIntroduction - case updateIntroduction(String) case tapEditMenus case tapEditSchedule } @@ -16,7 +15,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case setStore(Store) case updateIntorudction(String) case pushEditStoreInfo(store: Store) - case pushEditIntroduction(storeId: String, introduction: String?) + case pushEditIntroduction(store: Store) case pushEditMenus case pushEditSchedule case showErrorAlert(Error) @@ -28,11 +27,16 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { let initialState = State() let pushEditStoreInfoPublisher = PublishRelay() - let pushEditIntroductionPublisher = PublishRelay<(String, String?)>() - private let storeService: StoreServiceProtocol + let pushEditIntroductionPublisher = PublishRelay() + private let storeService: StoreServiceType + private let globalState: GlobalState - init(storeService: StoreServiceProtocol) { + init( + storeService: StoreServiceType, + globalState: GlobalState + ) { self.storeService = storeService + self.globalState = globalState } func mutate(action: Action) -> Observable { @@ -44,13 +48,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { return .just(.pushEditStoreInfo(store: self.currentState.store)) case .tapEditIntroduction: - return .just(.pushEditIntroduction( - storeId: self.currentState.store.id, - introduction: self.currentState.store.introduction - )) - - case .updateIntroduction(let introduction): - return .just(.updateIntorudction(introduction)) + return .just(.pushEditIntroduction(store: self.currentState.store)) case .tapEditMenus: return .empty() @@ -60,6 +58,14 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { } } + func transform(mutation: Observable) -> Observable { + return .merge([ + mutation, + self.globalState.updateStorePublisher + .map { .setStore($0) } + ]) + } + func reduce(state: State, mutation: Mutation) -> State { var newState = state @@ -73,8 +79,8 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .pushEditStoreInfo(let store): self.pushEditStoreInfoPublisher.accept(store) - case .pushEditIntroduction(let storeId, let introduction): - self.pushEditIntroductionPublisher.accept((storeId, introduction)) + case .pushEditIntroduction(let store): + self.pushEditIntroductionPublisher.accept(store) case .pushEditMenus: break diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index ca7d178..e31a2f6 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -5,7 +5,10 @@ import RxDataSources final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoordinator { private let myStoreInfoView = MyStoreInfoView() - private let myStoreInfoReactor = MyStoreInfoReactor(storeService: StoreService()) + private let myStoreInfoReactor = MyStoreInfoReactor( + storeService: StoreService(), + globalState: GlobalState.shared + ) private weak var coordinator: MyStoreInfoCoordinator? private var myStoreInfoCollectionViewDataSource : RxCollectionViewSectionedReloadDataSource! @@ -40,13 +43,9 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor .disposed(by: self.eventDisposeBag) self.myStoreInfoReactor.pushEditIntroductionPublisher - .debug() - .asDriver(onErrorJustReturn: ("", nil)) - .drive(onNext: { [weak self] storeId, introduction in - self?.coordinator?.pushEditIntroduction( - storeId: storeId, - introduction: introduction - ) + .asDriver(onErrorJustReturn: Store()) + .drive(onNext: { [weak self] store in + self?.coordinator?.pushEditIntroduction(store: store) }) .disposed(by: self.eventDisposeBag) } @@ -145,9 +144,3 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor } } } - -extension MyStoreInfoViewController: EditIntroductionDelegate { - func onUpdateIntroduction(introduction: String) { - self.myStoreInfoReactor.action.onNext(.updateIntroduction(introduction)) - } -} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift index 70754ec..bcd8555 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift @@ -11,31 +11,31 @@ final class EditIntroductionReactor: BaseReactor, Reactor { enum Mutation { case setIntroduction(String?) case setEditButtonEnable(Bool) - case popWishIntroduction(String) + case pop case showLoading(isShow: Bool) case showErrorAlert(Error) } struct State { - var introduction: String? + var store: Store var isEditButtonEnable: Bool } let initialState: State - let popupWithIntroductionPublisher = PublishRelay() - private let storeId: String - private let storeService: StoreServiceProtocol + let popupPublisher = PublishRelay() + private let storeService: StoreServiceType + private let globalState: GlobalState init( - storeId: String, - storeService: StoreServiceProtocol, - introduction: String? = nil + store: Store, + storeService: StoreServiceType, + globlaState: GlobalState ) { - self.storeId = storeId self.storeService = storeService + self.globalState = globlaState self.initialState = State( - introduction: introduction, - isEditButtonEnable: introduction?.isEmpty == false + store: store, + isEditButtonEnable: !(store.introduction ?? "").isEmpty ) } @@ -48,11 +48,9 @@ final class EditIntroductionReactor: BaseReactor, Reactor { ]) case .tapEditButton: - guard let introduction = self.currentState.introduction else { return .empty() } - return .concat([ .just(.showLoading(isShow: true)), - self.updateStore(introduction: introduction), + self.updateStore(store: self.currentState.store), .just(.showLoading(isShow: false)) ]) } @@ -63,13 +61,13 @@ final class EditIntroductionReactor: BaseReactor, Reactor { switch mutation { case .setIntroduction(let introduction): - newState.introduction = introduction + newState.store.introduction = introduction case .setEditButtonEnable(let isEnable): newState.isEditButtonEnable = isEnable - case .popWishIntroduction(let introduction): - self.popupWithIntroductionPublisher.accept(introduction) + case .pop: + self.popupPublisher.accept(()) case .showLoading(let isShow): self.showLoadginPublisher.accept(isShow) @@ -81,17 +79,17 @@ final class EditIntroductionReactor: BaseReactor, Reactor { return newState } - private func updateStore(introduction: String) -> Observable { - return self.storeService.updateStore( - storeId: self.storeId, - introduction: introduction - ) - .map { _ in Mutation.popWishIntroduction(introduction) } - .catch { - return .merge([ - .just(.showLoading(isShow: false)), - .just(.showErrorAlert($0)) - ]) - } + private func updateStore(store: Store) -> Observable { + return self.storeService.updateStore(store: store) + .do(onNext: { [weak self] _ in + self?.globalState.updateStorePublisher.onNext(store) + }) + .map { _ in Mutation.pop } + .catch { + return .merge([ + .just(.showLoading(isShow: false)), + .just(.showErrorAlert($0)) + ]) + } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift index cc0b615..63bf698 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift @@ -2,13 +2,8 @@ import UIKit import ReactorKit -protocol EditIntroductionDelegate: AnyObject { - func onUpdateIntroduction(introduction: String) -} - final class EditIntroductionViewController: BaseViewController, View, EditIntroductionCoordinator { - weak var delegate: EditIntroductionDelegate? private let editIntroductionView = EditIntroductionView() private let editIntroductionReactor: EditIntroductionReactor private weak var coordinator: EditIntroductionCoordinator? @@ -17,27 +12,21 @@ final class EditIntroductionViewController: return .darkContent } - static func instance( - storeId: String, - introduction: String? - ) -> EditIntroductionViewController { - return EditIntroductionViewController( - storeId: storeId, - introduction: introduction - ).then { + static func instance(store: Store) -> EditIntroductionViewController { + return EditIntroductionViewController(store: store).then { $0.hidesBottomBarWhenPushed = true } } - init(storeId: String, introduction: String?) { + init(store: Store) { self.editIntroductionReactor = EditIntroductionReactor( - storeId: storeId, + store: store, storeService: StoreService(), - introduction: introduction + globlaState: GlobalState.shared ) super.init(nibName: nil, bundle: nil) - self.editIntroductionView.bind(introduction: introduction) + self.editIntroductionView.bind(introduction: store.introduction) } required init?(coder: NSCoder) { @@ -70,10 +59,9 @@ final class EditIntroductionViewController: }) .disposed(by: self.eventDisposeBag) - self.editIntroductionReactor.popupWithIntroductionPublisher - .asDriver(onErrorJustReturn: "") - .drive(onNext: { [weak self] introduction in - self?.delegate?.onUpdateIntroduction(introduction: introduction) + self.editIntroductionReactor.popupPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] _ in self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift new file mode 100644 index 0000000..b4e1415 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift @@ -0,0 +1,212 @@ +import UIKit + +import ReactorKit +import RxSwift +import RxCocoa + +final class EditStoreInfoReactor: BaseReactor, Reactor { + enum Action { + case viewDidLoad + case inputStoreName(String) + case inputPhoneNumber(String) + case selectCategory(index: Int) + case selectPhoto(UIImage) + case inputSNS(String) + case tapSave + } + + enum Mutation { + case setStoreName(String) + case setPhoneNumber(String) + case selectCategory(StoreCategory) + case deselectCategory(StoreCategory) + case setCategories([StoreCategory]) + case setPhoto(UIImage) + case setSNS(String) + case setSaveButtonEnable(Bool) + case pop + case showLoading(isShow: Bool) + case showErrorAlert(Error) + } + + struct State { + var store: Store + var categories: [StoreCategory] + var selectedCategories: [StoreCategory] + var photo: UIImage? + var isEnableSaveButton: Bool + } + + let initialState: State + let popPublisher = PublishRelay() + private let storeService: StoreServiceType + private let categoryService: CategoryServiceType + private let imageService: ImageServiceType + + init( + storeService: StoreService, + categoryService: CategoryServiceType, + imageService: ImageServiceType, + state: State = State( + store: Store(), + categories: [], + selectedCategories: [], + photo: nil, + isEnableSaveButton: false + ) + ) { + self.storeService = storeService + self.categoryService = categoryService + self.imageService = imageService + self.initialState = state + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + return self.fetchCategories() + + case .inputStoreName(let storeName): + return .merge([ + .just(.setStoreName(storeName)), + .just(.setSaveButtonEnable(self.validate(storeName: storeName))) + ]) + + case .inputPhoneNumber(let phoneNumber): + return .merge([ + .just(.setPhoneNumber(phoneNumber)), + .just(.setSaveButtonEnable(self.validate(phoneNumber: phoneNumber))) + ]) + + case .selectCategory(let index): + let selectedCategory = self.currentState.categories[index] + + if self.currentState.selectedCategories.contains(selectedCategory) { + return .just(.deselectCategory(selectedCategory)) + } else { + return .just(.selectCategory(selectedCategory)) + } + + case .selectPhoto(let photo): + return .merge([ + .just(.setPhoto(photo)), + .just(.setSaveButtonEnable(self.validate(photo: photo))) + ]) + + case .inputSNS(let sns): + return .just(.setSNS(sns)) + + case .tapSave: + return .empty() + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setStoreName(let storeName): + newState.store.name = storeName + + case .setPhoneNumber(let phoneNumber): + newState.store.phoneNumber = phoneNumber + + case .selectCategory(let category): + newState.selectedCategories.append(category) + + case .deselectCategory(let category): + if let targetIndex = state.selectedCategories.firstIndex(of: category) { + newState.selectedCategories.remove(at: targetIndex) + } + + case .setCategories(let categories): + newState.categories = categories + + case .setPhoto(let photo): + newState.photo = photo + + case .setSNS(let sns): + newState.store.snsUrl = sns + + case .setSaveButtonEnable(let isEnable): + newState.isEnableSaveButton = isEnable + + case .pop: + self.popPublisher.accept(()) + + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func fetchCategories() -> Observable { + return self.categoryService.fetchCategories() + .map { $0.map(StoreCategory.init(response: )) } + .map { .setCategories($0) } + .catch { .just(.showErrorAlert($0)) } + } + + private func validate( + storeName: String? = nil, + phoneNumber: String? = nil, + photo: UIImage? = nil + ) -> Bool { + let storeName = storeName ?? self.currentState.store.name + let phoneNumber = phoneNumber ?? self.currentState.store.phoneNumber + let photo = photo ?? self.currentState.photo + let originalPhoto = self.currentState.store.imageUrl + + return !storeName.isEmpty + && !(phoneNumber ?? "").isEmpty + && photo != nil + || !(originalPhoto ?? "").isEmpty + } + + private func updateStore(store: Store, image: UIImage?) -> Observable { + if let image = image { + let updateImageAndStoreObservable + = self.imageService.uploadImage(image: image, fileType: .store) + .flatMap { [weak self] imageResponse -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + + var newStore = self.currentState.store + newStore.imageUrl = imageResponse.imageUrl + + return self.storeService.updateStore(store: newStore) + .map { _ in .pop } + } + .catch { + return .merge([ + .just(.showErrorAlert($0)), + .just(.showLoading(isShow: false)) + ]) + } + + return .concat([ + .just(.showLoading(isShow: true)), + updateImageAndStoreObservable, + .just(.showLoading(isShow: false)) + ]) + } else { + let updateStoreObservable = self.storeService.updateStore(store: store) + .map { _ in Mutation.pop } + .catch { + return .merge([ + .just(.showErrorAlert($0)), + .just(.showLoading(isShow: false)) + ]) + } + + return .concat([ + .just(.showLoading(isShow: true)), + updateStoreObservable, + .just(.showLoading(isShow: false)) + ]) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift index 50da032..5902d9b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -151,4 +151,8 @@ final class EditStoreInfoView: BaseView { make.height.equalTo(82) } } + + func bind(store: Store) { + + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift index 6655dfd..6c8276f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift @@ -8,12 +8,22 @@ final class EditStoreInfoViewController: BaseViewController, EditStoreInfoCoordi return .darkContent } - static func instance() -> EditStoreInfoViewController { - return EditStoreInfoViewController(nibName: nil, bundle: nil).then { + static func instance(store: Store) -> EditStoreInfoViewController { + return EditStoreInfoViewController(store: store).then { $0.hidesBottomBarWhenPushed = true } } + init(store: Store) { + super.init(nibName: nil, bundle: nil) + + self.editStoreInfoView.bind(store: store) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override func loadView() { self.view = self.editStoreInfoView } diff --git a/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift b/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift new file mode 100644 index 0000000..5093b32 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift @@ -0,0 +1,9 @@ +import Foundation +import RxSwift + +final class GlobalState { + static let shared = GlobalState() + + /// 가게 정보 업데이트 리스너 + let updateStorePublisher = PublishSubject() +} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift index 7899104..ab105d4 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/MenuRequest.swift @@ -13,6 +13,12 @@ struct MenuRequest: Encodable { case price } + init(menu: Menu) { + self.groupName = "" + self.imageUrl = menu.imageUrl + self.name = menu.name + self.price = menu.price + } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) diff --git a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift index d700514..9dd0e0b 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift @@ -41,6 +41,17 @@ struct PatchBossStoreInfoRequest: Encodable { self.snsUrl = snsUrl } + init(store: Store) { + self.appearanceDays = [] + self.categoriesIds = store.categories.map { $0.categoryId } + self.contactsNumber = store.phoneNumber + self.imageUrl = store.imageUrl + self.introduction = store.introduction + self.menus = store.menus.map(MenuRequest.init(menu:)) + self.name = store.name + self.snsUrl = store.snsUrl + } + func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 0b05adb..2a8aeb1 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -12,7 +12,14 @@ struct Store: Equatable { var snsUrl: String? var introduction: String? let menus: [Menu] - let name: String + var name: String + + var isValid: Bool { + return !(self.imageUrl ?? "").isEmpty + && !(self.phoneNumber ?? "").isEmpty + && !(self.imageUrl ?? "").isEmpty + && !self.name.isEmpty + } init(response: BossStoreInfoResponse) { self.id = response.bossStoreId diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 79ea208..8eb6fa7 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -3,7 +3,7 @@ import CoreLocation import RxSwift import Alamofire -protocol StoreServiceProtocol { +protocol StoreServiceType { func fetchMyStore() -> Observable func openStore(storeId: String, location: CLLocation) -> Observable @@ -15,13 +15,10 @@ protocol StoreServiceProtocol { distance: Int ) -> Observable<[BossStoreAroundInfoResponse]> - func updateStore( - storeId: String, - introduction: String? - ) -> Observable + func updateStore(store: Store) -> Observable } -struct StoreService: StoreServiceProtocol { +struct StoreService: StoreServiceType { func fetchMyStore() -> Observable { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store" @@ -119,23 +116,11 @@ struct StoreService: StoreServiceProtocol { } } - func updateStore( - storeId: String, - introduction: String? - ) -> Observable { + func updateStore(store: Store) -> Observable { return .create { observer in - let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store/\(storeId)" + let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store/\(store.id)" let headers = HTTPUtils.defaultHeader() - let parameters = PatchBossStoreInfoRequest( - appearanceDays: nil, - categoriesIds: nil, - contactsNumber: nil, - imageUrl: nil, - introduction: introduction, - menus: nil, - name: nil, - snsUrl: nil - ) + let parameters = PatchBossStoreInfoRequest(store: store) HTTPUtils.defaultSession.request( urlString, From 2e55c52969c660a728b1e04062ab69a1eb651bdc Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 30 Apr 2022 20:59:38 +0900 Subject: [PATCH 066/166] =?UTF-8?q?feat:=20=EB=8C=80=ED=91=9C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=88=98=EC=A0=95=20=ED=99=94=EB=A9=B4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/base/BaseCoordinator.swift | 18 +- .../signup/subviews/SignupInputField.swift | 4 + .../signup/subviews/SignupPhotoView.swift | 4 + .../signup/subviews/SignupTextField.swift | 4 + .../EditStoreInfoCoordinator.swift | 92 +++++++++ .../EditStoreInfoReactor.swift | 83 +++++--- .../edit-store-info/EditStoreInfoView.swift | 60 ++++++ .../EditStoreInfoViewController.swift | 192 +++++++++++++++++- .../extensions/ObserverExtensions.swift | 10 +- 9 files changed, 424 insertions(+), 43 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift index feb65a3..3c54d7a 100644 --- a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift @@ -24,11 +24,19 @@ extension BaseCoordinator where Self: BaseViewController { func showErrorAlert(error: Error) { - AlertUtils.showWithAction( - viewController: self, - message: error.localizedDescription, - onTapOk: nil - ) + if let localizedError = error as? LocalizedError { + AlertUtils.showWithAction( + viewController: self, + message: localizedError.errorDescription, + onTapOk: nil + ) + } else { + AlertUtils.showWithAction( + viewController: self, + message: error.localizedDescription, + onTapOk: nil + ) + } } func openURL(url: String) { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift index 7e0266c..98fd409 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift @@ -93,6 +93,10 @@ final class SignupInputField: BaseView { make.bottom.equalTo(self.textField).priority(.high) } } + + func setText(text: String?) { + self.textField.setText(text: text) + } } extension Reactive where Base: SignupInputField { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift index b193942..bc32fb7 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift @@ -98,6 +98,10 @@ final class SignupPhotoView: BaseView { make.bottom.equalTo(self.containerView).priority(.high) } } + + func setImage(imageUrl: String?) { + self.imageView.setImage(urlString: imageUrl) + } } extension Reactive where Base: SignupPhotoView { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift index ef78ac1..aa5ffd0 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -63,6 +63,10 @@ final class SignupTextField: BaseView { } } + func setText(text: String?) { + self.textField.text = text + } + fileprivate func format(with mask: String, text: String) -> String { let numbers = text.replacingOccurrences(of: "[^0-9]", with: "", options: .regularExpression) var result = "" diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift index e019423..50fdc8c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift @@ -1,3 +1,95 @@ +import UIKit +import PhotosUI + +import SPPermissions +import SPPermissionsPhotoLibrary +import SPPermissionsCamera +import CropViewController + protocol EditStoreInfoCoordinator: AnyObject, BaseCoordinator { + func showPhotoActionSheet() + func showCamera() + + func showAlbumPicker() + + func presentPhotoCrop(photo: UIImage) +} + +extension EditStoreInfoCoordinator where Self: BaseViewController { + func showPhotoActionSheet() { + let alert = UIAlertController( + title: "이미지 불러오기", + message: nil, + preferredStyle: .actionSheet + ) + let libraryAction = UIAlertAction( + title: "앨범", + style: .default + ) { _ in + if SPPermissions.Permission.photoLibrary.authorized { + self.showAlbumPicker() + } else { + let controller = SPPermissions.native([.photoLibrary]) + + controller.delegate = self as? SPPermissionsDelegate + controller.present(on: self) + } + } + let cameraAction = UIAlertAction( + title: "카메라", + style: .default + ) { _ in + if SPPermissions.Permission.camera.authorized { + self.showCamera() + } else { + let controller = SPPermissions.native([.camera]) + + controller.delegate = self as? SPPermissionsDelegate + controller.present(on: self) + } + } + let cancelAction = UIAlertAction( + title: "취소", + style: .cancel, + handler: nil + ) + + alert.addAction(libraryAction) + alert.addAction(cameraAction) + alert.addAction(cancelAction) + self.presenter.present(alert, animated: true) + } + + func showCamera() { + let imagePicker = UIImagePickerController().then { + $0.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate + $0.sourceType = .camera + $0.cameraCaptureMode = .photo + } + + self.presenter.present(imagePicker, animated: true) + } + + func showAlbumPicker() { + var configuration = PHPickerConfiguration() + + configuration.filter = .images + + let picker = PHPickerViewController(configuration: configuration) + + picker.delegate = self as? PHPickerViewControllerDelegate + self.presenter.present(picker, animated: true, completion: nil) + } + + func presentPhotoCrop(photo: UIImage) { + let cropViewController = CropViewController(image: photo) + + cropViewController.customAspectRatio = CGSize(width: 2.227, height: 1) + cropViewController.aspectRatioLockEnabled = true + cropViewController.aspectRatioPickerButtonHidden = true + cropViewController.resetButtonHidden = true + cropViewController.delegate = self as? CropViewControllerDelegate + self.present(cropViewController, animated: true, completion: nil) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift index b4e1415..64c7217 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift @@ -10,6 +10,7 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { case inputStoreName(String) case inputPhoneNumber(String) case selectCategory(index: Int) + case deselectCategory(index: Int) case selectPhoto(UIImage) case inputSNS(String) case tapSave @@ -19,6 +20,9 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { case setStoreName(String) case setPhoneNumber(String) case selectCategory(StoreCategory) + + /// 기존에 선택되어있는 카테고리 선택해주기 + case selectCategories([Int]) case deselectCategory(StoreCategory) case setCategories([StoreCategory]) case setPhoto(UIImage) @@ -32,33 +36,35 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { struct State { var store: Store var categories: [StoreCategory] - var selectedCategories: [StoreCategory] var photo: UIImage? var isEnableSaveButton: Bool } let initialState: State let popPublisher = PublishRelay() + let selectCategoriesPublisher = PublishRelay<[Int]>() private let storeService: StoreServiceType private let categoryService: CategoryServiceType private let imageService: ImageServiceType + private let globalState: GlobalState init( + store: Store, storeService: StoreService, categoryService: CategoryServiceType, imageService: ImageServiceType, - state: State = State( - store: Store(), - categories: [], - selectedCategories: [], - photo: nil, - isEnableSaveButton: false - ) + globalState: GlobalState ) { self.storeService = storeService self.categoryService = categoryService self.imageService = imageService - self.initialState = state + self.globalState = globalState + self.initialState = State( + store: store, + categories: [], + photo: nil, + isEnableSaveButton: false + ) } func mutate(action: Action) -> Observable { @@ -81,23 +87,21 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { case .selectCategory(let index): let selectedCategory = self.currentState.categories[index] - if self.currentState.selectedCategories.contains(selectedCategory) { - return .just(.deselectCategory(selectedCategory)) - } else { - return .just(.selectCategory(selectedCategory)) - } + return .just(.selectCategory(selectedCategory)) + + case .deselectCategory(let index): + let deselectedCategory = self.currentState.categories[index] + + return .just(.deselectCategory(deselectedCategory)) case .selectPhoto(let photo): - return .merge([ - .just(.setPhoto(photo)), - .just(.setSaveButtonEnable(self.validate(photo: photo))) - ]) + return .just(.setPhoto(photo)) case .inputSNS(let sns): return .just(.setSNS(sns)) case .tapSave: - return .empty() + return self.updateStore(store: self.currentState.store, image: self.currentState.photo) } } @@ -112,11 +116,14 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { newState.store.phoneNumber = phoneNumber case .selectCategory(let category): - newState.selectedCategories.append(category) + newState.store.categories.append(category) + + case .selectCategories(let indexes): + self.selectCategoriesPublisher.accept(indexes) case .deselectCategory(let category): - if let targetIndex = state.selectedCategories.firstIndex(of: category) { - newState.selectedCategories.remove(at: targetIndex) + if let targetIndex = state.store.categories.firstIndex(of: category) { + newState.store.categories.remove(at: targetIndex) } case .setCategories(let categories): @@ -147,24 +154,26 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { private func fetchCategories() -> Observable { return self.categoryService.fetchCategories() .map { $0.map(StoreCategory.init(response: )) } - .map { .setCategories($0) } + .flatMap { [weak self] categories -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + let selectedCategoryIndexes = self.getSelectedCateogriesIndex(categories: categories) + + return .merge([ + .just(.setCategories(categories)), + .just(.selectCategories(selectedCategoryIndexes)) + ]) + } .catch { .just(.showErrorAlert($0)) } } private func validate( storeName: String? = nil, - phoneNumber: String? = nil, - photo: UIImage? = nil + phoneNumber: String? = nil ) -> Bool { let storeName = storeName ?? self.currentState.store.name let phoneNumber = phoneNumber ?? self.currentState.store.phoneNumber - let photo = photo ?? self.currentState.photo - let originalPhoto = self.currentState.store.imageUrl - return !storeName.isEmpty - && !(phoneNumber ?? "").isEmpty - && photo != nil - || !(originalPhoto ?? "").isEmpty + return !storeName.isEmpty && !(phoneNumber ?? "").isEmpty } private func updateStore(store: Store, image: UIImage?) -> Observable { @@ -178,6 +187,9 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { newStore.imageUrl = imageResponse.imageUrl return self.storeService.updateStore(store: newStore) + .do(onNext: { _ in + self.globalState.updateStorePublisher.onNext(newStore) + }) .map { _ in .pop } } .catch { @@ -194,6 +206,9 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { ]) } else { let updateStoreObservable = self.storeService.updateStore(store: store) + .do(onNext: { [weak self] _ in + self?.globalState.updateStorePublisher.onNext(store) + }) .map { _ in Mutation.pop } .catch { return .merge([ @@ -209,4 +224,10 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { ]) } } + + private func getSelectedCateogriesIndex(categories: [StoreCategory]) -> [Int] { + let currentCategories = self.currentState.store.categories + + return currentCategories.map { categories.firstIndex(of: $0) ?? 0 } + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift index 5902d9b..b9e35ec 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -1,6 +1,8 @@ import UIKit final class EditStoreInfoView: BaseView { + let tapBackground = UITapGestureRecognizer() + let backButton = UIButton().then { $0.setImage(UIImage(named: "ic_back"), for: .normal) } @@ -62,7 +64,13 @@ final class EditStoreInfoView: BaseView { $0.isEnabled = false } + deinit { + NotificationCenter.default.removeObserver(self) + } + override func setup() { + self.roundedBackgroundView.addGestureRecognizer(self.tapBackground) + self.setupKeyboardEvent() self.backgroundColor = .gray0 self.containerView.addSubViews([ self.roundedBackgroundView, @@ -79,6 +87,13 @@ final class EditStoreInfoView: BaseView { self.scrollView, self.saveButton ]) + self.tapBackground.rx.event + .map { _ in Void() } + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.endEditing(true) + }) + .disposed(by: self.disposeBag) } override func bindConstraints() { @@ -153,6 +168,51 @@ final class EditStoreInfoView: BaseView { } func bind(store: Store) { + self.storeNameField.setText(text: store.name) + self.phoneNumberField.setText(text: store.phoneNumber) + self.photoView.setImage(imageUrl: store.imageUrl) + self.snsField.setText(text: store.snsUrl) + } + + func selectCategories(indexes: [Int]) { + for index in indexes { + self.categoryCollectionView.categoryCollectionView.selectItem( + at: IndexPath(row: index, section: 0), + animated: true, + scrollPosition: .centeredVertically + ) + } + } + + private func setupKeyboardEvent() { + NotificationCenter.default.addObserver( + self, + selector: #selector(onShowKeyboard(notification:)), + name: UIResponder.keyboardWillShowNotification, + object: nil + ) + NotificationCenter.default.addObserver( + self, + selector: #selector(onHideKeyboard(notification:)), + name: UIResponder.keyboardWillHideNotification, + object: nil + ) + } + + @objc func onShowKeyboard(notification: NSNotification) { + let userInfo = notification.userInfo! + var keyboardFrame + = (userInfo[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue + keyboardFrame = self.convert(keyboardFrame, from: nil) + + var contentInset = self.scrollView.contentInset + contentInset.bottom = keyboardFrame.size.height + 10 + self.scrollView.contentInset = contentInset + } + + @objc func onHideKeyboard(notification: NSNotification) { + let contentInset:UIEdgeInsets = UIEdgeInsets.zero + self.scrollView.contentInset = contentInset } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift index 6c8276f..9bc906f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift @@ -1,7 +1,14 @@ import UIKit +import PhotosUI -final class EditStoreInfoViewController: BaseViewController, EditStoreInfoCoordinator { +import ReactorKit +import Base +import SPPermissions +import CropViewController + +final class EditStoreInfoViewController: BaseViewController, View, EditStoreInfoCoordinator { private let editStoreInfoView = EditStoreInfoView() + private let editStoreInfoReactor: EditStoreInfoReactor private weak var coordinator: EditStoreInfoCoordinator? override var preferredStatusBarStyle: UIStatusBarStyle { @@ -15,6 +22,13 @@ final class EditStoreInfoViewController: BaseViewController, EditStoreInfoCoordi } init(store: Store) { + self.editStoreInfoReactor = EditStoreInfoReactor( + store: store, + storeService: StoreService(), + categoryService: CategoryService(), + imageService: ImageService(), + globalState: GlobalState.shared + ) super.init(nibName: nil, bundle: nil) self.editStoreInfoView.bind(store: store) @@ -32,6 +46,8 @@ final class EditStoreInfoViewController: BaseViewController, EditStoreInfoCoordi super.viewDidLoad() self.coordinator = self + self.reactor = self.editStoreInfoReactor + self.editStoreInfoReactor.action.onNext(.viewDidLoad) } override func bindEvent() { @@ -41,5 +57,179 @@ final class EditStoreInfoViewController: BaseViewController, EditStoreInfoCoordi self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) + + self.editStoreInfoView.photoView.rx.tapUploadButton + .asDriver() + .drive(onNext: { [weak self] in + self?.coordinator?.showPhotoActionSheet() + }) + .disposed(by: self.eventDisposeBag) + + self.editStoreInfoReactor.popPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + + self.editStoreInfoReactor.selectCategoriesPublisher + .asDriver(onErrorJustReturn: []) + .drive(onNext: { [weak self] indexes in + self?.editStoreInfoView.selectCategories(indexes: indexes) + }) + .disposed(by: self.eventDisposeBag) + + self.editStoreInfoReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.editStoreInfoReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) + } + + func bind(reactor: EditStoreInfoReactor) { + // Bind Action + self.editStoreInfoView.storeNameField.rx.text + .map { Reactor.Action.inputStoreName($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editStoreInfoView.phoneNumberField.rx.text + .map { Reactor.Action.inputPhoneNumber($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editStoreInfoView.categoryCollectionView.categoryCollectionView.rx.itemSelected + .map { Reactor.Action.selectCategory(index: $0.row) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editStoreInfoView.categoryCollectionView.categoryCollectionView.rx.itemDeselected + .map { Reactor.Action.deselectCategory(index: $0.row) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editStoreInfoView.snsField.rx.text + .map { Reactor.Action.inputSNS($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editStoreInfoView.saveButton.rx.tap + .map { Reactor.Action.tapSave } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind State + reactor.state + .map { $0.categories } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .do(onNext: { [weak self] categories in + self?.editStoreInfoView.categoryCollectionView.updateCollectionViewHeight( + categories: categories + ) + }) + .drive(self.editStoreInfoView.categoryCollectionView.categoryCollectionView.rx.items( + cellIdentifier: SignupCategoryCollectionViewCell.registerID, + cellType: SignupCategoryCollectionViewCell.self + )) { row, category, cell in + cell.bind(category: category) + } + .disposed(by: self.disposeBag) + + reactor.state + .map { $0.isEnableSaveButton } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.editStoreInfoView.saveButton.rx.isEnabled) + .disposed(by: self.disposeBag) + + reactor.state + .compactMap { $0.photo } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: nil) + .drive(self.editStoreInfoView.photoView.rx.photo) + .disposed(by: self.disposeBag) + } +} + +extension EditStoreInfoViewController: + UIImagePickerControllerDelegate & UINavigationControllerDelegate +{ + func imagePickerController( + _ picker: UIImagePickerController, + didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] + ) { + if let photo = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { + picker.dismiss(animated: true) { [weak self] in + self?.coordinator?.presentPhotoCrop(photo: photo) + } + } else { + picker.dismiss(animated: true, completion: nil) + } + } +} + +extension EditStoreInfoViewController: SPPermissionsDelegate { + func didAllowPermission(_ permission: SPPermissions.Permission) { + if permission == .camera { + self.coordinator?.showCamera() + } else if permission == .photoLibrary { + self.coordinator?.showAlbumPicker() + } + } + + func didDeniedPermission(_ permission: SPPermissions.Permission) { + AlertUtils.showWithCancel( + viewController: self, + title: "authorization_denied_title".localized, + message: "authorization_denied_description".localized, + okButtonTitle: "authorization_setting".localized + ) { + guard let url = URL(string: UIApplication.openSettingsURLString) else { return } + if UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url) + } + } + } +} + +extension EditStoreInfoViewController: PHPickerViewControllerDelegate { + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + let itemProvider = results.first?.itemProvider + + if let itemProvider = itemProvider, + itemProvider.canLoadObject(ofClass: UIImage.self) { + itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in + if let photo = image as? UIImage { + DispatchQueue.main.async { [weak self] in + picker.dismiss(animated: true) { + self?.coordinator?.presentPhotoCrop(photo: photo) + } + } + } + } + } else { + // TODO: Handle empty results or item provider not being able load UIImage + } + } +} + +extension EditStoreInfoViewController: CropViewControllerDelegate { + func cropViewController( + _ cropViewController: CropViewController, + didCropToImage image: UIImage, + withRect cropRect: CGRect, + angle: Int + ) { + cropViewController.dismiss(animated: true, completion: nil) + self.editStoreInfoReactor.action.onNext(.selectPhoto(image)) } } diff --git a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift index f45b62c..6f729d2 100644 --- a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift @@ -4,15 +4,13 @@ import Base extension AnyObserver { func processHTTPError(response: AFDataResponse) { - if let statusCode = response.response?.statusCode { + if let errorResponse = response.value as? ResponseContainer { + self.onError(BaseError.custom(errorResponse.message)) + } else if let statusCode = response.response?.statusCode { if let httpError = HTTPError(rawValue: statusCode) { self.onError(httpError) } else { - if let value = response.value as? ResponseContainer { - self.onError(BaseError.custom(value.message)) - } else { - self.onError(BaseError.unknown) - } + self.onError(BaseError.unknown) } } else { switch response.result { From 241a94daf92d1d34ccdd3a23fa71998cbcd40c33 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 2 May 2022 22:29:11 +0900 Subject: [PATCH 067/166] =?UTF-8?q?wip:=20=EC=9D=BC=EC=A0=95=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 56 ++++++ .../domains/base/BaseTableViewCell.swift | 14 ++ .../signup/subviews/SignupTextField.swift | 2 +- .../MyStoreInfoCoordinator.swift | 10 + .../my/my-store-info/MyStoreInfoReactor.swift | 9 +- .../MyStoreInfoViewController.swift | 29 ++- .../EditScheduleCoordinator.swift | 3 + .../edit-schedule/EditScheduleReactor.swift | 23 +++ .../edit-schedule/EditScheduleView.swift | 112 +++++++++++ .../EditScheduleViewController.swift | 55 ++++++ .../subviews/WeekDayStackView.swift | 187 ++++++++++++++++++ .../cells/EditScheduleTableViewCell.swift | 133 +++++++++++++ .../cells/MyStoreInfoWorkDayCell.swift | 4 + .../extensions/UIColorExtensions.swift | 6 + .../models/dto/response/LocalTimeRes.swift | 2 +- .../models/dto/response/TimeInterval.swift | 2 +- .../models/presentation/AppearanceDay.swift | 11 ++ .../MyStoreInfoSectionModel.swift | 7 + .../models/presentation/Store.swift | 7 +- .../strings/en.lproj/Localizations.strings | 10 + 20 files changed, 673 insertions(+), 9 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 1eccdd7..7a442cd 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -69,6 +69,7 @@ 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */; }; 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */; }; 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */; }; + 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */; }; 6E5F212D281976B200922A99 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212C281976B200922A99 /* Differentiator */; }; 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212E281976B200922A99 /* RxDataSources */; }; 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */; }; @@ -76,6 +77,11 @@ 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */; }; 6E5F3DCF281CEF2A002282B6 /* EditStoreInfoReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DCE281CEF2A002282B6 /* EditStoreInfoReactor.swift */; }; 6E5F3DD2281D2200002282B6 /* GlobalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DD1281D2200002282B6 /* GlobalState.swift */; }; + 6E5F3DD5281D5F39002282B6 /* EditScheduleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DD4281D5F39002282B6 /* EditScheduleView.swift */; }; + 6E5F3DD8281D611C002282B6 /* WeekDayStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DD7281D611C002282B6 /* WeekDayStackView.swift */; }; + 6E5F3DDA281D6150002282B6 /* EditScheduleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DD9281D6150002282B6 /* EditScheduleViewController.swift */; }; + 6E5F3DDC281D61AA002282B6 /* EditScheduleCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DDB281D61AA002282B6 /* EditScheduleCoordinator.swift */; }; + 6E5F3DDE281D6435002282B6 /* AppearanceDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F3DDD281D6435002282B6 /* AppearanceDay.swift */; }; 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */; }; 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */; }; 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */; }; @@ -97,6 +103,8 @@ 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; + 6E89A865281E5A3300B795EF /* EditScheduleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */; }; + 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; @@ -244,11 +252,17 @@ 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreMenuResponse.swift; sourceTree = ""; }; 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponse.swift; sourceTree = ""; }; 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenStatus.swift; sourceTree = ""; }; + 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleReactor.swift; sourceTree = ""; }; 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoCoordinator.swift; sourceTree = ""; }; 6E5F3DCE281CEF2A002282B6 /* EditStoreInfoReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoReactor.swift; sourceTree = ""; }; 6E5F3DD1281D2200002282B6 /* GlobalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalState.swift; sourceTree = ""; }; + 6E5F3DD4281D5F39002282B6 /* EditScheduleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleView.swift; sourceTree = ""; }; + 6E5F3DD7281D611C002282B6 /* WeekDayStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeekDayStackView.swift; sourceTree = ""; }; + 6E5F3DD9281D6150002282B6 /* EditScheduleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleViewController.swift; sourceTree = ""; }; + 6E5F3DDB281D61AA002282B6 /* EditScheduleCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleCoordinator.swift; sourceTree = ""; }; + 6E5F3DDD281D6435002282B6 /* AppearanceDay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceDay.swift; sourceTree = ""; }; 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoView.swift; sourceTree = ""; }; 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoViewController.swift; sourceTree = ""; }; 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoCoordinator.swift; sourceTree = ""; }; @@ -270,6 +284,8 @@ 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategory.swift; sourceTree = ""; }; 6E808CAD27F016CF00C46459 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cpqyhqxhepkpbfajpzjhmdywgxbk/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; + 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleTableViewCell.swift; sourceTree = ""; }; + 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewCell.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -355,6 +371,7 @@ 6E142D6327D785B50084480C /* BaseView.swift */, 6E473B9727D8624300232139 /* BaseCoordinator.swift */, 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */, + 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */, ); path = base; sourceTree = ""; @@ -516,6 +533,27 @@ path = map; sourceTree = ""; }; + 6E5F3DD3281D5F10002282B6 /* edit-schedule */ = { + isa = PBXGroup; + children = ( + 6E5F3DD6281D60F9002282B6 /* subviews */, + 6E5F3DD4281D5F39002282B6 /* EditScheduleView.swift */, + 6E5F3DD9281D6150002282B6 /* EditScheduleViewController.swift */, + 6E5F3DDB281D61AA002282B6 /* EditScheduleCoordinator.swift */, + 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */, + ); + path = "edit-schedule"; + sourceTree = ""; + }; + 6E5F3DD6281D60F9002282B6 /* subviews */ = { + isa = PBXGroup; + children = ( + 6E89A862281E5A2300B795EF /* cells */, + 6E5F3DD7281D611C002282B6 /* WeekDayStackView.swift */, + ); + path = subviews; + sourceTree = ""; + }; 6E63FF69281C192A00EC49DE /* edit-store-info */ = { isa = PBXGroup; children = ( @@ -552,6 +590,7 @@ 6E6C9C6C280BD92B009AFAE8 /* my-store-info */ = { isa = PBXGroup; children = ( + 6E5F3DD3281D5F10002282B6 /* edit-schedule */, 6E63FF69281C192A00EC49DE /* edit-store-info */, 6E1AB79F280D7F1F0059DCF4 /* edit-introduction */, 6E6C9C6F280BDC3B009AFAE8 /* subviews */, @@ -582,6 +621,14 @@ path = cells; sourceTree = ""; }; + 6E89A862281E5A2300B795EF /* cells */ = { + isa = PBXGroup; + children = ( + 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E9F995227E7018D00C95C41 /* waiting */ = { isa = PBXGroup; children = ( @@ -775,6 +822,7 @@ 6EBF1AE827FE6A980011268B /* Store.swift */, 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */, 6E5F21332819778E00922A99 /* Menu.swift */, + 6E5F3DDD281D6435002282B6 /* AppearanceDay.swift */, ); path = presentation; sourceTree = ""; @@ -999,7 +1047,9 @@ 6E1AB7AD280D966D0059DCF4 /* MenuRequest.swift in Sources */, 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, + 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, + 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */, 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, @@ -1020,6 +1070,7 @@ 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, + 6E5F3DDE281D6435002282B6 /* AppearanceDay.swift in Sources */, 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */, 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, @@ -1043,11 +1094,14 @@ 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */, + 6E5F3DD5281D5F39002282B6 /* EditScheduleView.swift in Sources */, 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, + 6E5F3DDC281D61AA002282B6 /* EditScheduleCoordinator.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, + 6E5F3DD8281D611C002282B6 /* WeekDayStackView.swift in Sources */, 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */, 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, @@ -1070,6 +1124,7 @@ 6E1AB7A9280D928E0059DCF4 /* AppearanceDayRequest.swift in Sources */, 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */, + 6E89A865281E5A3300B795EF /* EditScheduleTableViewCell.swift in Sources */, 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, @@ -1082,6 +1137,7 @@ 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, + 6E5F3DDA281D6150002282B6 /* EditScheduleViewController.swift in Sources */, 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */, 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6E1AB7A5280D8B040059DCF4 /* EditIntroductionReactor.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift new file mode 100644 index 0000000..1bb6b02 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift @@ -0,0 +1,14 @@ +import UIKit + +import Base +import RxSwift + +class BaseTableViewCell: Base.BaseTableViewCell { + var disposeBag = DisposeBag() + + override func prepareForReuse() { + super.prepareForReuse() + + self.disposeBag = DisposeBag() + } +} diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift index aa5ffd0..c8cad01 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -26,7 +26,7 @@ final class SignupTextField: BaseView { $0.textColor = .gray100 } - init(placeholder: String?) { + init(placeholder: String? = nil) { super.init(frame: .zero) self.setPlaceholder(placeholder: placeholder) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift index 3a2f341..92812d2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -2,6 +2,8 @@ protocol MyStoreInfoCoordinator: AnyObject, BaseCoordinator { func pushEditStoreInfo(store: Store) func pushEditIntroduction(store: Store) + + func pushEditSchedule(store: Store) } extension MyStoreInfoCoordinator { @@ -20,4 +22,12 @@ extension MyStoreInfoCoordinator { .navigationController? .pushViewController(viewController, animated: true) } + + func pushEditSchedule(store: Store) { + let viewController = EditScheduleViewController.instance(store: store) + + self.presenter.parent? + .navigationController? + .pushViewController(viewController, animated: true) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index 60fa07e..bc3c521 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -17,7 +17,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case pushEditStoreInfo(store: Store) case pushEditIntroduction(store: Store) case pushEditMenus - case pushEditSchedule + case pushEditSchedule(store: Store) case showErrorAlert(Error) } @@ -28,6 +28,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { let initialState = State() let pushEditStoreInfoPublisher = PublishRelay() let pushEditIntroductionPublisher = PublishRelay() + let pushEditSchedulePublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState @@ -54,7 +55,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { return .empty() case .tapEditSchedule: - return .empty() + return .just(.pushEditSchedule(store: self.currentState.store)) } } @@ -85,8 +86,8 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .pushEditMenus: break - case .pushEditSchedule: - break + case .pushEditSchedule(let store): + self.pushEditSchedulePublisher.accept(store) case .showErrorAlert(let error): self.showErrorAlert.accept(error) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index e31a2f6..4a46f97 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -48,6 +48,13 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor self?.coordinator?.pushEditIntroduction(store: store) }) .disposed(by: self.eventDisposeBag) + + self.myStoreInfoReactor.pushEditSchedulePublisher + .asDriver(onErrorJustReturn: Store()) + .drive(onNext: { [weak self] store in + self?.coordinator?.pushEditSchedule(store: store) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: MyStoreInfoReactor) { @@ -56,7 +63,8 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor .map { [ MyStoreInfoSectionModel(store: $0.store), MyStoreInfoSectionModel(introduction: $0.store.introduction), - MyStoreInfoSectionModel(menus: $0.store.menus) + MyStoreInfoSectionModel(menus: $0.store.menus), + MyStoreInfoSectionModel(appearanceDays: $0.store.appearanceDays) ] } .distinctUntilChanged() .asDriver(onErrorJustReturn: []) @@ -100,6 +108,15 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor ) as? MyStoreInfoWorkDayCell else { return BaseCollectionViewCell() } return cell + + case .appearanceDay(let appearanceDay): + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, + for: indexPath + ) as? MyStoreInfoWorkDayCell else { return BaseCollectionViewCell() } + + cell.bind(appearanceDay: appearanceDay) + return cell } }) @@ -134,6 +151,16 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor .map { Reactor.Action.tapEditMenus } .bind(to: self.myStoreInfoReactor.action) .disposed(by: headerView.disposeBag) + } else { + headerView.titleLabel.text = "my_store_info_header_appearance_day".localized + headerView.rightButton.setTitle( + "my_store_info_header_appearance_day_button".localized, + for: .normal + ) + headerView.rx.tapRightButton + .map { Reactor.Action.tapEditSchedule } + .bind(to: self.myStoreInfoReactor.action) + .disposed(by: headerView.disposeBag) } return headerView diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleCoordinator.swift new file mode 100644 index 0000000..88be8d3 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleCoordinator.swift @@ -0,0 +1,3 @@ +protocol EditScheduleCoordinator: AnyObject, BaseCoordinator { + +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift new file mode 100644 index 0000000..fff6163 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift @@ -0,0 +1,23 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class EditScheduleReactor: Reactor { + enum Action { + + } + + enum Mutation { + + } + + struct State { + + } + + let initialState: State + + init(state: State) { + self.initialState = state + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift new file mode 100644 index 0000000..675fe03 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift @@ -0,0 +1,112 @@ +import UIKit + +final class EditScheduleView: BaseView { + let backButton = UIButton().then { + $0.setImage(UIImage(named: "ic_back"), for: .normal) + } + + private let titleLabel = UILabel().then { + $0.font = .semiBold(size: 16) + $0.textColor = .gray100 + $0.text = "edit_schedule_title".localized + } + + private let mainDescriptionLabel = UILabel().then { + $0.font = .regular(size: 24) + $0.textColor = .black + + let string = "edit_schedule_main_description".localized + let attributedString = NSMutableAttributedString(string: string) + + attributedString.addAttribute( + .font, + value: UIFont.bold(size: 24) as Any, + range: (string as NSString).range(of: "영업 요일") + ) + $0.attributedText = attributedString + } + + private let subDescriptionLabel = UILabel().then { + $0.font = .regular(size: 14) + $0.textColor = .black + $0.text = "edit_schedule_sub_description".localized + } + + private let weekDayStackView = WeekDayStackView() + + let tableView = UITableView().then { + $0.tableFooterView = UIView() + $0.separatorStyle = .none + $0.backgroundColor = .clear + $0.register( + EditScheduleTableViewCell.self, + forCellReuseIdentifier: EditScheduleTableViewCell.registerId + ) + $0.rowHeight = EditScheduleTableViewCell.size.height + } + + let saveButton = UIButton().then { + $0.setTitle("edit_schedule_save".localized, for: .normal) + $0.titleLabel?.font = .medium(size: 16) + $0.setTitleColor(UIColor(r: 251, g: 251, b: 251), for: .normal) + $0.setBackgroundColor(color: .green, forState: .normal) + $0.setBackgroundColor(color: .gray30, forState: .disabled) + } + + override func setup() { + self.backgroundColor = .gray0 + self.addSubViews([ + self.backButton, + self.titleLabel, + self.mainDescriptionLabel, + self.subDescriptionLabel, + self.weekDayStackView, + self.tableView, + self.saveButton + ]) + } + + override func bindConstraints() { + self.backButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(15) + make.width.equalTo(24) + make.height.equalTo(24) + } + + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(self.backButton) + } + + self.mainDescriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.backButton.snp.bottom).offset(53) + } + + self.subDescriptionLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.mainDescriptionLabel.snp.bottom).offset(4) + } + + self.weekDayStackView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalTo(self.subDescriptionLabel.snp.bottom).offset(16) + } + + self.tableView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalTo(self.weekDayStackView.snp.bottom).offset(24) + make.bottom.equalTo(self.saveButton.snp.top) + } + + self.saveButton.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom).offset(-64) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift new file mode 100644 index 0000000..9312f3e --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift @@ -0,0 +1,55 @@ +import UIKit + +final class EditScheduleViewController: BaseViewController, EditScheduleCoordinator { + private let editScheduleView = EditScheduleView() + private weak var coordinator: EditScheduleCoordinator? + + static func instance(store: Store) -> EditScheduleViewController { + return EditScheduleViewController(store: store).then { + $0.hidesBottomBarWhenPushed = true + } + } + + init(store: Store) { + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func loadView() { + self.view = self.editScheduleView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.coordinator = self + self.editScheduleView.tableView.dataSource = self + } + + override func bindEvent() { + self.editScheduleView.backButton.rx.tap + .asDriver() + .drive(onNext: { [weak self] in + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + } +} + +extension EditScheduleViewController: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 3 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell( + withIdentifier: EditScheduleTableViewCell.registerId, + for: indexPath + ) as? EditScheduleTableViewCell else { return BaseTableViewCell() } + + return cell + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift new file mode 100644 index 0000000..71601a7 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift @@ -0,0 +1,187 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class WeekDayStackView: BaseView { + fileprivate let tapPublisher = PublishSubject() + + private let stackView = UIStackView().then { + $0.axis = .horizontal + $0.distribution = .equalSpacing + } + + private let mondayButton = weekDayButton().then { + $0.setTitle("월", for: .normal) + } + + private let tuesdayButton = weekDayButton().then { + $0.setTitle("화", for: .normal) + } + + private let wednesdayButton = weekDayButton().then { + $0.setTitle("수", for: .normal) + } + + private let thursdayButton = weekDayButton().then { + $0.setTitle("목", for: .normal) + } + + private let fridayButton = weekDayButton().then { + $0.setTitle("금", for: .normal) + } + + private let saturdayButton = weekDayButton().then { + $0.setTitle("토", for: .normal) + } + + private let sundayButton = weekDayButton().then { + $0.setTitle("일", for: .normal) + } + + override func setup() { + self.stackView.addArrangedSubview(self.mondayButton) + self.stackView.addArrangedSubview(self.tuesdayButton) + self.stackView.addArrangedSubview(self.wednesdayButton) + self.stackView.addArrangedSubview(self.thursdayButton) + self.stackView.addArrangedSubview(self.fridayButton) + self.stackView.addArrangedSubview(self.saturdayButton) + self.stackView.addArrangedSubview(self.sundayButton) + self.addSubViews([ + self.stackView + ]) + self.mondayButton.rx.tap + .map { DayOfTheWeek.monday } + .do(onNext: { [weak self] _ in + self?.mondayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.tuesdayButton.rx.tap + .map { DayOfTheWeek.tuesday } + .do(onNext: { [weak self] _ in + self?.tuesdayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.wednesdayButton.rx.tap + .map { DayOfTheWeek.wednesday } + .do(onNext: { [weak self] _ in + self?.wednesdayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.thursdayButton.rx.tap + .map { DayOfTheWeek.thursday } + .do(onNext: { [weak self] _ in + self?.thursdayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.fridayButton.rx.tap + .map { DayOfTheWeek.friday } + .do(onNext: { [weak self] _ in + self?.fridayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.saturdayButton.rx.tap + .map { DayOfTheWeek.saturday } + .do(onNext: { [weak self] _ in + self?.saturdayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.sundayButton.rx.tap + .map { DayOfTheWeek.sunday } + .do(onNext: { [weak self] _ in + self?.sundayButton.isSelected.toggle() + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + } + + override func bindConstraints() { + self.stackView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(38) + } + + self.mondayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.tuesdayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.wednesdayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.thursdayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.fridayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.saturdayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.sundayButton.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(38) + } + + self.snp.makeConstraints { make in + make.top.equalTo(self.stackView).priority(.high) + make.bottom.equalTo(self.stackView).priority(.high) + } + } + + private class weekDayButton: UIButton { + override var isSelected: Bool { + didSet { + self.layer.borderWidth = isSelected ? 0 : 1 + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + + self.layer.cornerRadius = 19 + self.layer.borderWidth = 1 + self.layer.borderColor = UIColor(r: 226, g: 226, b: 226).cgColor + self.setBackgroundColor(color: .gray10, forState: .normal) + self.setBackgroundColor(color: .black, forState: .selected) + self.setTitleColor(.gray40, for: .normal) + self.setTitleColor(.white, for: .selected) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + } +} + +extension Reactive where Base: WeekDayStackView { + var tap: ControlEvent { + return ControlEvent(events: base.tapPublisher) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift new file mode 100644 index 0000000..3203c64 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift @@ -0,0 +1,133 @@ +import UIKit + +final class EditScheduleTableViewCell: BaseTableViewCell { + static let registerId = "\(EditScheduleTableViewCell.self)" + static let size = CGSize( + width: UIScreen.main.bounds.width - 48, + height: 224 + ) + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 16 + $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor + $0.layer.shadowOpacity = 0.04 + } + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 16) + $0.textColor = .black + $0.text = "화요일" + $0.setContentHuggingPriority(.required, for: .horizontal) + } + + private let workTimeLabel = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.font = .regular(size: 12) + $0.layer.cornerRadius = 11 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor.green.cgColor + $0.textColor = .green + $0.text = "edit_schedule_work_time".localized + } + + private let startTimeField = SignupTextField() + + private let dashLabel = UILabel().then { + $0.text = "~" + $0.font = .regular(size: 14) + $0.textAlignment = .center + $0.textColor = .black + } + + private let endTimeField = SignupTextField() + + private let locationLabel = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.font = .regular(size: 12) + $0.layer.cornerRadius = 11 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor.green.cgColor + $0.textColor = .green + $0.text = "edit_schedule_location".localized + } + + private let locationField = SignupTextField() + + override func setup() { + self.backgroundColor = .clear + self.selectionStyle = .none + self.addSubViews([ + self.containerView, + self.titleLabel, + self.workTimeLabel, + self.startTimeField, + self.dashLabel, + self.endTimeField, + self.locationLabel, + self.locationField + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview().offset(16) + make.right.equalToSuperview().offset(-24) + make.bottom.equalTo(self.locationField).offset(16) + make.bottom.equalToSuperview() + } + + self.titleLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.top.equalTo(self.containerView).offset(16) + } + + self.workTimeLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.titleLabel) + make.left.equalTo(self.titleLabel.snp.right).offset(18) + make.height.equalTo(22) + } + + self.startTimeField.snp.makeConstraints { make in + make.left.equalTo(self.workTimeLabel) + make.width.equalTo(100) + make.top.equalTo(self.workTimeLabel.snp.bottom).offset(8) + make.height.equalTo(48) + } + + self.endTimeField.snp.makeConstraints { make in + make.right.equalTo(self.containerView).offset(-16) + make.centerY.equalTo(self.startTimeField) + make.top.equalTo(self.startTimeField) + make.bottom.equalTo(self.startTimeField) + make.width.equalTo(100) + } + + self.dashLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.startTimeField) + make.left.equalTo(self.startTimeField.snp.right) + make.right.equalTo(self.endTimeField.snp.left) + } + + self.locationLabel.snp.makeConstraints { make in + make.left.equalTo(self.workTimeLabel) + make.height.equalTo(22) + make.top.equalTo(self.startTimeField.snp.bottom).offset(20) + } + + self.locationField.snp.makeConstraints { make in + make.left.equalTo(self.startTimeField) + make.right.equalTo(self.endTimeField) + make.height.equalTo(48) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift index e1c98d0..75853ae 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift @@ -61,4 +61,8 @@ final class MyStoreInfoWorkDayCell: BaseCollectionViewCell { make.top.equalTo(self.timeLabel.snp.bottom).offset(2) } } + + func bind(appearanceDay: AppearanceDay) { + + } } diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index a227790..4387d84 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -7,9 +7,15 @@ extension UIColor { /// r: 244, g: 244, b: 244 static let gray5 = UIColor(r: 244, g: 244, b: 244) + /// r: 226, g: 226, b: 226 + static let gray10 = UIColor(r: 226, g: 226, b: 226) + /// r: 183, g: 183, b: 183 static let gray30 = UIColor(r: 183, g: 183, b: 183) + /// r: 150, g: 150, b: 150 + static let gray40 = UIColor(r: 150, g: 150, b: 150) + /// r: 120, g: 120, b: 120 static let gray50 = UIColor(r: 120, g: 120, b: 120) diff --git a/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift b/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift index 0ed087b..05516af 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift @@ -1,4 +1,4 @@ -struct LocalTimeRes: Decodable { +struct LocalTimeRes: Decodable, Equatable { let hour: Int let minute: Int let nano: Int diff --git a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift index d250f56..e225637 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift @@ -1,4 +1,4 @@ -struct TimeInterval: Decodable { +struct TimeInterval: Decodable, Equatable { let endTime: LocalTimeRes let startTime: LocalTimeRes diff --git a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift new file mode 100644 index 0000000..9bdc99e --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift @@ -0,0 +1,11 @@ +struct AppearanceDay: Equatable { + let dayOfTheWeek: DayOfTheWeek + let locationDescription: String + let openingHours: TimeInterval + + init(response: BossStoreAppearanceDayResponse) { + self.dayOfTheWeek = response.dayOfTheWeek + self.locationDescription = response.locationDescription + self.openingHours = response.openingHours + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift index 174ee5f..ae35bae 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift @@ -11,6 +11,7 @@ extension MyStoreInfoSectionModel: SectionModelType { case overview(Store) case introduction(String?) case menu(Menu) + case appearanceDay(AppearanceDay) } init(original: MyStoreInfoSectionModel, items: [Item]) { @@ -31,4 +32,10 @@ extension MyStoreInfoSectionModel: SectionModelType { self.items = menus } + + init(appearanceDays: [AppearanceDay]) { + let appearanceDays = appearanceDays.map { SectionItemType.appearanceDay($0) } + + self.items = appearanceDays + } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 2a8aeb1..4f9e62e 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -13,6 +13,7 @@ struct Store: Equatable { var introduction: String? let menus: [Menu] var name: String + var appearanceDays: [AppearanceDay] var isValid: Bool { return !(self.imageUrl ?? "").isEmpty @@ -42,6 +43,7 @@ struct Store: Equatable { self.introduction = response.introduction self.menus = response.menus.map(Menu.init) self.name = response.name + self.appearanceDays = response.appearanceDays.map(AppearanceDay.init) } init(response: BossStoreAroundInfoResponse) { @@ -65,6 +67,7 @@ struct Store: Equatable { self.introduction = nil self.menus = response.menus.map(Menu.init) self.name = response.name + self.appearanceDays = [] } init( @@ -78,7 +81,8 @@ struct Store: Equatable { snsUrl: String? = nil, introduction: String? = nil, menus: [Menu] = [], - name: String = "" + name: String = "", + appearanceDays: [AppearanceDay] = [] ) { self.id = id self.location = location @@ -91,5 +95,6 @@ struct Store: Equatable { self.introduction = introduction self.menus = menus self.name = name + self.appearanceDays = appearanceDays } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index da8761e..08c1a1e 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -71,6 +71,8 @@ "my_store_info_header_introduction_button" = "정보 수정"; "my_store_info_header_menus" = "메뉴 정보"; "my_store_info_header_menus_button" = "메뉴 수정"; +"my_store_info_header_appearance_day" = "영업 일정"; +"my_store_info_header_appearance_day_button" = "일정 관리"; // Edit Introduction "edit_introduction_title" = "사장님 한마디 수정"; @@ -82,3 +84,11 @@ "edit_store_info_title" = "대표 정보 수정"; "edit_store_info_sns" = "SNS"; "edit_store_info_save" = "저장하기"; + +// Edit Schedule +"edit_schedule_title" = "일정 관리"; +"edit_schedule_main_description" = "영업 요일을 선택해주세요!"; +"edit_schedule_sub_description" = "선택하지 않은 요일은 휴무로 표시됩니다."; +"edit_schedule_work_time" = "영업 시간"; +"edit_schedule_location" = "출몰 지역"; +"edit_schedule_save" = "저장하기"; From a2bc4b39f809a5ab0cfe610d874a78b822443a86 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Fri, 6 May 2022 14:32:53 +0900 Subject: [PATCH 068/166] =?UTF-8?q?wip:=20=EC=9D=BC=EC=A0=95=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20Reactor=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../edit-schedule/EditScheduleReactor.swift | 106 +++++++++++++++++- .../edit-schedule/EditScheduleView.swift | 2 +- .../EditScheduleViewController.swift | 57 +++++++--- .../subviews/WeekDayStackView.swift | 17 +++ .../cells/EditScheduleTableViewCell.swift | 22 +++- .../models/dto/response/DayOfTheWeek.swift | 25 +++++ .../models/dto/response/LocalTimeRes.swift | 11 ++ .../models/dto/response/TimeInterval.swift | 9 +- .../models/presentation/AppearanceDay.swift | 45 +++++++- .../strings/en.lproj/Localizations.strings | 9 ++ 12 files changed, 280 insertions(+), 37 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 7a442cd..3f7326e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -33,8 +33,6 @@ 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; - 6E2CE46A2809A12E00FBBA3F /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; - 6E2CE46B2809A12E00FBBA3F /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; @@ -113,6 +111,8 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; + 6EBCE5802824E6BE00F07294 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; + 6EBCE5812824E6BE00F07294 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE627FE65950011268B /* StoreService.swift */; }; 6EBF1AE927FE6A980011268B /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE827FE6A980011268B /* Store.swift */; }; 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; @@ -174,13 +174,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E2CE46C2809A12E00FBBA3F /* Embed Frameworks */ = { + 6EBCE5822824E6BE00F07294 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E2CE46B2809A12E00FBBA3F /* Base.framework in Embed Frameworks */, + 6EBCE5812824E6BE00F07294 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -342,7 +342,7 @@ 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E2CE46A2809A12E00FBBA3F /* Base.framework in Frameworks */, + 6EBCE5802824E6BE00F07294 /* Base.framework in Frameworks */, 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, @@ -889,7 +889,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E2CE46C2809A12E00FBBA3F /* Embed Frameworks */, + 6EBCE5822824E6BE00F07294 /* Embed Frameworks */, ); buildRules = ( ); diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4831c31..f61da9a 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -68,7 +68,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", + "revision" : "14299050782ac18a40edac8e7369425c13998b68", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift index fff6163..1610c43 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift @@ -1,23 +1,117 @@ +import Foundation + import ReactorKit import RxSwift import RxCocoa -final class EditScheduleReactor: Reactor { +final class EditScheduleReactor: BaseReactor, Reactor { enum Action { - + case tapDayOfTheWeek(DayOfTheWeek) + case inputStartTime(day: DayOfTheWeek, time: Date) + case inputEndTime(day: DayOfTheWeek, time: Date) + case inputLocation(day: DayOfTheWeek, location: String) } enum Mutation { - + case addDayOfWeek(DayOfTheWeek) + case removeDayOfWeek(DayOfTheWeek) + case setStartTime(day: DayOfTheWeek, time: Date) + case setEndTime(day: DayOfTheWeek, time: Date) + case setLocation(day: DayOfTheWeek, location: String) + case pop } struct State { - + var store: Store } let initialState: State + let popPublisher = PublishRelay() + private let storeService: StoreServiceType + private let globlaState: GlobalState + + init( + store: Store, + storeService: StoreServiceType, + globalState: GlobalState + ) { + self.initialState = State(store: store) + self.storeService = storeService + self.globlaState = globalState + } + + func mutate(action: Action) -> Observable { + switch action { + case .tapDayOfTheWeek(let dayOfWeek): + let isContainsDayOfWeek = self.currentState.store.appearanceDays.contains { + $0.dayOfTheWeek == dayOfWeek + } + + if isContainsDayOfWeek { + return .just(.removeDayOfWeek(dayOfWeek)) + } else { + return .just(.addDayOfWeek(dayOfWeek)) + } + + case .inputStartTime(let day, let time): + return .just(.setStartTime(day: day, time: time)) + + case .inputEndTime(let day, let time): + return .just(.setEndTime(day: day, time: time)) + + case .inputLocation(let day, let location): + return .just(.setLocation(day: day, location: location)) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .addDayOfWeek(let dayOfTheWeek): + let appearanceDay = AppearanceDay(dayOfTheWeek: dayOfTheWeek) + + newState.store.appearanceDays.append(appearanceDay) + newState.store.appearanceDays.sort() + + case .removeDayOfWeek(let dayOfTheWeek): + let firstIndex = state.store.appearanceDays.firstIndex { + $0.dayOfTheWeek == dayOfTheWeek + } + + if let firstIndex = firstIndex { + newState.store.appearanceDays.remove(at: firstIndex) + } + newState.store.appearanceDays.sort() + + case .setStartTime(let dayOfTheWeek, let time): + if let index = self.getIndex(of: dayOfTheWeek) { + newState.store.appearanceDays[index].openingHours.startTime + = LocalTimeRes(date: time) + } + + case .setEndTime(let dayOfTheWeek, let time): + if let index = self.getIndex(of: dayOfTheWeek) { + newState.store.appearanceDays[index].openingHours.endTime + = LocalTimeRes(date: time) + } + + case .setLocation(let dayOfTheWeek, let location): + if let index = self.getIndex(of: dayOfTheWeek) { + newState.store.appearanceDays[index].locationDescription = location + } + + case .pop: + self.globlaState.updateStorePublisher.onNext(self.currentState.store) + self.popPublisher.accept(()) + } + + return newState + } - init(state: State) { - self.initialState = state + private func getIndex(of dayOfTheWeek: DayOfTheWeek) -> Int? { + return self.currentState.store.appearanceDays.firstIndex { + $0.dayOfTheWeek == dayOfTheWeek + } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift index 675fe03..0612acd 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift @@ -32,7 +32,7 @@ final class EditScheduleView: BaseView { $0.text = "edit_schedule_sub_description".localized } - private let weekDayStackView = WeekDayStackView() + let weekDayStackView = WeekDayStackView() let tableView = UITableView().then { $0.tableFooterView = UIView() diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift index 9312f3e..4ee89a6 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift @@ -1,7 +1,11 @@ import UIKit -final class EditScheduleViewController: BaseViewController, EditScheduleCoordinator { +import ReactorKit + +final class EditScheduleViewController: + BaseViewController, View, EditScheduleCoordinator { private let editScheduleView = EditScheduleView() + private let editScheduleReactor: EditScheduleReactor private weak var coordinator: EditScheduleCoordinator? static func instance(store: Store) -> EditScheduleViewController { @@ -11,6 +15,11 @@ final class EditScheduleViewController: BaseViewController, EditScheduleCoordina } init(store: Store) { + self.editScheduleReactor = EditScheduleReactor( + store: store, + storeService: StoreService(), + globalState: GlobalState.shared + ) super.init(nibName: nil, bundle: nil) } @@ -26,7 +35,7 @@ final class EditScheduleViewController: BaseViewController, EditScheduleCoordina super.viewDidLoad() self.coordinator = self - self.editScheduleView.tableView.dataSource = self + self.reactor = self.editScheduleReactor } override func bindEvent() { @@ -36,20 +45,40 @@ final class EditScheduleViewController: BaseViewController, EditScheduleCoordina self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) - } -} - -extension EditScheduleViewController: UITableViewDataSource { - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 3 + + self.editScheduleReactor.popPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) } - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - guard let cell = tableView.dequeueReusableCell( - withIdentifier: EditScheduleTableViewCell.registerId, - for: indexPath - ) as? EditScheduleTableViewCell else { return BaseTableViewCell() } + func bind(reactor: EditScheduleReactor) { + // Bind Action + self.editScheduleView.weekDayStackView.rx.tap + .map { Reactor.Action.tapDayOfTheWeek($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind State + reactor.state + .map { $0.store.appearanceDays.map { $0.dayOfTheWeek } } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.editScheduleView.weekDayStackView.rx.selectedDay) + .disposed(by: self.disposeBag) - return cell + reactor.state + .map { $0.store.appearanceDays } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.editScheduleView.tableView.rx.items( + cellIdentifier: EditScheduleTableViewCell.registerId, + cellType: EditScheduleTableViewCell.self + )) { row, appearanceDay, cell in + cell.bind(appearanceDay: appearanceDay) + } + .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift index 71601a7..af663fe 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift @@ -155,6 +155,16 @@ final class WeekDayStackView: BaseView { } } + fileprivate func selectDaysOfTheWeek(daysOfTheWeek: [DayOfTheWeek]) { + self.mondayButton.isSelected = daysOfTheWeek.contains(.monday) + self.tuesdayButton.isSelected = daysOfTheWeek.contains(.tuesday) + self.wednesdayButton.isSelected = daysOfTheWeek.contains(.wednesday) + self.thursdayButton.isSelected = daysOfTheWeek.contains(.thursday) + self.fridayButton.isSelected = daysOfTheWeek.contains(.friday) + self.saturdayButton.isSelected = daysOfTheWeek.contains(.saturday) + self.sundayButton.isSelected = daysOfTheWeek.contains(.sunday) + } + private class weekDayButton: UIButton { override var isSelected: Bool { didSet { @@ -172,6 +182,7 @@ final class WeekDayStackView: BaseView { self.setBackgroundColor(color: .black, forState: .selected) self.setTitleColor(.gray40, for: .normal) self.setTitleColor(.white, for: .selected) + self.titleLabel?.font = .bold(size: 14) } required init?(coder: NSCoder) { @@ -184,4 +195,10 @@ extension Reactive where Base: WeekDayStackView { var tap: ControlEvent { return ControlEvent(events: base.tapPublisher) } + + var selectedDay: Binder<[DayOfTheWeek]> { + return Binder(self.base) { view, daysOfTheWeek in + view.selectDaysOfTheWeek(daysOfTheWeek: daysOfTheWeek) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift index 3203c64..99663be 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift @@ -1,6 +1,6 @@ import UIKit -final class EditScheduleTableViewCell: BaseTableViewCell { +final class EditScheduleTableViewCell: UITableViewCell { static let registerId = "\(EditScheduleTableViewCell.self)" static let size = CGSize( width: UIScreen.main.bounds.width - 48, @@ -62,7 +62,19 @@ final class EditScheduleTableViewCell: BaseTableViewCell { private let locationField = SignupTextField() - override func setup() { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + self.setup() + self.bindConstraints() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setup() { + self.contentView.isUserInteractionEnabled = false self.backgroundColor = .clear self.selectionStyle = .none self.addSubViews([ @@ -77,7 +89,7 @@ final class EditScheduleTableViewCell: BaseTableViewCell { ]) } - override func bindConstraints() { + private func bindConstraints() { self.containerView.snp.makeConstraints { make in make.left.equalToSuperview().offset(24) make.top.equalToSuperview().offset(16) @@ -130,4 +142,8 @@ final class EditScheduleTableViewCell: BaseTableViewCell { make.height.equalTo(48) } } + + func bind(appearanceDay: AppearanceDay) { + self.titleLabel.text = appearanceDay.dayOfTheWeek.fullText + } } diff --git a/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift b/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift index d447bc1..23f4955 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/DayOfTheWeek.swift @@ -6,4 +6,29 @@ enum DayOfTheWeek: String, Codable { case friday = "FRIDAY" case saturday = "SATURDAY" case sunday = "SUNDAY" + + var fullText: String { + switch self { + case .monday: + return "monday_full".localized + + case .tuesday: + return "tuesday_full".localized + + case .wednesday: + return "wednesday_full".localized + + case .thursday: + return "thursday_full".localized + + case .friday: + return "friday_full".localized + + case .saturday: + return "saturday_full".localized + + case .sunday: + return "sunday_full".localized + } + } } diff --git a/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift b/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift index 05516af..f9eaa3e 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/LocalTimeRes.swift @@ -1,3 +1,5 @@ +import Foundation + struct LocalTimeRes: Decodable, Equatable { let hour: Int let minute: Int @@ -23,6 +25,15 @@ struct LocalTimeRes: Decodable, Equatable { self.second = second } + init(date: Date) { + let calendar = Calendar.current + + self.hour = calendar.component(.hour, from: date) + self.minute = calendar.component(.minute, from: date) + self.second = calendar.component(.second, from: date) + self.nano = calendar.component(.nanosecond, from: date) + } + init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) diff --git a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift index e225637..6147099 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift @@ -1,12 +1,17 @@ struct TimeInterval: Decodable, Equatable { - let endTime: LocalTimeRes - let startTime: LocalTimeRes + var endTime: LocalTimeRes + var startTime: LocalTimeRes enum CodingKeys: String, CodingKey { case endTime case startTime } + init() { + self.startTime = LocalTimeRes() + self.endTime = LocalTimeRes() + } + init( endTime: LocalTimeRes = LocalTimeRes(), startTime: LocalTimeRes = LocalTimeRes() diff --git a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift index 9bdc99e..67d027d 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift @@ -1,11 +1,48 @@ -struct AppearanceDay: Equatable { - let dayOfTheWeek: DayOfTheWeek - let locationDescription: String - let openingHours: TimeInterval +struct AppearanceDay: Equatable, Comparable { + static func < (lhs: AppearanceDay, rhs: AppearanceDay) -> Bool { + return lhs.index < rhs.index + } + + var dayOfTheWeek: DayOfTheWeek + var locationDescription: String + var openingHours: TimeInterval init(response: BossStoreAppearanceDayResponse) { self.dayOfTheWeek = response.dayOfTheWeek self.locationDescription = response.locationDescription self.openingHours = response.openingHours } + + init(dayOfTheWeek: DayOfTheWeek) { + self.dayOfTheWeek = dayOfTheWeek + self.locationDescription = "" + self.openingHours = TimeInterval() + } +} + +extension AppearanceDay { + var index: Int { + switch self.dayOfTheWeek { + case .monday: + return 0 + + case .tuesday: + return 1 + + case .wednesday: + return 2 + + case .thursday: + return 3 + + case .friday: + return 4 + + case .saturday: + return 5 + + case .sunday: + return 6 + } + } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 08c1a1e..fb6ee41 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -26,6 +26,15 @@ "location_disable_service" = "위치 서비스가 비활성화되어있습니다.\n서비스를 활성화시켜주세요."; "location_address_unknown" = "주소를 알 수 없는 위치입니다."; +// Day Of The Week +"monday_full" = "월요일"; +"tuesday_full" = "화요일"; +"wednesday_full" = "수요일"; +"thursday_full" = "목요일"; +"friday_full" = "금요일"; +"saturday_full" = "토요일"; +"sunday_full" = "일요일"; + // Signup "signup_title" = "회원가입"; From 19edaae1dc2704cfdee86002de23e6008731405b Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 8 May 2022 21:09:29 +0900 Subject: [PATCH 069/166] =?UTF-8?q?feat:=20=EC=9D=BC=EC=A0=95=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 +++--- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../signup/subviews/SignupTextField.swift | 51 +++++++++++++++++++ .../edit-schedule/EditScheduleReactor.swift | 49 ++++++++++++++---- .../EditScheduleViewController.swift | 42 +++++++++++++++ .../cells/EditScheduleTableViewCell.swift | 39 ++++++++++++-- .../cells/MyStoreInfoWorkDayCell.swift | 5 +- .../dto/request/AppearanceDayRequest.swift | 11 +++- .../models/dto/request/LocalTimeReq.swift | 25 --------- .../request/PatchBossStoreInfoRequest.swift | 2 +- .../models/dto/response/TimeInterval.swift | 24 ++++----- .../models/presentation/AppearanceDay.swift | 4 ++ .../services/AuthService.swift | 2 +- .../services/StoreService.swift | 4 +- 14 files changed, 203 insertions(+), 73 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 3f7326e..bfe0ef8 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -20,7 +20,6 @@ 6E1AB7A5280D8B040059DCF4 /* EditIntroductionReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */; }; 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */; }; 6E1AB7A9280D928E0059DCF4 /* AppearanceDayRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */; }; - 6E1AB7AB280D92C70059DCF4 /* LocalTimeReq.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7AA280D92C70059DCF4 /* LocalTimeReq.swift */; }; 6E1AB7AD280D966D0059DCF4 /* MenuRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; @@ -111,8 +110,6 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; - 6EBCE5802824E6BE00F07294 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; }; - 6EBCE5812824E6BE00F07294 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E808CAD27F016CF00C46459 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE627FE65950011268B /* StoreService.swift */; }; 6EBF1AE927FE6A980011268B /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE827FE6A980011268B /* Store.swift */; }; 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; @@ -120,6 +117,8 @@ 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */; }; 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */; }; 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */; }; + 6ED5DF252827565300BE8FD0 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; + 6ED5DF262827565300BE8FD0 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; @@ -174,13 +173,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6EBCE5822824E6BE00F07294 /* Embed Frameworks */ = { + 6ED5DF272827565300BE8FD0 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6EBCE5812824E6BE00F07294 /* Base.framework in Embed Frameworks */, + 6ED5DF262827565300BE8FD0 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -204,7 +203,6 @@ 6E1AB7A4280D8B040059DCF4 /* EditIntroductionReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionReactor.swift; sourceTree = ""; }; 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PatchBossStoreInfoRequest.swift; sourceTree = ""; }; 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceDayRequest.swift; sourceTree = ""; }; - 6E1AB7AA280D92C70059DCF4 /* LocalTimeReq.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalTimeReq.swift; sourceTree = ""; }; 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuRequest.swift; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; @@ -342,7 +340,7 @@ 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6EBCE5802824E6BE00F07294 /* Base.framework in Frameworks */, + 6ED5DF252827565300BE8FD0 /* Base.framework in Frameworks */, 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, @@ -479,7 +477,6 @@ 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */, 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */, 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */, - 6E1AB7AA280D92C70059DCF4 /* LocalTimeReq.swift */, ); path = request; sourceTree = ""; @@ -889,7 +886,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6EBCE5822824E6BE00F07294 /* Embed Frameworks */, + 6ED5DF272827565300BE8FD0 /* Embed Frameworks */, ); buildRules = ( ); @@ -1148,7 +1145,6 @@ 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */, 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, - 6E1AB7AB280D92C70059DCF4 /* LocalTimeReq.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index f61da9a..4831c31 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -68,7 +68,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift index c8cad01..b21f4e1 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift @@ -2,6 +2,7 @@ import UIKit import RxSwift import RxCocoa +import Base final class SignupTextField: BaseView { var maxLength: Int? @@ -16,6 +17,11 @@ final class SignupTextField: BaseView { var format: String? + fileprivate lazy var datePicker = UIDatePicker().then { + $0.datePickerMode = .time + $0.preferredDatePickerStyle = .wheels + } + private let containerView = UIView().then { $0.backgroundColor = .gray5 $0.layer.cornerRadius = 8 @@ -67,6 +73,14 @@ final class SignupTextField: BaseView { self.textField.text = text } + func setDate(date: Date) { + let dateFormatter = DateFormatter() + + dateFormatter.dateFormat = "HH:mm" + self.datePicker.date = date + self.textField.text = dateFormatter.string(from: date) + } + fileprivate func format(with mask: String, text: String) -> String { let numbers = text.replacingOccurrences(of: "[^0-9]", with: "", options: .regularExpression) var result = "" @@ -125,4 +139,41 @@ extension Reactive where Base: SignupTextField { var text: ControlProperty { return base.textField.rx.text.orEmpty } + + var date: Observable { + return base.datePicker.rx.date + .map { date -> String in + let dateFormatter = DateFormatter() + + dateFormatter.dateFormat = "HH:mm" + return dateFormatter.string(from: date) + } + } +} + +extension SignupTextField { + func setDatePicker() { + let toolbar = UIToolbar() + let doneButton = UIBarButtonItem().then { + $0.title = "완료" + } + doneButton.rx.tap + .asDriver() + .drive(onNext: { [weak self] in + self?.endEditing(true) + }) + .disposed(by: self.disposeBag) + + toolbar.sizeToFit() + toolbar.setItems([doneButton], animated: true) + self.textField.inputAccessoryView = toolbar + self.textField.inputView = self.datePicker + self.datePicker.rx.value + .asDriver() + .skip(1) + .drive(onNext: { [weak self] date in + self?.setDate(date: date) + }) + .disposed(by: self.disposeBag) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift index 1610c43..537498b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift @@ -7,18 +7,21 @@ import RxCocoa final class EditScheduleReactor: BaseReactor, Reactor { enum Action { case tapDayOfTheWeek(DayOfTheWeek) - case inputStartTime(day: DayOfTheWeek, time: Date) - case inputEndTime(day: DayOfTheWeek, time: Date) + case inputStartTime(day: DayOfTheWeek, time: String) + case inputEndTime(day: DayOfTheWeek, time: String) case inputLocation(day: DayOfTheWeek, location: String) + case tapEditButton } enum Mutation { case addDayOfWeek(DayOfTheWeek) case removeDayOfWeek(DayOfTheWeek) - case setStartTime(day: DayOfTheWeek, time: Date) - case setEndTime(day: DayOfTheWeek, time: Date) + case setStartTime(day: DayOfTheWeek, time: String) + case setEndTime(day: DayOfTheWeek, time: String) case setLocation(day: DayOfTheWeek, location: String) case pop + case showLoading(isShow: Bool) + case showErrorAlert(Error) } struct State { @@ -28,7 +31,7 @@ final class EditScheduleReactor: BaseReactor, Reactor { let initialState: State let popPublisher = PublishRelay() private let storeService: StoreServiceType - private let globlaState: GlobalState + private let globalState: GlobalState init( store: Store, @@ -37,7 +40,7 @@ final class EditScheduleReactor: BaseReactor, Reactor { ) { self.initialState = State(store: store) self.storeService = storeService - self.globlaState = globalState + self.globalState = globalState } func mutate(action: Action) -> Observable { @@ -61,6 +64,13 @@ final class EditScheduleReactor: BaseReactor, Reactor { case .inputLocation(let day, let location): return .just(.setLocation(day: day, location: location)) + + case .tapEditButton: + return .concat([ + .just(.showLoading(isShow: true)), + self.updateStore(store: self.currentState.store), + .just(.showLoading(isShow: false)) + ]) } } @@ -86,14 +96,12 @@ final class EditScheduleReactor: BaseReactor, Reactor { case .setStartTime(let dayOfTheWeek, let time): if let index = self.getIndex(of: dayOfTheWeek) { - newState.store.appearanceDays[index].openingHours.startTime - = LocalTimeRes(date: time) + newState.store.appearanceDays[index].openingHours.startTime = time } case .setEndTime(let dayOfTheWeek, let time): if let index = self.getIndex(of: dayOfTheWeek) { - newState.store.appearanceDays[index].openingHours.endTime - = LocalTimeRes(date: time) + newState.store.appearanceDays[index].openingHours.endTime = time } case .setLocation(let dayOfTheWeek, let location): @@ -102,8 +110,13 @@ final class EditScheduleReactor: BaseReactor, Reactor { } case .pop: - self.globlaState.updateStorePublisher.onNext(self.currentState.store) self.popPublisher.accept(()) + + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) } return newState @@ -114,4 +127,18 @@ final class EditScheduleReactor: BaseReactor, Reactor { $0.dayOfTheWeek == dayOfTheWeek } } + + private func updateStore(store: Store) -> Observable { + return self.storeService.updateStore(store: store) + .do(onNext: { [weak self] _ in + self?.globalState.updateStorePublisher.onNext(store) + }) + .map { _ in Mutation.pop } + .catch { + return .merge([ + .just(.showLoading(isShow: false)), + .just(.showErrorAlert($0)) + ]) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift index 4ee89a6..0d4982d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift @@ -8,6 +8,10 @@ final class EditScheduleViewController: private let editScheduleReactor: EditScheduleReactor private weak var coordinator: EditScheduleCoordinator? + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + static func instance(store: Store) -> EditScheduleViewController { return EditScheduleViewController(store: store).then { $0.hidesBottomBarWhenPushed = true @@ -52,6 +56,20 @@ final class EditScheduleViewController: self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) + + self.editScheduleReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.editScheduleReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: EditScheduleReactor) { @@ -61,6 +79,12 @@ final class EditScheduleViewController: .bind(to: reactor.action) .disposed(by: self.disposeBag) + self.editScheduleView.saveButton.rx.tap + .throttle(.milliseconds(300), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapEditButton } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + // Bind State reactor.state .map { $0.store.appearanceDays.map { $0.dayOfTheWeek } } @@ -78,6 +102,24 @@ final class EditScheduleViewController: cellType: EditScheduleTableViewCell.self )) { row, appearanceDay, cell in cell.bind(appearanceDay: appearanceDay) + cell.startTimeField.rx.date + .map { + Reactor.Action.inputStartTime(day: appearanceDay.dayOfTheWeek, time: $0) + } + .bind(to: reactor.action) + .disposed(by: cell.disposeBag) + cell.endTimeField.rx.date + .map { + Reactor.Action.inputEndTime(day: appearanceDay.dayOfTheWeek, time: $0) + } + .bind(to: reactor.action) + .disposed(by: cell.disposeBag) + cell.locationField.rx.text + .map { + Reactor.Action.inputLocation(day: appearanceDay.dayOfTheWeek, location: $0) + } + .bind(to: reactor.action) + .disposed(by: cell.disposeBag) } .disposed(by: self.disposeBag) } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift index 99663be..654d72d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift @@ -1,11 +1,15 @@ import UIKit +import RxSwift +import Base + final class EditScheduleTableViewCell: UITableViewCell { static let registerId = "\(EditScheduleTableViewCell.self)" static let size = CGSize( width: UIScreen.main.bounds.width - 48, height: 224 ) + var disposeBag = DisposeBag() private let containerView = UIView().then { $0.backgroundColor = .white @@ -17,7 +21,6 @@ final class EditScheduleTableViewCell: UITableViewCell { private let titleLabel = UILabel().then { $0.font = .bold(size: 16) $0.textColor = .black - $0.text = "화요일" $0.setContentHuggingPriority(.required, for: .horizontal) } @@ -35,7 +38,9 @@ final class EditScheduleTableViewCell: UITableViewCell { $0.text = "edit_schedule_work_time".localized } - private let startTimeField = SignupTextField() + let startTimeField = SignupTextField().then { + $0.setDatePicker() + } private let dashLabel = UILabel().then { $0.text = "~" @@ -44,7 +49,9 @@ final class EditScheduleTableViewCell: UITableViewCell { $0.textColor = .black } - private let endTimeField = SignupTextField() + let endTimeField = SignupTextField().then { + $0.setDatePicker() + } private let locationLabel = PaddingLabel( topInset: 4, @@ -60,7 +67,7 @@ final class EditScheduleTableViewCell: UITableViewCell { $0.text = "edit_schedule_location".localized } - private let locationField = SignupTextField() + let locationField = SignupTextField() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) @@ -73,6 +80,12 @@ final class EditScheduleTableViewCell: UITableViewCell { fatalError("init(coder:) has not been implemented") } + override func prepareForReuse() { + super.prepareForReuse() + + self.disposeBag = DisposeBag() + } + private func setup() { self.contentView.isUserInteractionEnabled = false self.backgroundColor = .clear @@ -144,6 +157,24 @@ final class EditScheduleTableViewCell: UITableViewCell { } func bind(appearanceDay: AppearanceDay) { + if !appearanceDay.openingHours.startTime.isEmpty { + let startTime = DateUtils.toDate( + dateString: appearanceDay.openingHours.startTime, + format: "HH:mm" + ) + + self.startTimeField.setDate(date: startTime) + } + + if !appearanceDay.openingHours.endTime.isEmpty { + let endTime = DateUtils.toDate( + dateString: appearanceDay.openingHours.endTime, + format: "HH:mm" + ) + + self.endTimeField.setDate(date: endTime) + } self.titleLabel.text = appearanceDay.dayOfTheWeek.fullText + self.locationField.setText(text: appearanceDay.locationDescription) } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift index 75853ae..c4e378a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift @@ -63,6 +63,9 @@ final class MyStoreInfoWorkDayCell: BaseCollectionViewCell { } func bind(appearanceDay: AppearanceDay) { - + self.weekDayLabel.text = appearanceDay.dayOfTheWeek.fullText + self.timeLabel.text + = "\(appearanceDay.openingHours.startTime) - \(appearanceDay.openingHours.endTime)" + self.locationLabel.text = appearanceDay.locationDescription } } diff --git a/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift index 2ab2bec..f6dab8b 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/AppearanceDayRequest.swift @@ -2,9 +2,9 @@ import Foundation struct AppearanceDayRequest: Encodable { let dayOfTheWeek: DayOfTheWeek - let endTime: LocalTimeReq + let endTime: String let locationDescription: String? - let startTime: LocalTimeReq + let startTime: String enum CodingKeys: String, CodingKey { case dayOfTheWeek @@ -13,6 +13,13 @@ struct AppearanceDayRequest: Encodable { case startTime } + init(appearance: AppearanceDay) { + self.dayOfTheWeek = appearance.dayOfTheWeek + self.endTime = appearance.openingHours.endTime + self.locationDescription = appearance.locationDescription + self.startTime = appearance.openingHours.startTime + } + func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) diff --git a/3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift b/3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift deleted file mode 100644 index 5463fc5..0000000 --- a/3dollar-in-my-pocket-manager/models/dto/request/LocalTimeReq.swift +++ /dev/null @@ -1,25 +0,0 @@ -import Foundation - -struct LocalTimeReq: Encodable { - let hour: String? - let minute: String? - let nano: Int? - let second: String? - - enum CodingKeys: String, CodingKey { - case hour - case minute - case nano - case second - } - - - func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - - try container.encodeIfPresent(self.hour, forKey: .hour) - try container.encodeIfPresent(self.minute, forKey: .minute) - try container.encodeIfPresent(self.nano, forKey: .nano) - try container.encodeIfPresent(self.second, forKey: .second) - } -} diff --git a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift index 9dd0e0b..f0d7bfe 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift @@ -42,7 +42,7 @@ struct PatchBossStoreInfoRequest: Encodable { } init(store: Store) { - self.appearanceDays = [] + self.appearanceDays = store.appearanceDays.map(AppearanceDayRequest.init) self.categoriesIds = store.categories.map { $0.categoryId } self.contactsNumber = store.phoneNumber self.imageUrl = store.imageUrl diff --git a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift index 6147099..053ceb1 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift @@ -1,6 +1,6 @@ -struct TimeInterval: Decodable, Equatable { - var endTime: LocalTimeRes - var startTime: LocalTimeRes +struct TimeInterval: Decodable { + var endTime: String + var startTime: String enum CodingKeys: String, CodingKey { case endTime @@ -8,13 +8,13 @@ struct TimeInterval: Decodable, Equatable { } init() { - self.startTime = LocalTimeRes() - self.endTime = LocalTimeRes() + self.startTime = "" + self.endTime = "" } init( - endTime: LocalTimeRes = LocalTimeRes(), - startTime: LocalTimeRes = LocalTimeRes() + endTime: String = "", + startTime: String = "" ) { self.endTime = endTime self.startTime = startTime @@ -23,13 +23,7 @@ struct TimeInterval: Decodable, Equatable { init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) - self.endTime = try values.decodeIfPresent( - LocalTimeRes.self, - forKey: .endTime - ) ?? LocalTimeRes() - self.startTime = try values.decodeIfPresent( - LocalTimeRes.self, - forKey: .startTime - ) ?? LocalTimeRes() + self.endTime = try values.decodeIfPresent(String.self, forKey: .endTime) ?? "" + self.startTime = try values.decodeIfPresent(String.self, forKey: .startTime) ?? "" } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift index 67d027d..e8299ae 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift @@ -1,4 +1,8 @@ struct AppearanceDay: Equatable, Comparable { + static func == (lhs: AppearanceDay, rhs: AppearanceDay) -> Bool { + return lhs.dayOfTheWeek == rhs.dayOfTheWeek + } + static func < (lhs: AppearanceDay, rhs: AppearanceDay) -> Bool { return lhs.index < rhs.index } diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 9ff81bc..f161ee2 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -88,7 +88,7 @@ struct AuthService: AuthServiceType { func fetchMyInfo() -> Observable { return .create { observer in - let urlString = HTTPUtils.url + "/boss/v1/boss/account/my-info" + let urlString = HTTPUtils.url + "/boss/v1/boss/account/me" let headers = HTTPUtils.defaultHeader() HTTPUtils.defaultSession.request( diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 8eb6fa7..207e41f 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -21,7 +21,7 @@ protocol StoreServiceType { struct StoreService: StoreServiceType { func fetchMyStore() -> Observable { return .create { observer in - let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store" + let urlString = HTTPUtils.url + "/boss/v1/boss/store/me" let headers = HTTPUtils.defaultHeader() HTTPUtils.defaultSession.request( @@ -118,7 +118,7 @@ struct StoreService: StoreServiceType { func updateStore(store: Store) -> Observable { return .create { observer in - let urlString = HTTPUtils.url + "/boss/v1/boss/store/my-store/\(store.id)" + let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(store.id)" let headers = HTTPUtils.defaultHeader() let parameters = PatchBossStoreInfoRequest(store: store) From dfff115555eadad312465503e9277d9191b39c59 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 8 May 2022 21:26:50 +0900 Subject: [PATCH 070/166] =?UTF-8?q?wip:=20=EC=84=A4=EC=A0=95=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=85=80=20=EB=A7=8C=EB=93=9C=EB=8A=94=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 36 +++++++++++++++++++ .../domains/main/MainTabController.swift | 4 +-- .../domains/setting/SettingView.swift | 36 +++++++++++++++++++ .../setting/SettingViewController.swift | 24 +++++++++++++ .../subviews/cells/SettingTableViewCell.swift | 5 +++ .../strings/en.lproj/Localizations.strings | 4 ++- 6 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/setting/SettingView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index bfe0ef8..26121b7 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -21,6 +21,9 @@ 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */; }; 6E1AB7A9280D928E0059DCF4 /* AppearanceDayRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */; }; 6E1AB7AD280D966D0059DCF4 /* MenuRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */; }; + 6E1E5BA82827EB33003A1B51 /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1E5BA72827EB33003A1B51 /* SettingView.swift */; }; + 6E1E5BAA2827EBE5003A1B51 /* SettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1E5BA92827EBE5003A1B51 /* SettingViewController.swift */; }; + 6E1E5BAE2827EE5F003A1B51 /* SettingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1E5BAD2827EE5F003A1B51 /* SettingTableViewCell.swift */; }; 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A227CB79120050BBBA /* LoginResponse.swift */; }; 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A527CB7A130050BBBA /* AuthService.swift */; }; 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */; }; @@ -204,6 +207,9 @@ 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PatchBossStoreInfoRequest.swift; sourceTree = ""; }; 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceDayRequest.swift; sourceTree = ""; }; 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuRequest.swift; sourceTree = ""; }; + 6E1E5BA72827EB33003A1B51 /* SettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingView.swift; sourceTree = ""; }; + 6E1E5BA92827EBE5003A1B51 /* SettingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingViewController.swift; sourceTree = ""; }; + 6E1E5BAD2827EE5F003A1B51 /* SettingTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingTableViewCell.swift; sourceTree = ""; }; 6E1F54A227CB79120050BBBA /* LoginResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResponse.swift; sourceTree = ""; }; 6E1F54A527CB7A130050BBBA /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = ""; }; 6E1F54A927CB7D5C0050BBBA /* LoginRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRequest.swift; sourceTree = ""; }; @@ -423,6 +429,32 @@ path = "edit-introduction"; sourceTree = ""; }; + 6E1E5BA62827EB29003A1B51 /* setting */ = { + isa = PBXGroup; + children = ( + 6E1E5BAB2827EE42003A1B51 /* subviews */, + 6E1E5BA72827EB33003A1B51 /* SettingView.swift */, + 6E1E5BA92827EBE5003A1B51 /* SettingViewController.swift */, + ); + path = setting; + sourceTree = ""; + }; + 6E1E5BAB2827EE42003A1B51 /* subviews */ = { + isa = PBXGroup; + children = ( + 6E1E5BAC2827EE46003A1B51 /* cells */, + ); + path = subviews; + sourceTree = ""; + }; + 6E1E5BAC2827EE46003A1B51 /* cells */ = { + isa = PBXGroup; + children = ( + 6E1E5BAD2827EE5F003A1B51 /* SettingTableViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E1F54A127CB785B0050BBBA /* dto */ = { isa = PBXGroup; children = ( @@ -689,6 +721,7 @@ 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( + 6E1E5BA62827EB29003A1B51 /* setting */, 6E6C9C66280BD467009AFAE8 /* my */, 6EEA3D6827F1E73A00BC5F31 /* main */, 6EF676BB27EEE57500D43E99 /* home */, @@ -1060,6 +1093,7 @@ 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */, 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */, + 6E1E5BAA2827EBE5003A1B51 /* SettingViewController.swift in Sources */, 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, @@ -1073,6 +1107,7 @@ 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, + 6E1E5BAE2827EE5F003A1B51 /* SettingTableViewCell.swift in Sources */, 6E5DCE6327FDB04600CA58EE /* Region.swift in Sources */, 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, @@ -1089,6 +1124,7 @@ 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, + 6E1E5BA82827EB33003A1B51 /* SettingView.swift in Sources */, 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */, 6E5F3DD5281D5F39002282B6 /* EditScheduleView.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift index 9e7568a..9cc71b0 100644 --- a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift +++ b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift @@ -60,8 +60,8 @@ final class MainTabController: UITabBarController { private func setupTabBarController() { self.setViewControllers([ HomeViewController.instance(), - HomeViewController.instance(), - MyPageViewController.instance() + MyPageViewController.instance(), + SettingViewController.instance() ], animated: true) self.tabBar.tintColor = .green self.tabBar.layer.borderWidth = 1 diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift new file mode 100644 index 0000000..35ffd63 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift @@ -0,0 +1,36 @@ +import UIKit + +final class SettingView: BaseView { + private let titleLabel = UILabel().then { + $0.font = .semiBold(size: 16) + $0.textColor = .white + $0.text = "setting_title".localized + } + + let tableView = UITableView().then { + $0.tableFooterView = UIView() + $0.separatorStyle = .none + } + + override func setup() { + self.backgroundColor = .gray100 + self.addSubViews([ + self.titleLabel, + self.tableView + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(self.safeAreaLayoutGuide).offset(22) + } + + self.tableView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.titleLabel.snp.bottom).offset(21) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift new file mode 100644 index 0000000..73a6f00 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -0,0 +1,24 @@ +import UIKit + +final class SettingViewController: BaseViewController { + private let settingView = SettingView() + + static func instance() -> UINavigationController { + let viewController = SettingViewController(nibName: nil, bundle: nil).then { + $0.tabBarItem = UITabBarItem( + title: nil, + image: UIImage(named: "ic_home"), + tag: TabBarTag.setting.rawValue + ) + $0.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0) + } + + return UINavigationController(rootViewController: viewController).then { + $0.isNavigationBarHidden = true + } + } + + override func loadView() { + self.view = self.settingView + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift new file mode 100644 index 0000000..1f1eeb0 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift @@ -0,0 +1,5 @@ +import UIKit + +final class SettingTableViewCell: BaseTableViewCell { + static let registerId = "\(SettingTableViewCell.self)" +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index fb6ee41..f7555a2 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -35,7 +35,6 @@ "saturday_full" = "토요일"; "sunday_full" = "일요일"; - // Signup "signup_title" = "회원가입"; "signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; @@ -101,3 +100,6 @@ "edit_schedule_work_time" = "영업 시간"; "edit_schedule_location" = "출몰 지역"; "edit_schedule_save" = "저장하기"; + +// Seting +"setting_title" = "설정"; From c8b7d455a9b102a88ac777b6790a504541f33618 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 11 May 2022 21:37:53 +0900 Subject: [PATCH 071/166] =?UTF-8?q?wip:=20=ED=86=B5=EA=B3=84=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=83=81=EB=8B=A8=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 --- .../project.pbxproj | 32 +++++ .../domains/my/MyPageView.swift | 2 +- .../domains/my/MyPageViewController.swift | 2 +- .../my/statistics/StatisticsView.swift | 28 +++++ .../statistics/StatisticsViewController.swift | 13 ++ .../subviews/ReviewCountLabel.swift | 85 +++++++++++++ .../subviews/StatisticsFilterButton.swift | 112 ++++++++++++++++++ 7 files changed, 272 insertions(+), 2 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 26121b7..13e10d6 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -118,6 +118,10 @@ 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0527EEEC11009B5527 /* AddressView.swift */; }; 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */; }; + 6EC5E42D282BD77A00AD571C /* StatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC5E42C282BD77A00AD571C /* StatisticsView.swift */; }; + 6EC5E430282BD7E200AD571C /* ReviewCountLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC5E42F282BD7E200AD571C /* ReviewCountLabel.swift */; }; + 6EC5E432282BDB3000AD571C /* StatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC5E431282BDB3000AD571C /* StatisticsViewController.swift */; }; + 6EC5E434282BDDDA00AD571C /* StatisticsFilterButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC5E433282BDDDA00AD571C /* StatisticsFilterButton.swift */; }; 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */; }; 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */; }; 6ED5DF252827565300BE8FD0 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; @@ -303,6 +307,10 @@ 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = ""; }; 6EC51D0527EEEC11009B5527 /* AddressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressView.swift; sourceTree = ""; }; 6EC51D0727EEEF86009B5527 /* SalesToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SalesToggleView.swift; sourceTree = ""; }; + 6EC5E42C282BD77A00AD571C /* StatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsView.swift; sourceTree = ""; }; + 6EC5E42F282BD7E200AD571C /* ReviewCountLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewCountLabel.swift; sourceTree = ""; }; + 6EC5E431282BDB3000AD571C /* StatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsViewController.swift; sourceTree = ""; }; + 6EC5E433282BDDDA00AD571C /* StatisticsFilterButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsFilterButton.swift; sourceTree = ""; }; 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoHeaderView.swift; sourceTree = ""; }; 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoWorkDayCell.swift; sourceTree = ""; }; 6ED8839827CB3A1700278E14 /* SigninView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninView.swift; sourceTree = ""; }; @@ -609,6 +617,7 @@ 6E6C9C66280BD467009AFAE8 /* my */ = { isa = PBXGroup; children = ( + 6EC5E42A282BD73900AD571C /* statistics */, 6E6C9C6C280BD92B009AFAE8 /* my-store-info */, 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */, 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */, @@ -718,6 +727,25 @@ path = subviews; sourceTree = ""; }; + 6EC5E42A282BD73900AD571C /* statistics */ = { + isa = PBXGroup; + children = ( + 6EC5E42E282BD7D200AD571C /* subviews */, + 6EC5E42C282BD77A00AD571C /* StatisticsView.swift */, + 6EC5E431282BDB3000AD571C /* StatisticsViewController.swift */, + ); + path = statistics; + sourceTree = ""; + }; + 6EC5E42E282BD7D200AD571C /* subviews */ = { + isa = PBXGroup; + children = ( + 6EC5E42F282BD7E200AD571C /* ReviewCountLabel.swift */, + 6EC5E433282BDDDA00AD571C /* StatisticsFilterButton.swift */, + ); + path = subviews; + sourceTree = ""; + }; 6ED8839527CB39EE00278E14 /* domains */ = { isa = PBXGroup; children = ( @@ -1101,10 +1129,12 @@ 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, + 6EC5E432282BDB3000AD571C /* StatisticsViewController.swift in Sources */, 6E5F3DDE281D6435002282B6 /* AppearanceDay.swift in Sources */, 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */, 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, + 6EC5E42D282BD77A00AD571C /* StatisticsView.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, 6E1E5BAE2827EE5F003A1B51 /* SettingTableViewCell.swift in Sources */, @@ -1186,6 +1216,7 @@ 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */, 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, + 6EC5E434282BDDDA00AD571C /* StatisticsFilterButton.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, @@ -1202,6 +1233,7 @@ 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */, 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, + 6EC5E430282BD7E200AD571C /* ReviewCountLabel.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift index 29ffe8c..637287e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift @@ -26,7 +26,7 @@ final class MyPageView: BaseView { let containerView = UIView() override func setup() { - self.backgroundColor = .white + self.backgroundColor = .gray0 self.addSubViews([ self.myStoreInfoButton, self.statisticsButton, diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index aa96e19..72c76f7 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -11,7 +11,7 @@ final class MyPageViewController: BaseViewController { private let pageViewControllers: [UIViewController] = [ MyStoreInfoViewController.instance(), - MyStoreInfoViewController.instance() + StatisticsViewController.instance() ] override var preferredStatusBarStyle: UIStatusBarStyle { diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift new file mode 100644 index 0000000..db2942d --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift @@ -0,0 +1,28 @@ +import UIKit + +final class StatisticsView: BaseView { + private let reviewCountLabel = ReviewCountLabel() + + private let filterButton = StatisticsFilterButton() + + override func setup() { + self.backgroundColor = .gray0 + self.addSubViews([ + self.reviewCountLabel, + self.filterButton + ]) + } + + override func bindConstraints() { + self.reviewCountLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview().offset(20) + } + + self.filterButton.snp.makeConstraints { make in + make.top.equalTo(self.reviewCountLabel.snp.bottom).offset(19) + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift new file mode 100644 index 0000000..3de718b --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -0,0 +1,13 @@ +import UIKit + +final class StatisticsViewController: BaseViewController { + private let statisticsView = StatisticsView() + + static func instance() -> StatisticsViewController { + return StatisticsViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.statisticsView + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift new file mode 100644 index 0000000..be0de40 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift @@ -0,0 +1,85 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class ReviewCountLabel: BaseView { + private let totalLabel = UILabel().then { + $0.font = .bold(size: 24) + $0.textColor = .gray95 + $0.text = "총" + } + + fileprivate let countLabel = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.font = .extraBold(size: 18) + $0.textColor = .green + $0.backgroundColor = UIColor(r: 225, g: 243, b: 234) + $0.layer.cornerRadius = 8 + $0.layer.masksToBounds = true + $0.text = "800개" + } + + private let ofLabel = UILabel().then { + $0.font = .bold(size: 24) + $0.textColor = .gray95 + $0.text = "의" + } + + private let descriptionLabel = UILabel().then { + $0.font = .bold(size: 24) + $0.textColor = .gray95 + $0.text = "리뷰가 사장님께 도착했어요 :)" + } + + override func setup() { + self.addSubViews([ + self.totalLabel, + self.countLabel, + self.ofLabel, + self.descriptionLabel + ]) + } + + override func bindConstraints() { + self.totalLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + } + + self.countLabel.snp.makeConstraints { make in + make.left.equalTo(self.totalLabel.snp.right).offset(6) + make.centerY.equalTo(self.countLabel) + make.height.equalTo(28) + } + + self.ofLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.countLabel) + make.left.equalTo(self.countLabel.snp.right).offset(4) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.left.equalTo(self.totalLabel) + make.top.equalTo(self.totalLabel.snp.bottom).offset(4) + } + + self.snp.makeConstraints { make in + make.left.equalTo(self.totalLabel).priority(.high) + make.top.equalTo(self.totalLabel).priority(.high) + make.right.equalTo(self.descriptionLabel).priority(.high) + make.bottom.equalTo(self.descriptionLabel).priority(.high) + } + } +} + +extension Reactive where Base: ReviewCountLabel { + var reviewCount: Binder { + return Binder(self.base) { view, reviewCount in + view.countLabel.text = "\(reviewCount)개" + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift new file mode 100644 index 0000000..f270d6f --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift @@ -0,0 +1,112 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class StatisticsFilterButton: BaseView { + fileprivate let tapPublisher = PublishSubject() + + enum FilterType { + case total + case day + } + + private let backgroundView = UIView().then { + $0.backgroundColor = .gray5 + $0.layer.cornerRadius = 12 + } + + private let indicatorView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 9 + } + + private let totalButton = UIButton().then { + $0.setTitle("전체", for: .normal) + $0.setTitleColor(.green, for: .selected) + $0.setTitleColor(.gray40, for: .normal) + $0.titleLabel?.font = .medium(size: 14) + } + + private let dayButton = UIButton().then { + $0.setTitle("일별", for: .normal) + $0.setTitleColor(.green, for: .selected) + $0.setTitleColor(.gray40, for: .normal) + $0.titleLabel?.font = .medium(size: 14) + } + + override func setup() { + self.backgroundColor = .clear + self.addSubViews([ + self.backgroundView, + self.indicatorView, + self.totalButton, + self.dayButton + ]) + + self.totalButton.rx.tap + .map { FilterType.total } + .do(onNext: { [weak self] type in + self?.selectButton(type: type) + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + + self.dayButton.rx.tap + .map { FilterType.day } + .do(onNext: { [weak self] type in + self?.selectButton(type: type) + }) + .bind(to: self.tapPublisher) + .disposed(by: self.disposeBag) + } + + override func bindConstraints() { + self.backgroundView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(56) + } + + self.totalButton.snp.makeConstraints { make in + make.left.equalTo(self.backgroundView).offset(8) + make.top.equalTo(self.backgroundView).offset(8) + make.bottom.equalTo(self.backgroundView).offset(-8) + make.right.equalTo(self.snp.centerX).offset(-3) + } + + self.dayButton.snp.makeConstraints { make in + make.left.equalTo(self.snp.centerX).offset(3) + make.top.equalTo(self.totalButton) + make.bottom.equalTo(self.totalButton) + make.right.equalTo(self.backgroundView).offset(-8) + } + + self.indicatorView.snp.makeConstraints { make in + make.edges.equalTo(self.totalButton) + } + + self.snp.makeConstraints { make in + make.edges.equalTo(self.backgroundView).priority(.high) + } + } + + private func selectButton(type: FilterType) { + self.totalButton.isSelected = type == .total + self.dayButton.isSelected = type == .day + self.indicatorView.snp.remakeConstraints { make in + make.edges.equalTo(type == .total ? self.totalButton : self.dayButton) + } + + UIView.animate(withDuration: 0.3) { [weak self] in + self?.layoutIfNeeded() + } + } +} + +extension Reactive where Base: StatisticsFilterButton { + var tap: ControlEvent { + return ControlEvent(events: base.tapPublisher) + } +} From 081ec35c00b2f23f8d90f301725bdd36b213c979 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 15 May 2022 17:47:36 +0900 Subject: [PATCH 072/166] =?UTF-8?q?feat:=20=EC=A0=84=EC=B2=B4=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=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 --- .../project.pbxproj | 36 +++++++++ .../my/statistics/StatisticsView.swift | 12 ++- .../statistics/StatisticsViewController.swift | 60 +++++++++++++++ .../TotalStatisticsView.swift | 35 +++++++++ .../TotalStatisticsViewController.swift | 35 +++++++++ .../cells/TotalStatisticsTableViewCell.swift | 74 +++++++++++++++++++ 6 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 13e10d6..8ecae15 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -107,6 +107,8 @@ 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; + 6E95E856282FD2140004C08D /* TotalStatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */; }; + 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; @@ -159,6 +161,7 @@ 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */; }; + 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */; }; 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */; }; 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B327EECBED00D43E99 /* SplashView.swift */; }; 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B527EECC0600D43E99 /* SplashViewController.swift */; }; @@ -294,6 +297,8 @@ 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleTableViewCell.swift; sourceTree = ""; }; 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewCell.swift; sourceTree = ""; }; + 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsViewController.swift; sourceTree = ""; }; + 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsTableViewCell.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -331,6 +336,7 @@ 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCoordinator.swift; sourceTree = ""; }; 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabController.swift; sourceTree = ""; }; + 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsView.swift; sourceTree = ""; }; 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossAccountInfoResponse.swift; sourceTree = ""; }; 6EF676B327EECBED00D43E99 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; 6EF676B527EECC0600D43E99 /* SplashViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashViewController.swift; sourceTree = ""; }; @@ -667,6 +673,22 @@ path = cells; sourceTree = ""; }; + 6E95E858282FD3CE0004C08D /* subviews */ = { + isa = PBXGroup; + children = ( + 6E95E859282FD3D20004C08D /* cells */, + ); + path = subviews; + sourceTree = ""; + }; + 6E95E859282FD3D20004C08D /* cells */ = { + isa = PBXGroup; + children = ( + 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E9F995227E7018D00C95C41 /* waiting */ = { isa = PBXGroup; children = ( @@ -730,6 +752,7 @@ 6EC5E42A282BD73900AD571C /* statistics */ = { isa = PBXGroup; children = ( + 6EF1D496282D361100DA9D35 /* total-statistics */, 6EC5E42E282BD7D200AD571C /* subviews */, 6EC5E42C282BD77A00AD571C /* StatisticsView.swift */, 6EC5E431282BDB3000AD571C /* StatisticsViewController.swift */, @@ -903,6 +926,16 @@ path = main; sourceTree = ""; }; + 6EF1D496282D361100DA9D35 /* total-statistics */ = { + isa = PBXGroup; + children = ( + 6E95E858282FD3CE0004C08D /* subviews */, + 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */, + 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */, + ); + path = "total-statistics"; + sourceTree = ""; + }; 6EF676B227EECBE600D43E99 /* splash */ = { isa = PBXGroup; children = ( @@ -1105,6 +1138,7 @@ 6E1AB7AD280D966D0059DCF4 /* MenuRequest.swift in Sources */, 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, + 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */, 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */, @@ -1155,6 +1189,7 @@ 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6E1E5BA82827EB33003A1B51 /* SettingView.swift in Sources */, + 6E95E856282FD2140004C08D /* TotalStatisticsViewController.swift in Sources */, 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */, 6E5F3DD5281D5F39002282B6 /* EditScheduleView.swift in Sources */, @@ -1162,6 +1197,7 @@ 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6E5F3DDC281D61AA002282B6 /* EditScheduleCoordinator.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, + 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, 6E5F3DD8281D611C002282B6 /* WeekDayStackView.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift index db2942d..80b98c2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift @@ -5,11 +5,14 @@ final class StatisticsView: BaseView { private let filterButton = StatisticsFilterButton() + let containerView = UIView() + override func setup() { self.backgroundColor = .gray0 self.addSubViews([ self.reviewCountLabel, - self.filterButton + self.filterButton, + self.containerView ]) } @@ -24,5 +27,12 @@ final class StatisticsView: BaseView { make.left.equalToSuperview().offset(24) make.right.equalToSuperview().offset(-24) } + + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.filterButton.snp.bottom).offset(28) + } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift index 3de718b..94ae429 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -3,6 +3,21 @@ import UIKit final class StatisticsViewController: BaseViewController { private let statisticsView = StatisticsView() + private let pageViewController = UIPageViewController( + transitionStyle: .scroll, + navigationOrientation: .horizontal, + options: nil + ) + + private let pageViewControllers: [UIViewController] = [ + TotalStatisticsViewController.instance(), + TotalStatisticsViewController.instance() + ] + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .darkContent + } + static func instance() -> StatisticsViewController { return StatisticsViewController(nibName: nil, bundle: nil) } @@ -10,4 +25,49 @@ final class StatisticsViewController: BaseViewController { override func loadView() { self.view = self.statisticsView } + + override func viewDidLoad() { + super.viewDidLoad() + + self.setupPageViewController() + } + + private func setupPageViewController() { + self.addChild(self.pageViewController) + self.pageViewController.delegate = self + self.pageViewController.dataSource = self + self.statisticsView.containerView.addSubview(self.pageViewController.view) + self.pageViewController.view.snp.makeConstraints { make in + make.edges.equalTo(self.statisticsView.containerView) + } + self.pageViewController.setViewControllers( + [self.pageViewControllers[0]], + direction: .forward, + animated: false, + completion: nil + ) + + for view in self.pageViewController.view.subviews { + if let scrollView = view as? UIScrollView { + scrollView.isScrollEnabled = false + } + } + } } + +extension StatisticsViewController: UIPageViewControllerDelegate, UIPageViewControllerDataSource { + func pageViewController( + _ pageViewController: UIPageViewController, + viewControllerBefore viewController: UIViewController + ) -> UIViewController? { + return nil + } + + func pageViewController( + _ pageViewController: UIPageViewController, + viewControllerAfter viewController: UIViewController + ) -> UIViewController? { + return nil + } +} + diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift new file mode 100644 index 0000000..e0d099f --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift @@ -0,0 +1,35 @@ +import UIKit + +final class TotalStatisticsView: BaseView { + let tableView = UITableView().then { + $0.tableFooterView = UIView() + $0.separatorStyle = .none + $0.backgroundColor = .white + $0.layer.cornerRadius = 24 + $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + $0.layer.masksToBounds = true + $0.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor + $0.layer.shadowOpacity = 0.04 + $0.contentInset = .init(top: 8, left: 0, bottom: 8, right: 0) + $0.register( + TotalStatisticsTableViewCell.self, + forCellReuseIdentifier: TotalStatisticsTableViewCell.registerId + ) + $0.rowHeight = UITableView.automaticDimension + } + + override func setup() { + self.addSubViews([ + self.tableView + ]) + } + + override func bindConstraints() { + self.tableView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalToSuperview() + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift new file mode 100644 index 0000000..f8f5605 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -0,0 +1,35 @@ +import UIKit + +final class TotalStatisticsViewController: BaseViewController { + private let totalStatisticsView = TotalStatisticsView() + + static func instance() -> TotalStatisticsViewController { + return TotalStatisticsViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.totalStatisticsView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.totalStatisticsView.tableView.dataSource = self + self.totalStatisticsView.tableView.delegate = self + } +} + +extension TotalStatisticsViewController: UITableViewDataSource, UITableViewDelegate { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 4 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell( + withIdentifier: TotalStatisticsTableViewCell.registerId, + for: indexPath + ) as? TotalStatisticsTableViewCell else { return BaseTableViewCell() } + + return cell + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift new file mode 100644 index 0000000..ac5f25a --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift @@ -0,0 +1,74 @@ +import UIKit + +final class TotalStatisticsTableViewCell: BaseTableViewCell { + static let registerId = "\(TotalStatisticsTableViewCell.self)" + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray95 + $0.text = "🍕 음식이 맛있어요" + } + + private let countLabel = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.font = .regular(size: 12) + $0.textColor = .green + $0.text = "400개" + $0.layer.borderColor = UIColor.green.cgColor + $0.layer.borderWidth = 1 + $0.layer.cornerRadius = 11 + } + + private let progressBackgroundView = UIView().then { + $0.backgroundColor = UIColor(r: 242, g: 251, b: 247) + $0.layer.cornerRadius = 8 + } + + private let progressView = UIProgressView().then { + $0.progressTintColor = .green + $0.layer.cornerRadius = 4 + $0.trackTintColor = .clear + $0.progress = 0.5 + } + + override func setup() { + self.selectionStyle = .none + self.addSubViews([ + self.titleLabel, + self.countLabel, + self.progressBackgroundView, + self.progressView + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.countLabel).offset(2) + } + + self.countLabel.snp.makeConstraints { make in + make.top.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + } + + self.progressBackgroundView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.titleLabel.snp.bottom).offset(12) + make.right.equalToSuperview().offset(-24) + make.height.equalTo(16) + make.bottom.equalToSuperview() + } + + self.progressView.snp.makeConstraints { make in + make.left.equalTo(self.progressBackgroundView).offset(4) + make.top.equalTo(self.progressBackgroundView).offset(4) + make.right.equalTo(self.progressBackgroundView).offset(-4) + make.bottom.equalTo(self.progressBackgroundView).offset(-4) + } + } +} From 5fe8e23e8a028774790d0c4db23c570325000291 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 15 May 2022 18:04:24 +0900 Subject: [PATCH 073/166] =?UTF-8?q?feat:=20=ED=94=BC=EB=93=9C=EB=B0=B1=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +++++++ .../BossStoreFeedbackCountResponse.swift | 19 +++++++++++ .../models/presentation/FeedbackType.swift | 32 +++++++++++++++++++ .../services/FeedbackService.swift | 31 ++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift create mode 100644 3dollar-in-my-pocket-manager/services/FeedbackService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8ecae15..8391148 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -69,6 +69,9 @@ 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */; }; 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */; }; 6E5DCE7C27FDCF1F00CA58EE /* OpenStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */; }; + 6E5E14A12830F5E400B1F450 /* FeedbackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */; }; + 6E5E14A42830F6E900B1F450 /* FeedbackType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */; }; + 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */; }; 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */; }; 6E5F212D281976B200922A99 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212C281976B200922A99 /* Differentiator */; }; 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212E281976B200922A99 /* RxDataSources */; }; @@ -263,6 +266,9 @@ 6E5DCE7727FDCD7800CA58EE /* BossStoreMenuResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreMenuResponse.swift; sourceTree = ""; }; 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreOpenStatusResponse.swift; sourceTree = ""; }; 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenStatus.swift; sourceTree = ""; }; + 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackService.swift; sourceTree = ""; }; + 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackType.swift; sourceTree = ""; }; + 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreFeedbackCountResponse.swift; sourceTree = ""; }; 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleReactor.swift; sourceTree = ""; }; 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; @@ -486,6 +492,7 @@ 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */, 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */, 6EBF1AE627FE65950011268B /* StoreService.swift */, + 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */, ); path = services; sourceTree = ""; @@ -509,6 +516,7 @@ 6E5DCE7927FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift */, 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */, 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */, + 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */, ); path = response; sourceTree = ""; @@ -904,6 +912,7 @@ 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */, 6E5F21332819778E00922A99 /* Menu.swift */, 6E5F3DDD281D6435002282B6 /* AppearanceDay.swift */, + 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */, ); path = presentation; sourceTree = ""; @@ -1198,6 +1207,7 @@ 6E5F3DDC281D61AA002282B6 /* EditScheduleCoordinator.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */, + 6E5E14A12830F5E400B1F450 /* FeedbackService.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, 6E5F3DD8281D611C002282B6 /* WeekDayStackView.swift in Sources */, @@ -1216,6 +1226,7 @@ 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, + 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */, 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, 6E5F3DD2281D2200002282B6 /* GlobalState.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, @@ -1258,6 +1269,7 @@ 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */, + 6E5E14A42830F6E900B1F450 /* FeedbackType.swift in Sources */, 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */, 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift new file mode 100644 index 0000000..609edd9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift @@ -0,0 +1,19 @@ +struct BossStoreFeedbackCountResponse: Decodable { + let count: Int + let feedbackType: FeedbackType + + enum CodingKeys: String, CodingKey { + case count + case feedbackType + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.count = try values.decodeIfPresent(Int.self, forKey: .count) ?? 0 + self.feedbackType = try values.decodeIfPresent( + FeedbackType.self, + forKey: .feedbackType + ) ?? .bossIsKind + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift b/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift new file mode 100644 index 0000000..c3df509 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift @@ -0,0 +1,32 @@ +import Foundation + +enum FeedbackType: String, Decodable { + case bossIsKind = "BOSS_IS_KIND" + case easyToEat = "EASY_TO_EAT" + case foodIsDelecious = "FOOD_IS_DELECIOUS" + case platingIsBeautiful = "PLATING_IS_BEAUTIFUL" + case priceIsCheap = "PRICE_IS_CHEAP" + case thereArePlacesToEatAround = "THERE_ARE_PLACES_TO_EAT_AROUND" + + var title: String { + switch self { + case .bossIsKind: + return "🙏 사장님이 친절해요" + + case .easyToEat: + return "🚀 먹기 간편해요" + + case .foodIsDelecious: + return "🍕 음식이 맛있어요" + + case .platingIsBeautiful: + return "🎀 플레이팅이 예뻐요" + + case .priceIsCheap: + return "🌈 가격이 저렴해요" + + case .thereArePlacesToEatAround: + return "🛋 주변에 먹을 곳이 있어요" + } + } +} diff --git a/3dollar-in-my-pocket-manager/services/FeedbackService.swift b/3dollar-in-my-pocket-manager/services/FeedbackService.swift new file mode 100644 index 0000000..1b0b19a --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/FeedbackService.swift @@ -0,0 +1,31 @@ +import RxSwift +import Alamofire + +protocol FeedbackServiceType { + func fetchTotalStatistics(storeId: String) -> Observable<[BossStoreFeedbackCountResponse]> +} + +struct FeedbackService: FeedbackServiceType { + func fetchTotalStatistics(storeId: String) -> Observable<[BossStoreFeedbackCountResponse]> { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(storeId)/feedbacks/full" + let headers = HTTPUtils.jsonHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + headers: headers + ).responseDecodable( + of: ResponseContainer.self + ) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } +} From f3e7af88335931e62371b02bdd8301d5f8a96c46 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 15 May 2022 21:54:39 +0900 Subject: [PATCH 074/166] =?UTF-8?q?feat:=20=EC=A0=84=EC=B2=B4=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=ED=99=94=EB=A9=B4=20=EB=A6=AC=EC=95=A1=ED=84=B0=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 ++++ .../domains/home/HomeReactor.swift | 8 +++- .../domains/home/HomeViewController.swift | 3 +- .../TotalStatisticsReactor.swift | 46 +++++++++++++++++++ .../models/presentation/Statistic.swift | 9 ++++ .../utils/UserDefaultsUtils.swift | 10 ++++ 6 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/Statistic.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8391148..52c834a 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -72,6 +72,8 @@ 6E5E14A12830F5E400B1F450 /* FeedbackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */; }; 6E5E14A42830F6E900B1F450 /* FeedbackType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */; }; 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */; }; + 6E5E14A82830F9B700B1F450 /* TotalStatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A72830F9B700B1F450 /* TotalStatisticsReactor.swift */; }; + 6E5E14AA28312BBA00B1F450 /* Statistic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A928312BBA00B1F450 /* Statistic.swift */; }; 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */; }; 6E5F212D281976B200922A99 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212C281976B200922A99 /* Differentiator */; }; 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212E281976B200922A99 /* RxDataSources */; }; @@ -269,6 +271,8 @@ 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackService.swift; sourceTree = ""; }; 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackType.swift; sourceTree = ""; }; 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreFeedbackCountResponse.swift; sourceTree = ""; }; + 6E5E14A72830F9B700B1F450 /* TotalStatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsReactor.swift; sourceTree = ""; }; + 6E5E14A928312BBA00B1F450 /* Statistic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Statistic.swift; sourceTree = ""; }; 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleReactor.swift; sourceTree = ""; }; 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; @@ -913,6 +917,7 @@ 6E5F21332819778E00922A99 /* Menu.swift */, 6E5F3DDD281D6435002282B6 /* AppearanceDay.swift */, 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */, + 6E5E14A928312BBA00B1F450 /* Statistic.swift */, ); path = presentation; sourceTree = ""; @@ -941,6 +946,7 @@ 6E95E858282FD3CE0004C08D /* subviews */, 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */, 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */, + 6E5E14A72830F9B700B1F450 /* TotalStatisticsReactor.swift */, ); path = "total-statistics"; sourceTree = ""; @@ -1162,6 +1168,7 @@ 6E1F54A327CB79120050BBBA /* LoginResponse.swift in Sources */, 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */, 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */, + 6E5E14AA28312BBA00B1F450 /* Statistic.swift in Sources */, 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */, 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */, 6E1E5BAA2827EBE5003A1B51 /* SettingViewController.swift in Sources */, @@ -1190,6 +1197,7 @@ 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */, + 6E5E14A82830F9B700B1F450 /* TotalStatisticsReactor.swift in Sources */, 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 000cbbf..4cc42cd 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -37,17 +37,20 @@ final class HomeReactor: BaseReactor, Reactor { private let storeSerivce: StoreServiceType private let locationManager: LocationManagerProtocol private let backgroundTaskManager: BackgroundTaskManagerProtocol + private var userDefaults: UserDefaultsUtils init( mapService: MapServiceProtocol, storeService: StoreServiceType, locationManager: LocationManagerProtocol, - backgroundTaskManager: BackgroundTaskManagerProtocol + backgroundTaskManager: BackgroundTaskManagerProtocol, + userDefaults: UserDefaultsUtils ) { self.mapService = mapService self.storeSerivce = storeService self.locationManager = locationManager self.backgroundTaskManager = backgroundTaskManager + self.userDefaults = userDefaults } func mutate(action: Action) -> Observable { @@ -157,6 +160,9 @@ final class HomeReactor: BaseReactor, Reactor { private func fetchMyStoreInfo() -> Observable { return self.storeSerivce.fetchMyStore() .map(Store.init(response:)) + .do(onNext: { [weak self] store in + self?.userDefaults.storeId = store.id + }) .map { .setStore($0) } .catch { .just(.showErrorAlert($0)) } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index a579a2a..46e0477 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -10,7 +10,8 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { mapService: MapService(), storeService: StoreService(), locationManager: LocationManager.shared, - backgroundTaskManager: BackgroundTaskManager.shared + backgroundTaskManager: BackgroundTaskManager.shared, + userDefaults: UserDefaultsUtils() ) private weak var coordinator: HomeCoordinator? diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift new file mode 100644 index 0000000..450e6f5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -0,0 +1,46 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class TotalStatisticsReactor: Reactor { + enum Action { + case viewDidLoad + } + + enum Mutation { + case setStatistics([Statistic]) + case showErrorAlert(Error) + } + + struct State { + var statistics: [Statistic] = [] + } + + var initialState = State() + private let feedbackService: FeedbackServiceType + private var userDefaults: UserDefaultsUtils + + init( + feedbackService: FeedbackServiceType, + userDefaults: UserDefaultsUtils + ) { + self.feedbackService = feedbackService + self.userDefaults = userDefaults + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + return self.fetchStatistics() + } + } + + private func fetchStatistics() -> Observable { + let storeId = self.userDefaults.storeId + + return self.feedbackService.fetchTotalStatistics(storeId: storeId) + .map { $0.map(Statistic.init(response:)) } + .map { .setStatistics($0) } + .catch { .just(.showErrorAlert($0)) } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift new file mode 100644 index 0000000..d3ff44d --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift @@ -0,0 +1,9 @@ +struct Statistic { + let type: FeedbackType + let count: Int + + init(response: BossStoreFeedbackCountResponse) { + self.type = response.feedbackType + self.count = response.count + } +} diff --git a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift index 412727f..4d7a147 100644 --- a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift @@ -3,6 +3,7 @@ import Foundation struct UserDefaultsUtils { private let KEY_TOKEN = "KEY_TOKEN" private let KEY_USER_ID = "KEY_USER_ID" + private let KEY_STORE_ID = "KEY_STORE_ID" let instance: UserDefaults @@ -32,4 +33,13 @@ struct UserDefaultsUtils { return self.instance.integer(forKey: self.KEY_USER_ID) } } + + var storeId: String { + set { + self.instance.set(newValue, forKey: self.KEY_STORE_ID) + } + get { + return self.instance.string(forKey: self.KEY_STORE_ID) ?? "" + } + } } From 40dfef145eaccf78a62b6f132ec03f8061ee71a6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 15 May 2022 22:32:27 +0900 Subject: [PATCH 075/166] =?UTF-8?q?feat:=20=EC=A0=84=EC=B2=B4=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=B0=94=EC=9D=B8?= =?UTF-8?q?=EB=94=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../TotalStatisticsCoordinator.swift | 3 ++ .../TotalStatisticsReactor.swift | 16 +++++- .../TotalStatisticsViewController.swift | 49 +++++++++++++------ .../cells/TotalStatisticsTableViewCell.swift | 8 ++- .../models/presentation/FeedbackType.swift | 14 +++--- .../models/presentation/Statistic.swift | 2 +- .../strings/en.lproj/Localizations.strings | 8 +++ .../services/FeedbackService.swift | 2 +- 9 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsCoordinator.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 52c834a..e3606df 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -74,6 +74,7 @@ 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */; }; 6E5E14A82830F9B700B1F450 /* TotalStatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A72830F9B700B1F450 /* TotalStatisticsReactor.swift */; }; 6E5E14AA28312BBA00B1F450 /* Statistic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A928312BBA00B1F450 /* Statistic.swift */; }; + 6E5E14AC2831322D00B1F450 /* TotalStatisticsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14AB2831322D00B1F450 /* TotalStatisticsCoordinator.swift */; }; 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */; }; 6E5F212D281976B200922A99 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212C281976B200922A99 /* Differentiator */; }; 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212E281976B200922A99 /* RxDataSources */; }; @@ -273,6 +274,7 @@ 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreFeedbackCountResponse.swift; sourceTree = ""; }; 6E5E14A72830F9B700B1F450 /* TotalStatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsReactor.swift; sourceTree = ""; }; 6E5E14A928312BBA00B1F450 /* Statistic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Statistic.swift; sourceTree = ""; }; + 6E5E14AB2831322D00B1F450 /* TotalStatisticsCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsCoordinator.swift; sourceTree = ""; }; 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleReactor.swift; sourceTree = ""; }; 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoSectionModel.swift; sourceTree = ""; }; 6E5F21332819778E00922A99 /* Menu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Menu.swift; sourceTree = ""; }; @@ -947,6 +949,7 @@ 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */, 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */, 6E5E14A72830F9B700B1F450 /* TotalStatisticsReactor.swift */, + 6E5E14AB2831322D00B1F450 /* TotalStatisticsCoordinator.swift */, ); path = "total-statistics"; sourceTree = ""; @@ -1198,6 +1201,7 @@ 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */, 6E5E14A82830F9B700B1F450 /* TotalStatisticsReactor.swift in Sources */, + 6E5E14AC2831322D00B1F450 /* TotalStatisticsCoordinator.swift in Sources */, 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsCoordinator.swift new file mode 100644 index 0000000..d39799f --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsCoordinator.swift @@ -0,0 +1,3 @@ +protocol TotalStatisticsCoordinator: BaseCoordinator, AnyObject { + +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index 450e6f5..3c69f02 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -2,7 +2,7 @@ import ReactorKit import RxSwift import RxCocoa -final class TotalStatisticsReactor: Reactor { +final class TotalStatisticsReactor: BaseReactor, Reactor { enum Action { case viewDidLoad } @@ -35,6 +35,20 @@ final class TotalStatisticsReactor: Reactor { } } + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setStatistics(let statistics): + newState.statistics = statistics + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + private func fetchStatistics() -> Observable { let storeId = self.userDefaults.storeId diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index f8f5605..f824c1a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -1,7 +1,16 @@ import UIKit -final class TotalStatisticsViewController: BaseViewController { +import RxSwift +import RxCocoa +import ReactorKit + +final class TotalStatisticsViewController: BaseViewController, View, TotalStatisticsCoordinator { private let totalStatisticsView = TotalStatisticsView() + private let totalStatisticsReactor = TotalStatisticsReactor( + feedbackService: FeedbackService(), + userDefaults: UserDefaultsUtils() + ) + private weak var coordinator: TotalStatisticsCoordinator? static func instance() -> TotalStatisticsViewController { return TotalStatisticsViewController(nibName: nil, bundle: nil) @@ -14,22 +23,32 @@ final class TotalStatisticsViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - self.totalStatisticsView.tableView.dataSource = self - self.totalStatisticsView.tableView.delegate = self + self.coordinator = self + self.reactor = self.totalStatisticsReactor + self.totalStatisticsReactor.action.onNext(.viewDidLoad) } -} - -extension TotalStatisticsViewController: UITableViewDataSource, UITableViewDelegate { - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 4 + + override func bindEvent() { + self.totalStatisticsReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) } - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - guard let cell = tableView.dequeueReusableCell( - withIdentifier: TotalStatisticsTableViewCell.registerId, - for: indexPath - ) as? TotalStatisticsTableViewCell else { return BaseTableViewCell() } - - return cell + func bind(reactor: TotalStatisticsReactor) { + // Bind State + reactor.state + .map { $0.statistics } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.totalStatisticsView.tableView.rx.items( + cellIdentifier: TotalStatisticsTableViewCell.registerId, + cellType: TotalStatisticsTableViewCell.self + )) { row, statistic, cell in + cell.bind(statistics: statistic) + } + .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift index ac5f25a..bf0e558 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift @@ -6,7 +6,6 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { private let titleLabel = UILabel().then { $0.font = .bold(size: 14) $0.textColor = .gray95 - $0.text = "🍕 음식이 맛있어요" } private let countLabel = PaddingLabel( @@ -17,7 +16,6 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { ).then { $0.font = .regular(size: 12) $0.textColor = .green - $0.text = "400개" $0.layer.borderColor = UIColor.green.cgColor $0.layer.borderWidth = 1 $0.layer.cornerRadius = 11 @@ -37,6 +35,7 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { override func setup() { self.selectionStyle = .none + self.backgroundColor = .clear self.addSubViews([ self.titleLabel, self.countLabel, @@ -71,4 +70,9 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { make.bottom.equalTo(self.progressBackgroundView).offset(-4) } } + + func bind(statistics: Statistic) { + self.titleLabel.text = statistics.type.title + self.countLabel.text = "\(statistics.count)개" + } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift b/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift index c3df509..9768bc7 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift @@ -3,7 +3,7 @@ import Foundation enum FeedbackType: String, Decodable { case bossIsKind = "BOSS_IS_KIND" case easyToEat = "EASY_TO_EAT" - case foodIsDelecious = "FOOD_IS_DELECIOUS" + case foodIsDelecious = "FOOD_IS_DELICIOUS" case platingIsBeautiful = "PLATING_IS_BEAUTIFUL" case priceIsCheap = "PRICE_IS_CHEAP" case thereArePlacesToEatAround = "THERE_ARE_PLACES_TO_EAT_AROUND" @@ -11,22 +11,22 @@ enum FeedbackType: String, Decodable { var title: String { switch self { case .bossIsKind: - return "🙏 사장님이 친절해요" + return "statistics_boss_is_kind".localized case .easyToEat: - return "🚀 먹기 간편해요" + return "statistics_easy_to_eat".localized case .foodIsDelecious: - return "🍕 음식이 맛있어요" + return "statistics_food_is_delecious".localized case .platingIsBeautiful: - return "🎀 플레이팅이 예뻐요" + return "statistics_plating_is_beautiful".localized case .priceIsCheap: - return "🌈 가격이 저렴해요" + return "statistics_price_is_cheap".localized case .thereArePlacesToEatAround: - return "🛋 주변에 먹을 곳이 있어요" + return "statistics_there_are_places_to_eat_around".localized } } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift index d3ff44d..2961a08 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift @@ -1,4 +1,4 @@ -struct Statistic { +struct Statistic: Equatable { let type: FeedbackType let count: Int diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index f7555a2..44217e8 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -101,5 +101,13 @@ "edit_schedule_location" = "출몰 지역"; "edit_schedule_save" = "저장하기"; +// Statistics +"statistics_boss_is_kind" = "🙏 사장님이 친절해요"; +"statistics_easy_to_eat" = "🚀 먹기 간편해요"; +"statistics_food_is_delecious" = "🍕 음식이 맛있어요"; +"statistics_plating_is_beautiful" = "🎀 플레이팅이 예뻐요"; +"statistics_price_is_cheap" = "🌈 가격이 저렴해요"; +"statistics_there_are_places_to_eat_around" = "🛋 주변에 먹을 곳이 있어요"; + // Seting "setting_title" = "설정"; diff --git a/3dollar-in-my-pocket-manager/services/FeedbackService.swift b/3dollar-in-my-pocket-manager/services/FeedbackService.swift index 1b0b19a..6c03b57 100644 --- a/3dollar-in-my-pocket-manager/services/FeedbackService.swift +++ b/3dollar-in-my-pocket-manager/services/FeedbackService.swift @@ -16,7 +16,7 @@ struct FeedbackService: FeedbackServiceType { method: .get, headers: headers ).responseDecodable( - of: ResponseContainer.self + of: ResponseContainer<[BossStoreFeedbackCountResponse]>.self ) { response in if response.isSuccess() { observer.processValue(response: response) From bc541e75be32fe83f474a3d5f34b45c0e175e8c7 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 18 May 2022 23:12:32 +0900 Subject: [PATCH 076/166] =?UTF-8?q?feat:=20Firebase=20app=20distribution?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 57 ++++++++- .../xcshareddata/swiftpm/Package.resolved | 108 ++++++++++++++++++ .../AppDelegate.swift | 6 + .../GoogleService-Info.plist | 36 ++++++ .../membership/signin/SigninCoordinator.swift | 7 ++ .../domains/splash/SplashView.swift | 2 +- 6 files changed, 213 insertions(+), 3 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/GoogleService-Info.plist diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index e3606df..e52569e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -53,6 +53,12 @@ 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E479461280AE42000A3D96C /* PaddingLabel.swift */; }; + 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */; }; + 6E4C8BCE28351E33005D9D9B /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BCD28351E33005D9D9B /* FirebaseAnalytics */; }; + 6E4C8BD028351E33005D9D9B /* FirebaseAppDistribution-Beta in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BCF28351E33005D9D9B /* FirebaseAppDistribution-Beta */; }; + 6E4C8BD228351E33005D9D9B /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */; }; + 6E4C8BD428351E33005D9D9B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */; }; + 6E4C8BD628351E33005D9D9B /* FirebaseRemoteConfigSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */; }; @@ -253,6 +259,7 @@ 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E479461280AE42000A3D96C /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; + 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapService.swift; sourceTree = ""; }; 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaverMapResponse.swift; sourceTree = ""; }; 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReverseGeoLocation.swift; sourceTree = ""; }; @@ -373,9 +380,11 @@ 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6ED5DF252827565300BE8FD0 /* Base.framework in Frameworks */, + 6E4C8BD428351E33005D9D9B /* FirebaseMessaging in Frameworks */, 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, + 6E4C8BCE28351E33005D9D9B /* FirebaseAnalytics in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */, @@ -384,9 +393,12 @@ 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, + 6E4C8BD628351E33005D9D9B /* FirebaseRemoteConfigSwift in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */, + 6E4C8BD228351E33005D9D9B /* FirebaseFirestore in Frameworks */, + 6E4C8BD028351E33005D9D9B /* FirebaseAppDistribution-Beta in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -749,6 +761,7 @@ 6EB94EAC27CB209000609E77 /* Assets.xcassets */, 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */, 6EB94EB127CB209000609E77 /* Info.plist */, + 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */, ); path = "3dollar-in-my-pocket-manager"; sourceTree = ""; @@ -1026,6 +1039,11 @@ 6E6C9C76280BEE26009AFAE8 /* Kingfisher */, 6E5F212C281976B200922A99 /* Differentiator */, 6E5F212E281976B200922A99 /* RxDataSources */, + 6E4C8BCD28351E33005D9D9B /* FirebaseAnalytics */, + 6E4C8BCF28351E33005D9D9B /* FirebaseAppDistribution-Beta */, + 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */, + 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */, + 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -1066,6 +1084,7 @@ 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */, 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */, 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */, + 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -1099,6 +1118,7 @@ files = ( 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */, + 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */, 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, ); @@ -1465,7 +1485,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager-dev"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1503,7 +1523,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1536,6 +1556,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 9.0.0; + }; + }; 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/RxSwiftCommunity/RxDataSources.git"; @@ -1619,6 +1647,31 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 6E4C8BCD28351E33005D9D9B /* FirebaseAnalytics */ = { + isa = XCSwiftPackageProductDependency; + package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAnalytics; + }; + 6E4C8BCF28351E33005D9D9B /* FirebaseAppDistribution-Beta */ = { + isa = XCSwiftPackageProductDependency; + package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = "FirebaseAppDistribution-Beta"; + }; + 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */ = { + isa = XCSwiftPackageProductDependency; + package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseFirestore; + }; + 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */ = { + isa = XCSwiftPackageProductDependency; + package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseMessaging; + }; + 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseRemoteConfigSwift; + }; 6E5F212C281976B200922A99 /* Differentiator */ = { isa = XCSwiftPackageProductDependency; package = 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4831c31..98ac7df 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,14 @@ { "pins" : [ + { + "identity" : "abseil-cpp-swiftpm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git", + "state" : { + "revision" : "d302de612e3d57c6f4afaf087da18fba8eac72a7", + "version" : "0.20220203.1" + } + }, { "identity" : "alamofire", "kind" : "remoteSourceControl", @@ -9,6 +18,69 @@ "version" : "5.5.0" } }, + { + "identity" : "boringssl-swiftpm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/boringssl-SwiftPM.git", + "state" : { + "revision" : "79db6516894a932d0ddaff3b05b9da1e4f6c4069", + "version" : "0.9.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "cfa854c9c1073c4d1b83b20dfcb1ef7ceb85388b", + "version" : "9.0.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "6a3123fab90f3884167990bee9bb30097d99c98c", + "version" : "9.0.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "b905c49326b72211531ed9d7baa02d724828a8dc", + "version" : "9.1.4" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "f4abe56ce62a779e64b525eb133c8fc2a84bbc1f", + "version" : "7.7.1" + } + }, + { + "identity" : "grpc-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/grpc/grpc-ios.git", + "state" : { + "revision" : "87cbe43709371123e95ca10d6956938741388af7", + "version" : "1.44.1-grpc" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "4e9bbf2808b8fee444e84a48f5f3c12641987d3e", + "version" : "1.7.2" + } + }, { "identity" : "kakao-ios-sdk", "kind" : "remoteSourceControl", @@ -27,6 +99,33 @@ "version" : "7.2.1" } }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b", + "version" : "1.22.2" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "7ee9ef9f627d85cbe1b8c4f49a3ed26eed216c77", + "version" : "2.30908.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "46c1e6b5ac09d8f82c991061c659f67e573d425d", + "version" : "2.1.0" + } + }, { "identity" : "reactorkit", "kind" : "remoteSourceControl", @@ -72,6 +171,15 @@ "version" : "7.1.5" } }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "e1499bc69b9040b29184f7f2996f7bab467c1639", + "version" : "1.19.0" + } + }, { "identity" : "then", "kind" : "remoteSourceControl", diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 9af94bf..6fa2013 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -2,6 +2,7 @@ import UIKit import BackgroundTasks import KakaoSDKCommon +import FirebaseCore @main class AppDelegate: UIResponder, UIApplicationDelegate { @@ -11,6 +12,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { ) -> Bool { self.initializeKakaoSDK() self.initializeNetworkLogger() + self.initializeFirebase() BackgroundTaskManager.shared.registerBackgroundTask() return true } @@ -44,5 +46,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { NetworkActivityLogger.shared.startLogging() NetworkActivityLogger.shared.level = .debug } + + private func initializeFirebase() { + FirebaseApp.configure() + } } diff --git a/3dollar-in-my-pocket-manager/GoogleService-Info.plist b/3dollar-in-my-pocket-manager/GoogleService-Info.plist new file mode 100644 index 0000000..22db871 --- /dev/null +++ b/3dollar-in-my-pocket-manager/GoogleService-Info.plist @@ -0,0 +1,36 @@ + + + + + CLIENT_ID + 203450930638-vbkv0dosatfehq7ci95rrgh59agaej5l.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.203450930638-vbkv0dosatfehq7ci95rrgh59agaej5l + ANDROID_CLIENT_ID + 203450930638-g19op59heflko3va5je3snrs1rpurfr6.apps.googleusercontent.com + API_KEY + AIzaSyBtY-FC0ar0VUogKVTzDlDx0PCiocpHauI + GCM_SENDER_ID + 203450930638 + PLIST_VERSION + 1 + BUNDLE_ID + com.macgongmon.-dollar-in-my-pocket-manager-dev + PROJECT_ID + dollars-manager-dev + STORAGE_BUCKET + dollars-manager-dev.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:203450930638:ios:a2dbc0db78d718f165479f + + \ No newline at end of file diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift index 33678fd..9d281d7 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninCoordinator.swift @@ -27,6 +27,13 @@ extension SigninCoordinator { } func goToMain() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + sceneDelegate.goToMain() } } diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift index 2cdbe2d..2992928 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift @@ -3,6 +3,6 @@ import UIKit final class SplashView: BaseView { override func setup() { - self.backgroundColor = .red + self.backgroundColor = .white } } From c7f14b12e2f636b9e24a54b9fd964e5a99c3c5bf Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 28 May 2022 11:38:28 +0900 Subject: [PATCH 077/166] =?UTF-8?q?feat:=20=ED=86=B5=EA=B3=84=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=ED=83=AD=20=EB=86=92=EC=9D=B4=20=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/statistics/StatisticsView.swift | 32 +++++++++++++++++-- .../TotalStatisticsView.swift | 14 ++++++-- .../TotalStatisticsViewController.swift | 11 ++++++- .../cells/TotalStatisticsTableViewCell.swift | 12 +++++-- .../BossStoreFeedbackCountResponse.swift | 3 ++ .../models/presentation/Statistic.swift | 2 ++ 6 files changed, 67 insertions(+), 7 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift index 80b98c2..6f00d48 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift @@ -1,6 +1,12 @@ import UIKit final class StatisticsView: BaseView { + private let scrollView = UIScrollView().then { + $0.backgroundColor = .gray0 + } + + private let scrollViewContainerView = UIView() + private let reviewCountLabel = ReviewCountLabel() private let filterButton = StatisticsFilterButton() @@ -8,15 +14,30 @@ final class StatisticsView: BaseView { let containerView = UIView() override func setup() { - self.backgroundColor = .gray0 - self.addSubViews([ + self.scrollViewContainerView.addSubViews([ self.reviewCountLabel, self.filterButton, self.containerView ]) + self.scrollView.addSubview(self.scrollViewContainerView) + self.addSubview(self.scrollView) } override func bindConstraints() { + self.scrollView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalToSuperview() + make.bottom.equalToSuperview() + } + + self.scrollViewContainerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + make.width.equalToSuperview() + make.top.equalTo(self.reviewCountLabel).offset(-20).priority(.high) + make.bottom.equalTo(self.containerView).priority(.high) + } + self.reviewCountLabel.snp.makeConstraints { make in make.left.equalToSuperview().offset(24) make.top.equalToSuperview().offset(20) @@ -33,6 +54,13 @@ final class StatisticsView: BaseView { make.right.equalToSuperview() make.bottom.equalToSuperview() make.top.equalTo(self.filterButton.snp.bottom).offset(28) + make.height.equalTo(0) + } + } + + func updateContainerViewHeight(tableViewHeight: CGFloat) { + self.containerView.snp.updateConstraints { make in + make.height.equalTo(tableViewHeight) } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift index e0d099f..def6efa 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift @@ -15,7 +15,8 @@ final class TotalStatisticsView: BaseView { TotalStatisticsTableViewCell.self, forCellReuseIdentifier: TotalStatisticsTableViewCell.registerId ) - $0.rowHeight = UITableView.automaticDimension + $0.rowHeight = TotalStatisticsTableViewCell.height + $0.isScrollEnabled = false } override func setup() { @@ -28,8 +29,17 @@ final class TotalStatisticsView: BaseView { self.tableView.snp.makeConstraints { make in make.left.equalToSuperview() make.right.equalToSuperview() - make.bottom.equalToSuperview() make.top.equalToSuperview() + make.height.equalTo(0) } } + + func calculatorTableViewHeight(itemCount: Int) -> CGFloat { + let height = TotalStatisticsTableViewCell.height * CGFloat(itemCount) + 16 + + self.tableView.snp.updateConstraints { make in + make.height.equalTo(height) + } + return height + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index f824c1a..73a4d27 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -43,11 +43,20 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis .map { $0.statistics } .distinctUntilChanged() .asDriver(onErrorJustReturn: []) + .do(onNext: { [weak self] statistics in + if let statisticsView = self?.parent?.parent?.view as? StatisticsView, + let totalStatisticsViewHeight = self?.totalStatisticsView + .calculatorTableViewHeight(itemCount: statistics.count) { + statisticsView.updateContainerViewHeight( + tableViewHeight: totalStatisticsViewHeight + ) + } + }) .drive(self.totalStatisticsView.tableView.rx.items( cellIdentifier: TotalStatisticsTableViewCell.registerId, cellType: TotalStatisticsTableViewCell.self )) { row, statistic, cell in - cell.bind(statistics: statistic) + cell.bind(statistics: statistic, isTopRate: row < 3) } .disposed(by: self.disposeBag) } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift index bf0e558..8f2c8f5 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift @@ -2,6 +2,7 @@ import UIKit final class TotalStatisticsTableViewCell: BaseTableViewCell { static let registerId = "\(TotalStatisticsTableViewCell.self)" + static let height: CGFloat = 74 private let titleLabel = UILabel().then { $0.font = .bold(size: 14) @@ -30,7 +31,6 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { $0.progressTintColor = .green $0.layer.cornerRadius = 4 $0.trackTintColor = .clear - $0.progress = 0.5 } override func setup() { @@ -71,8 +71,16 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { } } - func bind(statistics: Statistic) { + func bind(statistics: Statistic, isTopRate: Bool) { self.titleLabel.text = statistics.type.title self.countLabel.text = "\(statistics.count)개" + self.progressView.progress = Float(statistics.ratio) + self.setProgressBar(isTopRate: isTopRate) + } + + private func setProgressBar(isTopRate: Bool) { + self.progressBackgroundView.backgroundColor + = isTopRate ? UIColor(r: 242, g: 251, b: 247) : .gray5 + self.progressView.progressTintColor = isTopRate ? .green : .gray10 } } diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift index 609edd9..e5fad38 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift @@ -1,10 +1,12 @@ struct BossStoreFeedbackCountResponse: Decodable { let count: Int let feedbackType: FeedbackType + let ratio: Double enum CodingKeys: String, CodingKey { case count case feedbackType + case ratio } init(from decoder: Decoder) throws { @@ -15,5 +17,6 @@ struct BossStoreFeedbackCountResponse: Decodable { FeedbackType.self, forKey: .feedbackType ) ?? .bossIsKind + self.ratio = try values.decodeIfPresent(Double.self, forKey: .ratio) ?? 0 } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift index 2961a08..fc96ba6 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift @@ -1,9 +1,11 @@ struct Statistic: Equatable { let type: FeedbackType let count: Int + let ratio: Double init(response: BossStoreFeedbackCountResponse) { self.type = response.feedbackType self.count = response.count + self.ratio = response.ratio } } From 26506eb8799f4b4c59c43c97f1607b3d683f3567 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 28 May 2022 14:36:12 +0900 Subject: [PATCH 078/166] =?UTF-8?q?feat:=20=EC=9D=BC=EB=B3=84=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=20=ED=99=94=EB=A9=B4=20=EB=B7=B0=20=EA=B7=B8=EB=A6=AC?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 56 +++++++++++++-- .../my/statistics/StatisticsReactor.swift | 52 ++++++++++++++ .../my/statistics/StatisticsView.swift | 4 +- .../statistics/StatisticsViewController.swift | 72 +++++++++++++++++-- .../DailyStatisticsView.swift | 39 ++++++++++ .../DailyStatisticsViewController.swift | 13 ++++ .../subviews/DailyStatisticsDayView.swift | 38 ++++++++++ .../cells/DailyStatisticsTableViewCell.swift | 37 ++++++++++ .../subviews/ReviewCountLabel.swift | 3 +- .../subviews/StatisticsFilterButton.swift | 5 +- .../TotalStatisticsReactor.swift | 14 +++- .../TotalStatisticsViewController.swift | 14 ++++ .../strings/en.lproj/Localizations.strings | 3 + 13 files changed, 332 insertions(+), 18 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index e52569e..f8769df 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -35,6 +35,8 @@ 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; + 6E2CD76C284101B9007506FB /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; platformFilter = ios; }; + 6E2CD76D284101B9007506FB /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; @@ -119,6 +121,11 @@ 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; + 6E91A9852841D4B30090361F /* StatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9842841D4B30090361F /* StatisticsReactor.swift */; }; + 6E91A9892841DC110090361F /* DailyStatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9882841DC110090361F /* DailyStatisticsView.swift */; }; + 6E91A98B2841DCAF0090361F /* DailyStatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */; }; + 6E91A98F2841DD9C0090361F /* DailyStatisticsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A98E2841DD9C0090361F /* DailyStatisticsTableViewCell.swift */; }; + 6E91A9912841E09C0090361F /* DailyStatisticsDayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9902841E09C0090361F /* DailyStatisticsDayView.swift */; }; 6E95E856282FD2140004C08D /* TotalStatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */; }; 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; @@ -138,8 +145,6 @@ 6EC5E434282BDDDA00AD571C /* StatisticsFilterButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC5E433282BDDDA00AD571C /* StatisticsFilterButton.swift */; }; 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */; }; 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */; }; - 6ED5DF252827565300BE8FD0 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; }; - 6ED5DF262827565300BE8FD0 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EFA3A0E27F3E1E000C13906 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; @@ -195,13 +200,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6ED5DF272827565300BE8FD0 /* Embed Frameworks */ = { + 6E2CD76E284101B9007506FB /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6ED5DF262827565300BE8FD0 /* Base.framework in Embed Frameworks */, + 6E2CD76D284101B9007506FB /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -316,6 +321,11 @@ 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleTableViewCell.swift; sourceTree = ""; }; 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewCell.swift; sourceTree = ""; }; + 6E91A9842841D4B30090361F /* StatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsReactor.swift; sourceTree = ""; }; + 6E91A9882841DC110090361F /* DailyStatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsView.swift; sourceTree = ""; }; + 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsViewController.swift; sourceTree = ""; }; + 6E91A98E2841DD9C0090361F /* DailyStatisticsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsTableViewCell.swift; sourceTree = ""; }; + 6E91A9902841E09C0090361F /* DailyStatisticsDayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsDayView.swift; sourceTree = ""; }; 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsViewController.swift; sourceTree = ""; }; 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsTableViewCell.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; @@ -379,7 +389,6 @@ 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6ED5DF252827565300BE8FD0 /* Base.framework in Frameworks */, 6E4C8BD428351E33005D9D9B /* FirebaseMessaging in Frameworks */, 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, @@ -396,6 +405,7 @@ 6E4C8BD628351E33005D9D9B /* FirebaseRemoteConfigSwift in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, + 6E2CD76C284101B9007506FB /* Base.framework in Frameworks */, CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */, 6E4C8BD228351E33005D9D9B /* FirebaseFirestore in Frameworks */, 6E4C8BD028351E33005D9D9B /* FirebaseAppDistribution-Beta in Frameworks */, @@ -699,6 +709,33 @@ path = cells; sourceTree = ""; }; + 6E91A9872841DBF10090361F /* daily-statistics */ = { + isa = PBXGroup; + children = ( + 6E91A98C2841DD870090361F /* subviews */, + 6E91A9882841DC110090361F /* DailyStatisticsView.swift */, + 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */, + ); + path = "daily-statistics"; + sourceTree = ""; + }; + 6E91A98C2841DD870090361F /* subviews */ = { + isa = PBXGroup; + children = ( + 6E91A98D2841DD8B0090361F /* cells */, + 6E91A9902841E09C0090361F /* DailyStatisticsDayView.swift */, + ); + path = subviews; + sourceTree = ""; + }; + 6E91A98D2841DD8B0090361F /* cells */ = { + isa = PBXGroup; + children = ( + 6E91A98E2841DD9C0090361F /* DailyStatisticsTableViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E95E858282FD3CE0004C08D /* subviews */ = { isa = PBXGroup; children = ( @@ -779,10 +816,12 @@ 6EC5E42A282BD73900AD571C /* statistics */ = { isa = PBXGroup; children = ( + 6E91A9872841DBF10090361F /* daily-statistics */, 6EF1D496282D361100DA9D35 /* total-statistics */, 6EC5E42E282BD7D200AD571C /* subviews */, 6EC5E42C282BD77A00AD571C /* StatisticsView.swift */, 6EC5E431282BDB3000AD571C /* StatisticsViewController.swift */, + 6E91A9842841D4B30090361F /* StatisticsReactor.swift */, ); path = statistics; sourceTree = ""; @@ -1011,7 +1050,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6ED5DF272827565300BE8FD0 /* Embed Frameworks */, + 6E2CD76E284101B9007506FB /* Embed Frameworks */, ); buildRules = ( ); @@ -1202,6 +1241,7 @@ 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, + 6E91A9892841DC110090361F /* DailyStatisticsView.swift in Sources */, 6EC5E432282BDB3000AD571C /* StatisticsViewController.swift in Sources */, 6E5F3DDE281D6435002282B6 /* AppearanceDay.swift in Sources */, 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */, @@ -1213,6 +1253,7 @@ 6E1E5BAE2827EE5F003A1B51 /* SettingTableViewCell.swift in Sources */, 6E5DCE6327FDB04600CA58EE /* Region.swift in Sources */, 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */, + 6E91A98B2841DCAF0090361F /* DailyStatisticsViewController.swift in Sources */, 6EE0CFA527CB573E0027A426 /* KakaoSignInManager.swift in Sources */, 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */, 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, @@ -1237,6 +1278,7 @@ 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */, 6EE0CFC527CB65C80027A426 /* UserDefaultsUtils.swift in Sources */, 6E5F3DDC281D61AA002282B6 /* EditScheduleCoordinator.swift in Sources */, + 6E91A98F2841DD9C0090361F /* DailyStatisticsTableViewCell.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */, 6E5E14A12830F5E400B1F450 /* FeedbackService.swift in Sources */, @@ -1284,6 +1326,7 @@ 6E142D6227D785A40084480C /* SignupView.swift in Sources */, 6E1AB7A5280D8B040059DCF4 /* EditIntroductionReactor.swift in Sources */, 6E5DCE6E27FDC93000CA58EE /* BossStoreAppearanceDayResponse.swift in Sources */, + 6E91A9852841D4B30090361F /* StatisticsReactor.swift in Sources */, 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */, 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */, 6E5F21342819778E00922A99 /* Menu.swift in Sources */, @@ -1311,6 +1354,7 @@ 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, + 6E91A9912841E09C0090361F /* DailyStatisticsDayView.swift in Sources */, 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */, 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, 6EC5E430282BD7E200AD571C /* ReviewCountLabel.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift new file mode 100644 index 0000000..44f9704 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift @@ -0,0 +1,52 @@ +import ReactorKit + +final class StatisticsReactor: Reactor { + enum Action { + case updateTotalReviewCount(Int) + case tapFilterButton(StatisticsFilterButton.FilterType) + } + + enum Mutation { + case setTotalReviewCount(Int) + case setTab(StatisticsFilterButton.FilterType) + } + + struct State { + var totalReviewCount: Int + var selectedFilter: StatisticsFilterButton.FilterType + + } + + let initialState: State + + init(state: State = State( + totalReviewCount: 0, + selectedFilter: .total + )) { + self.initialState = state + } + + func mutate(action: Action) -> Observable { + switch action { + case .updateTotalReviewCount(let totalReviewCount): + return .just(.setTotalReviewCount(totalReviewCount)) + + case .tapFilterButton(let filterType): + return .just(.setTab(filterType)) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setTotalReviewCount(let totalReviewCount): + newState.totalReviewCount = totalReviewCount + + case .setTab(let filterType): + newState.selectedFilter = filterType + } + + return newState + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift index 6f00d48..2dd6e6e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift @@ -7,9 +7,9 @@ final class StatisticsView: BaseView { private let scrollViewContainerView = UIView() - private let reviewCountLabel = ReviewCountLabel() + let reviewCountLabel = ReviewCountLabel() - private let filterButton = StatisticsFilterButton() + let filterButton = StatisticsFilterButton() let containerView = UIView() diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift index 94ae429..0258238 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -1,7 +1,10 @@ import UIKit -final class StatisticsViewController: BaseViewController { +import ReactorKit + +final class StatisticsViewController: BaseViewController, View { private let statisticsView = StatisticsView() + private let statisticsReactor = StatisticsReactor() private let pageViewController = UIPageViewController( transitionStyle: .scroll, @@ -9,10 +12,13 @@ final class StatisticsViewController: BaseViewController { options: nil ) - private let pageViewControllers: [UIViewController] = [ - TotalStatisticsViewController.instance(), - TotalStatisticsViewController.instance() - ] + private let totalStatisticsViewController + = TotalStatisticsViewController.instance() + + private let dailyStatisticsViewController + = DailyStatisticsViewController.instance() + + private var pageViewControllers: [UIViewController] = [] override var preferredStatusBarStyle: UIStatusBarStyle { return .darkContent @@ -30,9 +36,40 @@ final class StatisticsViewController: BaseViewController { super.viewDidLoad() self.setupPageViewController() + self.reactor = self.statisticsReactor + } + + func bind(reactor: StatisticsReactor) { + // BindAction + self.statisticsView.filterButton.rx.tap + .map { Reactor.Action.tapFilterButton($0) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind State + reactor.state + .map { $0.totalReviewCount } + .asDriver(onErrorJustReturn: 0) + .distinctUntilChanged() + .drive(self.statisticsView.reviewCountLabel.rx.reviewCount) + .disposed(by: self.disposeBag) + + reactor.state + .map { $0.selectedFilter } + .asDriver(onErrorJustReturn: .total) + .distinctUntilChanged() + .drive(onNext: { [weak self] filterType in + self?.setPage(filterType: filterType) + }) + .disposed(by: self.disposeBag) } private func setupPageViewController() { + self.totalStatisticsViewController.delegate = self + self.pageViewControllers = [ + self.totalStatisticsViewController, + self.dailyStatisticsViewController + ] self.addChild(self.pageViewController) self.pageViewController.delegate = self self.pageViewController.dataSource = self @@ -53,6 +90,26 @@ final class StatisticsViewController: BaseViewController { } } } + + private func setPage(filterType: StatisticsFilterButton.FilterType) { + switch filterType { + case .total: + self.pageViewController.setViewControllers( + [self.pageViewControllers[0]], + direction: .forward, + animated: false, + completion: nil + ) + + case .day: + self.pageViewController.setViewControllers( + [self.pageViewControllers[1]], + direction: .forward, + animated: false, + completion: nil + ) + } + } } extension StatisticsViewController: UIPageViewControllerDelegate, UIPageViewControllerDataSource { @@ -71,3 +128,8 @@ extension StatisticsViewController: UIPageViewControllerDelegate, UIPageViewCont } } +extension StatisticsViewController: TotalStatisticsDelegate { + func onUpdateTotalReviewCount(count: Int) { + self.statisticsReactor.action.onNext(.updateTotalReviewCount(count)) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift new file mode 100644 index 0000000..b6d0044 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift @@ -0,0 +1,39 @@ +import UIKit + +final class DailyStatisticsView: BaseView { + let tableView = UITableView().then { + $0.tableFooterView = UIView() + $0.separatorStyle = .none + $0.backgroundColor = .clear + $0.register( + DailyStatisticsTableViewCell.self, + forCellReuseIdentifier: DailyStatisticsTableViewCell.registerId + ) + $0.rowHeight = UITableView.automaticDimension + $0.isScrollEnabled = false + } + + override func setup() { + self.addSubViews([ + self.tableView + ]) + } + + override func bindConstraints() { + self.tableView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalToSuperview() + make.height.equalTo(0) + } + } + +// func calculatorTableViewHeight(itemCount: Int) -> CGFloat { +// let height = TotalStatisticsTableViewCell.height * CGFloat(itemCount) + 16 +// +// self.tableView.snp.updateConstraints { make in +// make.height.equalTo(height) +// } +// return height +// } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift new file mode 100644 index 0000000..25972e8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift @@ -0,0 +1,13 @@ +import UIKit + +final class DailyStatisticsViewController: BaseViewController { + private let dailyStatisticsView = DailyStatisticsView() + + static func instance() -> DailyStatisticsViewController { + return DailyStatisticsViewController(nibName: nil, bundle: nil) + } + + override func loadView() { + self.view = self.dailyStatisticsView + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift new file mode 100644 index 0000000..52ac2a4 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift @@ -0,0 +1,38 @@ +import UIKit + +final class DailyStatisticsDayView: BaseView { + private let dayLabel = UILabel().then { + $0.font = .bold(size: 16) + $0.textColor = .white + $0.text = "10일" + } + + private let dateLabel = UILabel().then { + $0.font = .regular(size: 12) + $0.textColor = .white + $0.text = "2022.01" + } + + override func setup() { + self.layer.cornerRadius = 16 + self.layer.shadowColor = UIColor(r: 0, g: 198, b: 103).cgColor + self.layer.shadowOffset = CGSize(width: 4, height: 4) + self.layer.shadowOpacity = 0.14 + self.addSubViews([ + self.dayLabel, + self.dateLabel + ]) + } + + override func bindConstraints() { + self.dayLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(14) + } + + self.dateLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(self.dayLabel.snp.bottom).offset(2) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift new file mode 100644 index 0000000..920e6f9 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift @@ -0,0 +1,37 @@ +import UIKit + +final class DailyStatisticsTableViewCell: BaseTableViewCell { + static let registerId = "\(DailyStatisticsTableViewCell.self)" + + private let dayView = DailyStatisticsDayView() + + private let staciView = UIStackView().then { + $0.axis = .vertical + $0.spacing = 16 + $0.layoutMargins = .init(top: 21, left: 0, bottom: 21, right: 0) + $0.backgroundColor = .white + } + + override func setup() { + self.addSubViews([ + self.dayView, + self.staciView + ]) + } + + override func bindConstraints() { + self.dayView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview() + make.width.equalTo(64) + make.height.equalTo(64) + } + + self.staciView.snp.makeConstraints { make in + make.left.equalTo(self.dayView.snp.right).offset(11) + make.top.equalToSuperview() + make.bottom.equalToSuperview() + make.right.equalToSuperview().offset(-24) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift index be0de40..572af3a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift @@ -21,7 +21,6 @@ final class ReviewCountLabel: BaseView { $0.backgroundColor = UIColor(r: 225, g: 243, b: 234) $0.layer.cornerRadius = 8 $0.layer.masksToBounds = true - $0.text = "800개" } private let ofLabel = UILabel().then { @@ -33,7 +32,7 @@ final class ReviewCountLabel: BaseView { private let descriptionLabel = UILabel().then { $0.font = .bold(size: 24) $0.textColor = .gray95 - $0.text = "리뷰가 사장님께 도착했어요 :)" + $0.text = "statistics_review_count".localized } override func setup() { diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift index f270d6f..9d10ea1 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift @@ -22,14 +22,15 @@ final class StatisticsFilterButton: BaseView { } private let totalButton = UIButton().then { - $0.setTitle("전체", for: .normal) + $0.setTitle("statistics_filter_total".localized, for: .normal) $0.setTitleColor(.green, for: .selected) $0.setTitleColor(.gray40, for: .normal) $0.titleLabel?.font = .medium(size: 14) + $0.isSelected = true } private let dayButton = UIButton().then { - $0.setTitle("일별", for: .normal) + $0.setTitle("statistics_filter_day".localized, for: .normal) $0.setTitleColor(.green, for: .selected) $0.setTitleColor(.gray40, for: .normal) $0.titleLabel?.font = .medium(size: 14) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index 3c69f02..bc916e1 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -9,11 +9,13 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { enum Mutation { case setStatistics([Statistic]) + case setReviewTotalCount(Int) case showErrorAlert(Error) } struct State { var statistics: [Statistic] = [] + var reviewTotalCount: Int = 0 } var initialState = State() @@ -42,6 +44,9 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { case .setStatistics(let statistics): newState.statistics = statistics + case .setReviewTotalCount(let totalCount): + newState.reviewTotalCount = totalCount + case .showErrorAlert(let error): self.showErrorAlert.accept(error) } @@ -54,7 +59,14 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { return self.feedbackService.fetchTotalStatistics(storeId: storeId) .map { $0.map(Statistic.init(response:)) } - .map { .setStatistics($0) } + .flatMap { statistics -> Observable in + let reviewTotalCount = statistics.map { $0.count }.reduce(0, +) + + return .merge([ + .just(.setStatistics(statistics)), + .just(.setReviewTotalCount(reviewTotalCount)) + ]) + } .catch { .just(.showErrorAlert($0)) } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index 73a4d27..8a3a301 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -4,7 +4,12 @@ import RxSwift import RxCocoa import ReactorKit +protocol TotalStatisticsDelegate: AnyObject { + func onUpdateTotalReviewCount(count: Int) +} + final class TotalStatisticsViewController: BaseViewController, View, TotalStatisticsCoordinator { + weak var delegate: TotalStatisticsDelegate? private let totalStatisticsView = TotalStatisticsView() private let totalStatisticsReactor = TotalStatisticsReactor( feedbackService: FeedbackService(), @@ -59,5 +64,14 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis cell.bind(statistics: statistic, isTopRate: row < 3) } .disposed(by: self.disposeBag) + + reactor.state + .map { $0.reviewTotalCount } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: 0) + .drive(onNext: { [weak self] reviewTotalCount in + self?.delegate?.onUpdateTotalReviewCount(count: reviewTotalCount) + }) + .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 44217e8..9b95d4f 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -102,6 +102,9 @@ "edit_schedule_save" = "저장하기"; // Statistics +"statistics_filter_total" = "전체"; +"statistics_filter_day" = "일별"; +"statistics_review_count" = "리뷰가 사장님께 도착했어요 :)"; "statistics_boss_is_kind" = "🙏 사장님이 친절해요"; "statistics_easy_to_eat" = "🚀 먹기 간편해요"; "statistics_food_is_delecious" = "🍕 음식이 맛있어요"; From 3de56d964af5c9654150ee50b8280c76f68ffb2f Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 28 May 2022 15:17:41 +0900 Subject: [PATCH 079/166] =?UTF-8?q?feat:=20=EC=9D=BC=EB=B3=84=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=ED=99=94=EB=A9=B4=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 ++++++ .../BossStoreFeedbackCursorResponse.swift | 22 ++++++++++ ...ossStoreFeedbackGroupingDateResponse.swift | 19 +++++++++ .../models/dto/response/CursorResponse.swift | 24 +++++++++++ .../services/FeedbackService.swift | 41 +++++++++++++++++++ 5 files changed, 118 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCursorResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackGroupingDateResponse.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/CursorResponse.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index f8769df..470cd05 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -126,6 +126,9 @@ 6E91A98B2841DCAF0090361F /* DailyStatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */; }; 6E91A98F2841DD9C0090361F /* DailyStatisticsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A98E2841DD9C0090361F /* DailyStatisticsTableViewCell.swift */; }; 6E91A9912841E09C0090361F /* DailyStatisticsDayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9902841E09C0090361F /* DailyStatisticsDayView.swift */; }; + 6E91A9932841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9922841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift */; }; + 6E91A9952841EE620090361F /* CursorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9942841EE620090361F /* CursorResponse.swift */; }; + 6E91A9972841EF090090361F /* BossStoreFeedbackCursorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9962841EF090090361F /* BossStoreFeedbackCursorResponse.swift */; }; 6E95E856282FD2140004C08D /* TotalStatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */; }; 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; @@ -326,6 +329,9 @@ 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsViewController.swift; sourceTree = ""; }; 6E91A98E2841DD9C0090361F /* DailyStatisticsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsTableViewCell.swift; sourceTree = ""; }; 6E91A9902841E09C0090361F /* DailyStatisticsDayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsDayView.swift; sourceTree = ""; }; + 6E91A9922841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreFeedbackGroupingDateResponse.swift; sourceTree = ""; }; + 6E91A9942841EE620090361F /* CursorResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CursorResponse.swift; sourceTree = ""; }; + 6E91A9962841EF090090361F /* BossStoreFeedbackCursorResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreFeedbackCursorResponse.swift; sourceTree = ""; }; 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsViewController.swift; sourceTree = ""; }; 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsTableViewCell.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; @@ -545,6 +551,9 @@ 6E5DCE7B27FDCF1F00CA58EE /* OpenStatus.swift */, 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */, 6E5E14A52830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift */, + 6E91A9922841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift */, + 6E91A9942841EE620090361F /* CursorResponse.swift */, + 6E91A9962841EF090090361F /* BossStoreFeedbackCursorResponse.swift */, ); path = response; sourceTree = ""; @@ -1239,6 +1248,7 @@ 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, + 6E91A9952841EE620090361F /* CursorResponse.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, 6E91A9892841DC110090361F /* DailyStatisticsView.swift in Sources */, @@ -1267,7 +1277,9 @@ 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, + 6E91A9932841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift in Sources */, 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */, + 6E91A9972841EF090090361F /* BossStoreFeedbackCursorResponse.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6E1E5BA82827EB33003A1B51 /* SettingView.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCursorResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCursorResponse.swift new file mode 100644 index 0000000..6413d84 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCursorResponse.swift @@ -0,0 +1,22 @@ +struct BossStoreFeedbackCursorResponse: Decodable { + let contents: [BossStoreFeedbackGroupingDateResponse] + let cursor: CursorResponse + + enum CodingKeys: String, CodingKey { + case contents + case cursor + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.contents = try values.decodeIfPresent( + [BossStoreFeedbackGroupingDateResponse].self, + forKey: .contents + ) ?? [] + self.cursor = try values.decodeIfPresent( + CursorResponse.self, + forKey: .cursor + ) ?? CursorResponse() + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackGroupingDateResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackGroupingDateResponse.swift new file mode 100644 index 0000000..538a071 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackGroupingDateResponse.swift @@ -0,0 +1,19 @@ +struct BossStoreFeedbackGroupingDateResponse: Decodable { + let date: String + let feedbacks: [BossStoreFeedbackCountResponse] + + enum CodingKeys: String, CodingKey { + case date + case feedbacks + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.date = try values.decodeIfPresent(String.self, forKey: .date) ?? "" + self.feedbacks = try values.decodeIfPresent( + [BossStoreFeedbackCountResponse].self, + forKey: .feedbacks + ) ?? [] + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/CursorResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/CursorResponse.swift new file mode 100644 index 0000000..bda5441 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/CursorResponse.swift @@ -0,0 +1,24 @@ +struct CursorResponse: Decodable { + let hasMore: Bool + let nextCursor: String? + + enum CodingKeys: String, CodingKey { + case hasMore + case nextCursor + } + + init() { + self.hasMore = false + self.nextCursor = nil + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.hasMore = try values.decodeIfPresent(Bool.self, forKey: .hasMore) ?? false + self.nextCursor = try values.decodeIfPresent( + String.self, + forKey: .nextCursor + ) + } +} diff --git a/3dollar-in-my-pocket-manager/services/FeedbackService.swift b/3dollar-in-my-pocket-manager/services/FeedbackService.swift index 6c03b57..dbb06b8 100644 --- a/3dollar-in-my-pocket-manager/services/FeedbackService.swift +++ b/3dollar-in-my-pocket-manager/services/FeedbackService.swift @@ -1,8 +1,17 @@ +import Foundation + import RxSwift import Alamofire +import Base protocol FeedbackServiceType { func fetchTotalStatistics(storeId: String) -> Observable<[BossStoreFeedbackCountResponse]> + + func fetchDailyStatistics( + storeId: String, + startDate: Date, + endDate: Date + ) -> Observable } struct FeedbackService: FeedbackServiceType { @@ -28,4 +37,36 @@ struct FeedbackService: FeedbackServiceType { return Disposables.create() } } + + func fetchDailyStatistics( + storeId: String, + startDate: Date, + endDate: Date + ) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(storeId)/feedbacks/specific" + let headers = HTTPUtils.jsonHeader() + let paramerters: [String: Any] = [ + "startDate": DateUtils.toString(date: startDate, format: "yyyy-MM-dd"), + "endDate": DateUtils.toString(date: endDate, format: "yyyy-MM-dd") + ] + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + parameters: paramerters, + headers: headers + ).responseDecodable( + of: ResponseContainer.self + ) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } } From 15ea16037161cea2a8d9179a46e41fea59c3963a Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 28 May 2022 21:31:22 +0900 Subject: [PATCH 080/166] =?UTF-8?q?feat:=20=EC=9D=BC=EB=B3=84=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=ED=99=94=EB=A9=B4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EB=B0=94=EC=9D=B8=EB=94=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 +++ .../DailyStatisticCoordinator.swift | 3 + .../DailyStatisticsReactor.swift | 99 +++++++++++++++++++ .../DailyStatisticsView.swift | 33 +++++-- .../DailyStatisticsViewController.swift | 75 +++++++++++++- .../subviews/DailyStatisticsDayView.swift | 16 +++ .../DailyStatisticsStackItemView.swift | 55 +++++++++++ .../cells/DailyStatisticsTableViewCell.swift | 32 +++++- .../TotalStatisticsReactor.swift | 11 ++- .../TotalStatisticsViewController.swift | 19 ++++ .../models/presentation/StatisticGroup.swift | 9 ++ 11 files changed, 352 insertions(+), 16 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/StatisticGroup.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 470cd05..2e30b00 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -109,6 +109,10 @@ 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */; }; 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; + 6E7964AB28420D2C005EA0E2 /* DailyStatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */; }; + 6E7964AE28421074005EA0E2 /* StatisticGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */; }; + 6E7964B028423608005EA0E2 /* DailyStatisticCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AF28423608005EA0E2 /* DailyStatisticCoordinator.swift */; }; + 6E7964B228423909005EA0E2 /* DailyStatisticsStackItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964B128423909005EA0E2 /* DailyStatisticsStackItemView.swift */; }; 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D127D891AA00E6653C /* SignupReactor.swift */; }; 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */; }; 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49D927D8CE1800E6653C /* ImageService.swift */; }; @@ -313,6 +317,10 @@ 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageViewExtensions.swift; sourceTree = ""; }; 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoIntroductionCell.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; + 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsReactor.swift; sourceTree = ""; }; + 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticGroup.swift; sourceTree = ""; }; + 6E7964AF28423608005EA0E2 /* DailyStatisticCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticCoordinator.swift; sourceTree = ""; }; + 6E7964B128423909005EA0E2 /* DailyStatisticsStackItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsStackItemView.swift; sourceTree = ""; }; 6E7A49D127D891AA00E6653C /* SignupReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupReactor.swift; sourceTree = ""; }; 6E7A49D727D8CDE300E6653C /* ImageUploadResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadResponse.swift; sourceTree = ""; }; 6E7A49D927D8CE1800E6653C /* ImageService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageService.swift; sourceTree = ""; }; @@ -724,6 +732,8 @@ 6E91A98C2841DD870090361F /* subviews */, 6E91A9882841DC110090361F /* DailyStatisticsView.swift */, 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */, + 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */, + 6E7964AF28423608005EA0E2 /* DailyStatisticCoordinator.swift */, ); path = "daily-statistics"; sourceTree = ""; @@ -733,6 +743,7 @@ children = ( 6E91A98D2841DD8B0090361F /* cells */, 6E91A9902841E09C0090361F /* DailyStatisticsDayView.swift */, + 6E7964B128423909005EA0E2 /* DailyStatisticsStackItemView.swift */, ); path = subviews; sourceTree = ""; @@ -981,6 +992,7 @@ 6E5F3DDD281D6435002282B6 /* AppearanceDay.swift */, 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */, 6E5E14A928312BBA00B1F450 /* Statistic.swift */, + 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */, ); path = presentation; sourceTree = ""; @@ -1242,6 +1254,7 @@ 6E5E14AA28312BBA00B1F450 /* Statistic.swift in Sources */, 6E6C9C74280BE7B3009AFAE8 /* MyStoreInfoViewController.swift in Sources */, 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */, + 6E7964B028423608005EA0E2 /* DailyStatisticCoordinator.swift in Sources */, 6E1E5BAA2827EBE5003A1B51 /* SettingViewController.swift in Sources */, 6EF676B627EECC0600D43E99 /* SplashViewController.swift in Sources */, 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, @@ -1283,6 +1296,7 @@ 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6E1E5BA82827EB33003A1B51 /* SettingView.swift in Sources */, + 6E7964B228423909005EA0E2 /* DailyStatisticsStackItemView.swift in Sources */, 6E95E856282FD2140004C08D /* TotalStatisticsViewController.swift in Sources */, 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */, 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */, @@ -1294,8 +1308,10 @@ 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */, 6E5E14A12830F5E400B1F450 /* FeedbackService.swift in Sources */, + 6E7964AB28420D2C005EA0E2 /* DailyStatisticsReactor.swift in Sources */, 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */, 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */, + 6E7964AE28421074005EA0E2 /* StatisticGroup.swift in Sources */, 6E5F3DD8281D611C002282B6 /* WeekDayStackView.swift in Sources */, 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */, 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticCoordinator.swift new file mode 100644 index 0000000..59570c4 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticCoordinator.swift @@ -0,0 +1,3 @@ +protocol DailyStatisticCoordinator: BaseCoordinator, AnyObject { + +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift new file mode 100644 index 0000000..6ab7ed5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift @@ -0,0 +1,99 @@ +import Foundation + +import ReactorKit +import Base +import RxRelay + +final class DailyStatisticsReactor: BaseReactor, Reactor { + enum Action { + case viewDidLoad + case viewWillAppear + case willDisplayCell(index: Int) + } + + enum Mutation { + case appendStatisticGroups([StatisticGroup]) + case updateTableViewHeight([StatisticGroup]) + case showErrorAlert(Error) + } + + struct State { + var statisticGroups: [StatisticGroup] + } + + let initialState: State + let updateTableViewHeightPublisher = PublishRelay<[StatisticGroup]>() + private let feedbackService: FeedbackServiceType + private let userDefaults: UserDefaultsUtils + private var endDate: Date? = Date() + private var startDate = Date().addWeek(week: -1) + + init( + feedbackService: FeedbackServiceType, + userDefaults: UserDefaultsUtils, + state: State = State(statisticGroups: []) + ) { + self.feedbackService = feedbackService + self.userDefaults = userDefaults + self.initialState = state + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + return self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) + + case .viewWillAppear: + return .just(.updateTableViewHeight(self.currentState.statisticGroups)) + + case .willDisplayCell(let index): + guard index >= self.currentState.statisticGroups.count - 1 else { return .empty() } + + return self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .appendStatisticGroups(let statisticGroup): + newState.statisticGroups.append(contentsOf: statisticGroup) + + case .updateTableViewHeight(let statisticGroups): + self.updateTableViewHeightPublisher.accept(statisticGroups) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func fetchStatistics( + startDate: Date, + endDate: Date? + ) -> Observable { + guard let endDate = endDate else { return .empty() } + let storeId = self.userDefaults.storeId + + return self.feedbackService.fetchDailyStatistics( + storeId: storeId, + startDate: startDate, + endDate: endDate + ) + .do(onNext: { [weak self] response in + guard let self = self else { return } + if let nextCursor = response.cursor.nextCursor { + let endDate = DateUtils.toDate(dateString: nextCursor, format: "yyyy-MM-dd") + + self.endDate = endDate + self.startDate = endDate.addWeek(week: -1) + } else { + self.endDate = nil + } + }) + .map { .appendStatisticGroups($0.contents.map(StatisticGroup.init(response:))) } + .catch { .just(.showErrorAlert($0)) } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift index b6d0044..e0bcd58 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift @@ -24,16 +24,31 @@ final class DailyStatisticsView: BaseView { make.left.equalToSuperview() make.right.equalToSuperview() make.top.equalToSuperview() - make.height.equalTo(0) + make.height.equalTo(1000) } } -// func calculatorTableViewHeight(itemCount: Int) -> CGFloat { -// let height = TotalStatisticsTableViewCell.height * CGFloat(itemCount) + 16 -// -// self.tableView.snp.updateConstraints { make in -// make.height.equalTo(height) -// } -// return height -// } + func calculatorTableViewHeight(statisticGroups: [StatisticGroup]) -> CGFloat { + var height: CGFloat = 0 + + for statistic in statisticGroups { + var stackViewHeight + = CGFloat(statistic.feedbacks.count) * DailyStatisticsStackItemView.height + stackViewHeight += CGFloat(statistic.feedbacks.count - 1) * 16 // space + stackViewHeight += 42 // contentInset + let dayViewHeight: CGFloat = 64 + + if dayViewHeight >= stackViewHeight { + height += dayViewHeight + } else { + height += stackViewHeight + } + height += 20 + } + self.tableView.snp.updateConstraints { make in + make.height.equalTo(height) + } + + return height + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift index 25972e8..70a2889 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift @@ -1,7 +1,14 @@ import UIKit -final class DailyStatisticsViewController: BaseViewController { +import ReactorKit + +final class DailyStatisticsViewController: BaseViewController, View, DailyStatisticCoordinator { private let dailyStatisticsView = DailyStatisticsView() + private let dailyStatisticsReactor = DailyStatisticsReactor( + feedbackService: FeedbackService(), + userDefaults: UserDefaultsUtils() + ) + private weak var coordinator: DailyStatisticCoordinator? static func instance() -> DailyStatisticsViewController { return DailyStatisticsViewController(nibName: nil, bundle: nil) @@ -10,4 +17,70 @@ final class DailyStatisticsViewController: BaseViewController { override func loadView() { self.view = self.dailyStatisticsView } + + override func viewDidLoad() { + super.viewDidLoad() + + self.reactor = self.dailyStatisticsReactor + self.coordinator = self + self.dailyStatisticsReactor.action.onNext(.viewDidLoad) + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + self.dailyStatisticsReactor.action.onNext(.viewWillAppear) + } + + override func bindEvent() { + self.dailyStatisticsReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) + + self.dailyStatisticsReactor.updateTableViewHeightPublisher + .asDriver(onErrorJustReturn: []) + .drive(onNext: { [weak self] statisticGroups in + if let statisticsView = self?.parent?.parent?.view as? StatisticsView, + let dailyStatisticsViewHeight = self?.dailyStatisticsView + .calculatorTableViewHeight(statisticGroups: statisticGroups) { + statisticsView.updateContainerViewHeight( + tableViewHeight: dailyStatisticsViewHeight + ) + } + }) + .disposed(by: self.eventDisposeBag) + } + + func bind(reactor: DailyStatisticsReactor) { + // Bind Action + self.dailyStatisticsView.tableView.rx.willDisplayCell + .map { Reactor.Action.willDisplayCell(index: $0.indexPath.row) } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + // Bind State + reactor.state + .map { $0.statisticGroups } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .do(onNext: { [weak self] statisticGroups in + if let statisticsView = self?.parent?.parent?.view as? StatisticsView, + let dailyStatisticsViewHeight = self?.dailyStatisticsView + .calculatorTableViewHeight(statisticGroups: statisticGroups) { + statisticsView.updateContainerViewHeight( + tableViewHeight: dailyStatisticsViewHeight + ) + } + }) + .drive(self.dailyStatisticsView.tableView.rx.items( + cellIdentifier: DailyStatisticsTableViewCell.registerId, + cellType: DailyStatisticsTableViewCell.self + )) { row, statisticGroup, cell in + cell.bind(statisticGroup: statisticGroup) + } + .disposed(by: self.disposeBag) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift index 52ac2a4..d125d08 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsDayView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class DailyStatisticsDayView: BaseView { private let dayLabel = UILabel().then { $0.font = .bold(size: 16) @@ -35,4 +37,18 @@ final class DailyStatisticsDayView: BaseView { make.top.equalTo(self.dayLabel.snp.bottom).offset(2) } } + + func bind(dateString: String) { + let date = DateUtils.toDate(dateString: dateString, format: "yyyy-MM-dd") + let isToday = dateString == DateUtils.todayString(format: "yyyy-MM-dd") + + self.dayLabel.text = "\(date.get(.day))일" + self.dateLabel.text = "\(date.get(.year)).\(date.get(.month))" + self.backgroundColor = isToday ? .green : .white + self.dayLabel.textColor = isToday ? .white : .green + self.dateLabel.textColor = isToday ? .white : .gray30 + self.layer.shadowColor = isToday + ? UIColor(r: 0, g: 198, b: 103).cgColor + : UIColor.black.cgColor + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift new file mode 100644 index 0000000..11ae4b8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift @@ -0,0 +1,55 @@ +import UIKit + +final class DailyStatisticsStackItemView: BaseView { + static let height: CGFloat = 22 + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray95 + } + + private let countLabel = PaddingLabel( + topInset: 4, + bottomInset: 4, + leftInset: 8, + rightInset: 8 + ).then { + $0.font = .regular(size: 12) + $0.textColor = .green + $0.layer.borderColor = UIColor.green.cgColor + $0.layer.borderWidth = 1 + $0.layer.cornerRadius = 11 + } + + override func setup() { + self.backgroundColor = .clear + self.addSubViews([ + self.titleLabel, + self.countLabel + ]) + } + + override func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerY.equalToSuperview() + } + + self.countLabel.snp.makeConstraints { make in + make.right.equalToSuperview() + make.top.equalToSuperview() + make.bottom.equalToSuperview() + make.height.equalTo(Self.height) + } + + self.snp.makeConstraints { make in + make.top.equalTo(self.countLabel).priority(.high) + make.bottom.equalTo(self.countLabel).priority(.high) + } + } + + func bind(statistic: Statistic) { + self.titleLabel.text = statistic.type.title + self.countLabel.text = "\(statistic.count)개" + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift index 920e6f9..3d909a6 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift @@ -5,17 +5,29 @@ final class DailyStatisticsTableViewCell: BaseTableViewCell { private let dayView = DailyStatisticsDayView() - private let staciView = UIStackView().then { + private let stackView = UIStackView().then { $0.axis = .vertical $0.spacing = 16 - $0.layoutMargins = .init(top: 21, left: 0, bottom: 21, right: 0) + $0.layoutMargins = .init(top: 21, left: 16, bottom: 21, right: 16) + $0.isLayoutMarginsRelativeArrangement = true $0.backgroundColor = .white + $0.layer.cornerRadius = 16 + } + + override func prepareForReuse() { + super.prepareForReuse() + + self.stackView.arrangedSubviews.forEach { + $0.removeFromSuperview() + } } override func setup() { + self.selectionStyle = .none + self.backgroundColor = .clear self.addSubViews([ self.dayView, - self.staciView + self.stackView ]) } @@ -27,11 +39,21 @@ final class DailyStatisticsTableViewCell: BaseTableViewCell { make.height.equalTo(64) } - self.staciView.snp.makeConstraints { make in + self.stackView.snp.makeConstraints { make in make.left.equalTo(self.dayView.snp.right).offset(11) make.top.equalToSuperview() - make.bottom.equalToSuperview() + make.bottom.equalToSuperview().offset(-20) make.right.equalToSuperview().offset(-24) } } + + func bind(statisticGroup: StatisticGroup) { + self.dayView.bind(dateString: statisticGroup.date) + for statistics in statisticGroup.feedbacks { + let stackItemView = DailyStatisticsStackItemView() + + stackItemView.bind(statistic: statistics) + self.stackView.addArrangedSubview(stackItemView) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index bc916e1..cb21a51 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -5,10 +5,12 @@ import RxCocoa final class TotalStatisticsReactor: BaseReactor, Reactor { enum Action { case viewDidLoad + case viewWillAppear } enum Mutation { case setStatistics([Statistic]) + case updateTableViewHeight([Statistic]) case setReviewTotalCount(Int) case showErrorAlert(Error) } @@ -18,7 +20,8 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { var reviewTotalCount: Int = 0 } - var initialState = State() + let initialState = State() + let updateTableViewHeightPublisher = PublishRelay<[Statistic]>() private let feedbackService: FeedbackServiceType private var userDefaults: UserDefaultsUtils @@ -34,6 +37,9 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { switch action { case .viewDidLoad: return self.fetchStatistics() + + case .viewWillAppear: + return .just(.updateTableViewHeight(self.currentState.statistics)) } } @@ -44,6 +50,9 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { case .setStatistics(let statistics): newState.statistics = statistics + case .updateTableViewHeight(let statistics): + self.updateTableViewHeightPublisher.accept(statistics) + case .setReviewTotalCount(let totalCount): newState.reviewTotalCount = totalCount diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index 8a3a301..ee92802 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -33,6 +33,12 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis self.totalStatisticsReactor.action.onNext(.viewDidLoad) } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + self.totalStatisticsReactor.action.onNext(.viewWillAppear) + } + override func bindEvent() { self.totalStatisticsReactor.showErrorAlert .asDriver(onErrorJustReturn: BaseError.unknown) @@ -40,6 +46,19 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis self?.coordinator?.showErrorAlert(error: error) }) .disposed(by: self.eventDisposeBag) + + self.totalStatisticsReactor.updateTableViewHeightPublisher + .asDriver(onErrorJustReturn: []) + .drive(onNext: { [weak self] statistics in + if let statisticsView = self?.parent?.parent?.view as? StatisticsView, + let totalStatisticsViewHeight = self?.totalStatisticsView + .calculatorTableViewHeight(itemCount: statistics.count) { + statisticsView.updateContainerViewHeight( + tableViewHeight: totalStatisticsViewHeight + ) + } + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: TotalStatisticsReactor) { diff --git a/3dollar-in-my-pocket-manager/models/presentation/StatisticGroup.swift b/3dollar-in-my-pocket-manager/models/presentation/StatisticGroup.swift new file mode 100644 index 0000000..c6afc56 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/StatisticGroup.swift @@ -0,0 +1,9 @@ +struct StatisticGroup: Equatable { + let date: String + let feedbacks: [Statistic] + + init(response: BossStoreFeedbackGroupingDateResponse) { + self.date = response.date + self.feedbacks = response.feedbacks.map(Statistic.init(response:)) + } +} From 99f713497b1ab1868bda4484fd3093d14c2d8a63 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 29 May 2022 14:50:59 +0900 Subject: [PATCH 081/166] =?UTF-8?q?feat:=20=EB=A9=94=EB=89=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=99=94=EB=A9=B4=20=EB=B7=B0=20=EA=B7=B8=EB=A6=AC?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 40 +++++++ .../ic_camera.imageset/Contents.json | 23 ++++ .../ic_camera.imageset/Frame.png | Bin 0 -> 606 bytes .../ic_camera.imageset/Frame@2x.png | Bin 0 -> 1105 bytes .../ic_camera.imageset/Frame@3x.png | Bin 0 -> 1497 bytes .../MyStoreInfoCoordinator.swift | 10 ++ .../my/my-store-info/MyStoreInfoReactor.swift | 9 +- .../MyStoreInfoViewController.swift | 7 ++ .../edit-menu/EditMenuCoordinator.swift | 3 + .../edit-menu/EditMenuView.swift | 104 ++++++++++++++++++ .../edit-menu/EditMenuViewController.swift | 31 ++++++ .../cells/EditMenuTableViewCell.swift | 101 +++++++++++++++++ .../strings/en.lproj/Localizations.strings | 5 + 13 files changed, 329 insertions(+), 4 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame@3x.png create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 2e30b00..18fb15a 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -123,6 +123,10 @@ 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; 6E89A865281E5A3300B795EF /* EditScheduleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */; }; 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */; }; + 6E8D01322843333300FAB49E /* EditMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01312843333300FAB49E /* EditMenuView.swift */; }; + 6E8D01342843361700FAB49E /* EditMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01332843361700FAB49E /* EditMenuViewController.swift */; }; + 6E8D01362843365E00FAB49E /* EditMenuCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */; }; + 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01392843396800FAB49E /* EditMenuTableViewCell.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E91A9852841D4B30090361F /* StatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9842841D4B30090361F /* StatisticsReactor.swift */; }; @@ -332,6 +336,10 @@ 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleTableViewCell.swift; sourceTree = ""; }; 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewCell.swift; sourceTree = ""; }; + 6E8D01312843333300FAB49E /* EditMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuView.swift; sourceTree = ""; }; + 6E8D01332843361700FAB49E /* EditMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuViewController.swift; sourceTree = ""; }; + 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuCoordinator.swift; sourceTree = ""; }; + 6E8D01392843396800FAB49E /* EditMenuTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuTableViewCell.swift; sourceTree = ""; }; 6E91A9842841D4B30090361F /* StatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsReactor.swift; sourceTree = ""; }; 6E91A9882841DC110090361F /* DailyStatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsView.swift; sourceTree = ""; }; 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsViewController.swift; sourceTree = ""; }; @@ -687,6 +695,7 @@ 6E6C9C6C280BD92B009AFAE8 /* my-store-info */ = { isa = PBXGroup; children = ( + 6E8D012F2843331C00FAB49E /* edit-menu */, 6E5F3DD3281D5F10002282B6 /* edit-schedule */, 6E63FF69281C192A00EC49DE /* edit-store-info */, 6E1AB79F280D7F1F0059DCF4 /* edit-introduction */, @@ -726,6 +735,33 @@ path = cells; sourceTree = ""; }; + 6E8D012F2843331C00FAB49E /* edit-menu */ = { + isa = PBXGroup; + children = ( + 6E8D01372843395C00FAB49E /* subviews */, + 6E8D01312843333300FAB49E /* EditMenuView.swift */, + 6E8D01332843361700FAB49E /* EditMenuViewController.swift */, + 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */, + ); + path = "edit-menu"; + sourceTree = ""; + }; + 6E8D01372843395C00FAB49E /* subviews */ = { + isa = PBXGroup; + children = ( + 6E8D01382843396000FAB49E /* cells */, + ); + path = subviews; + sourceTree = ""; + }; + 6E8D01382843396000FAB49E /* cells */ = { + isa = PBXGroup; + children = ( + 6E8D01392843396800FAB49E /* EditMenuTableViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E91A9872841DBF10090361F /* daily-statistics */ = { isa = PBXGroup; children = ( @@ -1239,6 +1275,7 @@ 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */, 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, + 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */, 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */, 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, @@ -1291,6 +1328,7 @@ 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, 6E91A9932841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift in Sources */, + 6E8D01322843333300FAB49E /* EditMenuView.swift in Sources */, 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */, 6E91A9972841EF090090361F /* BossStoreFeedbackCursorResponse.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, @@ -1306,6 +1344,7 @@ 6E5F3DDC281D61AA002282B6 /* EditScheduleCoordinator.swift in Sources */, 6E91A98F2841DD9C0090361F /* DailyStatisticsTableViewCell.swift in Sources */, 6E5DCE7427FDCA4A00CA58EE /* LocalTimeRes.swift in Sources */, + 6E8D01362843365E00FAB49E /* EditMenuCoordinator.swift in Sources */, 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */, 6E5E14A12830F5E400B1F450 /* FeedbackService.swift in Sources */, 6E7964AB28420D2C005EA0E2 /* DailyStatisticsReactor.swift in Sources */, @@ -1369,6 +1408,7 @@ 6EC5E434282BDDDA00AD571C /* StatisticsFilterButton.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */, + 6E8D01342843361700FAB49E /* EditMenuViewController.swift in Sources */, 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Contents.json new file mode 100644 index 0000000..4b7bf60 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Frame.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6b1136de2bb687f88a694eeb1ba44347ee5817 GIT binary patch literal 606 zcmV-k0-^nhP)jK~#7F?N-5Y z!axi>dolyOLOL)VkP1S6zz1AGk_vzdY*#?208)X;19(CQp#xk3`7t~oyKoMS!JHWL zL^HC^cRH=4)5%uqPB$h?syLZUoV2yoYPED-cd2dx7=~dnpU;OFRt%~UfS*mk56VEf zT&|+Q0vb(GbHE-PYeEiG7C_6gXhhX&H9t*r@dHI7E3vc#4MaI@K5YFE+DkZl`_NDR1MuOr?~05{Gozw?1q&n31*XUNnct-LNC zWCY-EM8tHmoxNc`kbW)1RmyIo@2C&3AIJsX+nkejqN@N&x}TN+!cO$Tv8l%<>8guQ zLNt*||4bR_Kf<^YrPU@RCpnS)S}b;x`@1D7f;3_mg79buSt-Ty$&|i=`%vntj077L sGqpeKgCpmZ^?yvJ)L!#rb*D`92MYML~P84teMF2zqj)2_=fCyM3So^@ExF8|`B0wQR^wd}1zUzKV{@A;>vdwNDI($LV*(9n=eON==^Jq@G+%gf7&7-A+6!oruAm%Uc2 zwIJ01JK%mD?dIyCh~C-SD-b;fXV{T&d#>krF1um zqUb~2lQ4p^i?hsUo}8TQNJUC_(SE-_J2f>mY*j?M*@=mX4OC=U36u|{BKnM7mLYZz z-F6J@bGX~wjoDGQS}SHFdT7d0t?JZMc9y&lam)EhMO4M5#HG=x~Q;=LL7zB z=|dUuGPLS#pYeC$&$p@qkC$7Mu02N`hWGlu}1MtChyklLX zv>$W=|2mxiv9hwVpY@C)fw$g+j$omkDgne2CKmKh2wUeq1JnKe{ajZ4G6ibO^>x?8 zx2(~icO_~B3{}z6($dfLb(ucsJ2+bDmy98_mR~nS^~|6&a+q-AQdRt6<~?D)h%$Av z%0)AwsOjnHO|6wG~YTB1sNi znQ2^^2&rivw?S8(nVAX25L1DEf`A}%S@u2%yK!asZy<)$5=F^-5(NKRtC_sR+Je5Q zZ&DsVH8f4=O$DNI!^I{}bKVg!=Dqt&)S;v7TF+`yhf# z*Oj?mQ#9k&a~EgOxYV$`2rZ(EX6L(C0Sf@1>Bqj>Nl`WE-hi zA#VrzwrJ~td{;88X6iJK0Uty Xlk>;{=jMbG00000NkvXXu0mjfYQYF5 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_camera.imageset/Frame@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe48ee2e07c4132ece1590764e355c3fbaf5e97 GIT binary patch literal 1497 zcmV;~1t$85P)`6PFPR%8oFK{#oCgYu zDj;9SaupF8k7jJC$1eS<42*2qGoPjIR;vf1L?V$$Boc{4B9TZWg0etDTwPr${8AKv z=jZ3a-rn995+J&u*Voto;#dCi^0G!@(RiHf?CkU?B2fi}n5Pi(kRr0MuyD4$y?sQH zh$bkeco)Auk^uM;k9K!=&nN z%&fL`*i%h``Hdm~FK3}ai@JT#s2<&2;2D+^WKHkoFUQ(E^07A&(F`-Z~@1d zey(ukKMK!@qpip1L;-2+<#A#e#Ci{h^QUbi`55i0#CB?U+jWWn&hZny_4aIn1~@mT z$wB)qp1;637Sw>+g0hh04oiH{cywZfFO10-u&9daqp88twU(e}y5!UhO%cT$F`=kT zj&nZoeX+LE7|NtGdEMftZJ7FRa;PO*{6eLmc;gN0_=|*diH(_k z`gI$wT~+m~y;8!rG`Azufwqo+uj&vbeb*FTzOJmSus2qGEV=pSOX~z>5m#4NyO;^@ z$Xbmds$eI{e-<>1D~q<7pO{-9m2dzJF~360QyRat<>xpq{uDadQI}SXP>%gDoiFg` z2E?q>Rnc%I(WBB(2aMH9dd3=0EoHUB{Zv|{Nw zjSQBf=&Uj`6apzhzrQ|!7!x~?*!5FoNC|3>CN-&7wl~+fV1WdXvZ24&Odegxdu~!g zOmbxGXT(B8P~KX0G*1$YyZRO+fQX=F)p7lP|Bz~8@}bIV7E3%!digiOIHu`o9Z^kr zV(#xT&{JOunBD$#V3H zdrGa?q%%USn@l`A8s*c^R3d-CUVTn2p;g<+CLhY9mG_Z~F)w9@b_5%|-Xw<_lGYVE zn98aW`Yj2pDMP_5OaILy}8R;x>IY+5zt=Yb^Xlu3e4nc9L*BN;r; z_z3#VI#$x9pOG}3G{NI^Bzf{p$Gf!Ve#vo-TTLBrC@f@;!8&=KZ7qQ?8_ zZDVO^X>fOUr|0>$%S0lPNF)-8L?V$$%sf8;1C2mAM>%k$00000NkvXXu0mjfq9(a) literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift index 92812d2..e56223d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -3,6 +3,8 @@ protocol MyStoreInfoCoordinator: AnyObject, BaseCoordinator { func pushEditIntroduction(store: Store) + func pushEditMenu(store: Store) + func pushEditSchedule(store: Store) } @@ -23,6 +25,14 @@ extension MyStoreInfoCoordinator { .pushViewController(viewController, animated: true) } + func pushEditMenu(store: Store) { + let viewController = EditMenuViewController.instance() + + self.presenter.parent? + .navigationController? + .pushViewController(viewController, animated: true) + } + func pushEditSchedule(store: Store) { let viewController = EditScheduleViewController.instance(store: store) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index bc3c521..2eb67fa 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -16,7 +16,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case updateIntorudction(String) case pushEditStoreInfo(store: Store) case pushEditIntroduction(store: Store) - case pushEditMenus + case pushEditMenus(store: Store) case pushEditSchedule(store: Store) case showErrorAlert(Error) } @@ -28,6 +28,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { let initialState = State() let pushEditStoreInfoPublisher = PublishRelay() let pushEditIntroductionPublisher = PublishRelay() + let pushEditMenuPublisher = PublishRelay() let pushEditSchedulePublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState @@ -52,7 +53,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { return .just(.pushEditIntroduction(store: self.currentState.store)) case .tapEditMenus: - return .empty() + return .just(.pushEditMenus(store: self.currentState.store)) case .tapEditSchedule: return .just(.pushEditSchedule(store: self.currentState.store)) @@ -83,8 +84,8 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .pushEditIntroduction(let store): self.pushEditIntroductionPublisher.accept(store) - case .pushEditMenus: - break + case .pushEditMenus(let store): + self.pushEditMenuPublisher.accept(store) case .pushEditSchedule(let store): self.pushEditSchedulePublisher.accept(store) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 4a46f97..216a58f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -49,6 +49,13 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor }) .disposed(by: self.eventDisposeBag) + self.myStoreInfoReactor.pushEditMenuPublisher + .asDriver(onErrorJustReturn: Store()) + .drive(onNext: { [weak self] store in + self?.coordinator?.pushEditMenu(store: store) + }) + .disposed(by: self.eventDisposeBag) + self.myStoreInfoReactor.pushEditSchedulePublisher .asDriver(onErrorJustReturn: Store()) .drive(onNext: { [weak self] store in diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift new file mode 100644 index 0000000..792526c --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift @@ -0,0 +1,3 @@ +protocol EditMenuCoordinator: BaseCoordinator, AnyObject { + +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift new file mode 100644 index 0000000..34d73b8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift @@ -0,0 +1,104 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class EditMenuView: BaseView { + let backButton = UIButton().then { + $0.setImage(UIImage(named: "ic_back"), for: .normal) + } + + private let titleLabel = UILabel().then { + $0.font = .semiBold(size: 16) + $0.textColor = .gray100 + $0.text = "edit_menu_title".localized + } + + fileprivate let menuCountLabel = UILabel().then { + $0.font = .medium(size: 14) + $0.textColor = .black + } + + let deleteButton = UIButton().then { + $0.setTitle("edit_menu_delete".localized, for: .normal) + $0.titleLabel?.font = .bold(size: 14) + $0.setTitleColor(.red, for: .normal) + } + + let menuTableView = UITableView().then { + $0.backgroundColor = .clear + $0.separatorStyle = .none + $0.rowHeight = EditMenuTableViewCell.height + $0.register( + EditMenuTableViewCell.self, + forCellReuseIdentifier: EditMenuTableViewCell.registerId + ) + } + + let saveButton = UIButton().then { + $0.setTitle("edit_menu_save".localized, for: .normal) + $0.titleLabel?.font = .medium(size: 16) + $0.setTitleColor(UIColor(r: 251, g: 251, b: 251), for: .normal) + $0.setBackgroundColor(color: .green, forState: .normal) + $0.setBackgroundColor(color: .gray30, forState: .disabled) + } + + override func setup() { + self.backgroundColor = .gray0 + self.addSubViews([ + self.backButton, + self.titleLabel, + self.menuCountLabel, + self.deleteButton, + self.menuTableView, + self.saveButton + ]) + } + + override func bindConstraints() { + self.backButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(25) + make.width.equalTo(24) + make.height.equalTo(24) + } + + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(self.backButton) + } + + self.menuCountLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.backButton.snp.bottom).offset(63) + } + + self.deleteButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-24) + make.centerY.equalTo(self.menuCountLabel) + } + + self.menuTableView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalTo(self.saveButton.snp.top) + make.top.equalTo(self.menuCountLabel.snp.bottom).offset(16) + } + + self.saveButton.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom).offset(-64) + } + } +} + + +extension Reactive where Base: EditMenuView { + var menuCount: Binder { + return Binder(self.base) { view, count in + view.menuCountLabel.text = "\(count)/20개의 메뉴가 등록되어 있습니다." + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift new file mode 100644 index 0000000..f9abfa1 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -0,0 +1,31 @@ +import UIKit + +final class EditMenuViewController: BaseViewController, EditMenuCoordinator { + private let editMenuView = EditMenuView() + private weak var coordinator: EditMenuCoordinator? + + static func instance() -> EditMenuViewController { + return EditMenuViewController(nibName: nil, bundle: nil).then { + $0.hidesBottomBarWhenPushed = true + } + } + + override func loadView() { + self.view = self.editMenuView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.coordinator = self + } + + override func bindEvent() { + self.editMenuView.backButton.rx.tap + .asDriver() + .drive(onNext: { [weak self] in + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift new file mode 100644 index 0000000..653e934 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -0,0 +1,101 @@ +import UIKit + +final class EditMenuTableViewCell: BaseTableViewCell { + static let registerId = "\(EditMenuTableViewCell.self)" + static let height: CGFloat = 144 + + private let containerView = UIView().then { + $0.layer.cornerRadius = 16 + $0.backgroundColor = .white + } + + let cameraButton = UIButton().then { + $0.backgroundColor = .gray10 + $0.setImage(UIImage(named: "ic_cemera"), for: .normal) + $0.contentMode = .scaleAspectFill + } + + private let menuNameTextFieldBackground = UIView().then { + $0.layer.cornerRadius = 8 + $0.backgroundColor = .gray5 + } + + let menuNameTextField = UITextField().then { + $0.attributedPlaceholder = NSAttributedString( + string: "메뉴를 입력해주세요.", + attributes: [.foregroundColor: UIColor.gray30] + ) + $0.font = .medium(size: 14) + $0.textColor = .gray100 + } + + private let menuPriceTextFieldBackground = UIView().then { + $0.layer.cornerRadius = 8 + $0.backgroundColor = .gray5 + } + + let menuPriceTextField = UITextField().then { + $0.attributedPlaceholder = NSAttributedString( + string: "가격을 입력해 주세요", + attributes: [.foregroundColor: UIColor.gray30] + ) + $0.font = .medium(size: 14) + $0.textColor = .gray100 + } + + override func prepareForReuse() { + super.prepareForReuse() + + self.cameraButton.setImage(nil, for: .normal) + } + + override func setup() { + self.selectionStyle = .none + self.addSubViews([ + self.containerView, + self.cameraButton, + self.menuNameTextFieldBackground, + self.menuNameTextField, + self.menuPriceTextFieldBackground, + self.menuPriceTextField + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.top.equalToSuperview().offset(16) + make.bottom.equalToSuperview() + } + + self.cameraButton.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(12) + make.top.equalTo(self.containerView).offset(12) + make.bottom.equalTo(self.containerView).offset(-12) + make.width.equalTo(self.cameraButton.snp.height) + } + + self.menuNameTextFieldBackground.snp.makeConstraints { make in + make.left.equalTo(self.cameraButton.snp.right).offset(12) + make.top.equalTo(self.cameraButton) + make.right.equalTo(self.containerView).offset(-12) + make.height.equalTo(48) + } + + self.menuNameTextField.snp.makeConstraints { make in + make.left.equalTo(self.menuNameTextFieldBackground).offset(12) + make.top.equalTo(self.menuNameTextFieldBackground).offset(15) + make.bottom.equalTo(self.menuNameTextFieldBackground).offset(-15) + make.right.equalTo(self.menuNameTextFieldBackground).offset(-12) + } + + self.menuPriceTextFieldBackground.snp.makeConstraints { make in + make.left.equalTo(self.menuNameTextFieldBackground) + make.right.equalTo(self.menuPriceTextFieldBackground) + make.top.equalTo(self.menuPriceTextFieldBackground.snp.bottom).offset(8) + make.height.equalTo(self.menuNameTextFieldBackground) + } + } +} + diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 9b95d4f..5120a91 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -101,6 +101,11 @@ "edit_schedule_location" = "출몰 지역"; "edit_schedule_save" = "저장하기"; +// Eidt Menu +"edit_menu_title" = "메뉴 관리"; +"edit_menu_delete" = "삭제"; +"edit_menu_save" = "저장하기"; + // Statistics "statistics_filter_total" = "전체"; "statistics_filter_day" = "일별"; From 2d07b8815610d0801d09e909f300da0361da669c Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 29 May 2022 15:15:53 +0900 Subject: [PATCH 082/166] =?UTF-8?q?wip:=20=EB=A9=94=EB=89=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=ED=99=94=EB=A9=B4=20Reactor=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 +++++ .../ic_add_menu.imageset/Contents.json | 23 ++++++++++++++ .../ic_add_menu.imageset/Group 777.png | Bin 0 -> 424 bytes .../ic_add_menu.imageset/Group 777@2x.png | Bin 0 -> 662 bytes .../ic_add_menu.imageset/Group 777@3x.png | Bin 0 -> 966 bytes .../edit-menu/EditMenuReactor.swift | 23 ++++++++++++++ .../edit-menu/EditMenuView.swift | 5 +++ .../subviews/EditMenuTableFooterView.swift | 29 ++++++++++++++++++ 8 files changed, 88 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Group 777.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Group 777@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Group 777@3x.png create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 18fb15a..dccc5a8 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -127,6 +127,8 @@ 6E8D01342843361700FAB49E /* EditMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01332843361700FAB49E /* EditMenuViewController.swift */; }; 6E8D01362843365E00FAB49E /* EditMenuCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */; }; 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01392843396800FAB49E /* EditMenuTableViewCell.swift */; }; + 6E8D013C2843415900FAB49E /* EditMenuReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D013B2843415900FAB49E /* EditMenuReactor.swift */; }; + 6E8D013E284341CB00FAB49E /* EditMenuTableFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D013D284341CB00FAB49E /* EditMenuTableFooterView.swift */; }; 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F2E27EEBDB7005345BB /* CropViewController */; }; 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 6E8E7F3027EEBDB7005345BB /* TOCropViewController */; }; 6E91A9852841D4B30090361F /* StatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E91A9842841D4B30090361F /* StatisticsReactor.swift */; }; @@ -340,6 +342,8 @@ 6E8D01332843361700FAB49E /* EditMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuViewController.swift; sourceTree = ""; }; 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuCoordinator.swift; sourceTree = ""; }; 6E8D01392843396800FAB49E /* EditMenuTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuTableViewCell.swift; sourceTree = ""; }; + 6E8D013B2843415900FAB49E /* EditMenuReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuReactor.swift; sourceTree = ""; }; + 6E8D013D284341CB00FAB49E /* EditMenuTableFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuTableFooterView.swift; sourceTree = ""; }; 6E91A9842841D4B30090361F /* StatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsReactor.swift; sourceTree = ""; }; 6E91A9882841DC110090361F /* DailyStatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsView.swift; sourceTree = ""; }; 6E91A98A2841DCAF0090361F /* DailyStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsViewController.swift; sourceTree = ""; }; @@ -742,6 +746,7 @@ 6E8D01312843333300FAB49E /* EditMenuView.swift */, 6E8D01332843361700FAB49E /* EditMenuViewController.swift */, 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */, + 6E8D013B2843415900FAB49E /* EditMenuReactor.swift */, ); path = "edit-menu"; sourceTree = ""; @@ -750,6 +755,7 @@ isa = PBXGroup; children = ( 6E8D01382843396000FAB49E /* cells */, + 6E8D013D284341CB00FAB49E /* EditMenuTableFooterView.swift */, ); path = subviews; sourceTree = ""; @@ -1356,6 +1362,7 @@ 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, + 6E8D013C2843415900FAB49E /* EditMenuReactor.swift in Sources */, 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */, 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6E5DCE6527FDB06600CA58EE /* Area.swift in Sources */, @@ -1369,6 +1376,7 @@ 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */, 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, + 6E8D013E284341CB00FAB49E /* EditMenuTableFooterView.swift in Sources */, 6E5F3DD2281D2200002282B6 /* GlobalState.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Contents.json new file mode 100644 index 0000000..a8ca140 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 777.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 777@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 777@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Group 777.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_add_menu.imageset/Group 777.png new file mode 100644 index 0000000000000000000000000000000000000000..4c1c0e7b6c1a4531791abb3a30534548f2c6262c GIT binary patch literal 424 zcmV;Z0ayNsP)8=KS;K+@d;F7MJ+3c zViA!aEeSYzHy+XH2-OfGF&!q+vLnA-J(ru!(JWKzP=%fH`C$ERj)P!9o4Zryx{)5PO`DyK@k z!!$iMa{}isLNayeBB+oaz%pAnR(~cHZ?xKywv!i3i00foCK({5d7bu0YWN?&M_;~% SRbHn60000Q;-z&Ne3O=AU7~6fR4ur@C6vs@NgKs zNM1}xNQh$``#0mUcf7OGY9*~ih>BBPz|2z_>fai)F7RW4Xd(Egb%(!Q5N_f7ZFJ{b zC^b4!mZh;XoLvh!U1cGaFM-ikKE*55Q95>ipEgo3?>P5z$X`|b3EhACnXL$>(((()DUU3L!}> zBcHE@!=3`-3&aKEG?ftHU>U_;kIZE zj?$P2GSTyjoTi)jJ59`T8Ey~n5yv;DfiD17L@E6d5J?YR!EHoWh zy3|N)2&o`ZwMEVGo*g$oo7j#Md>_e5Y@L<&^?hIN-JJ~GJJNAj|{X< zfhg71%5EM9(2Y9IuT_yR*%%Q*SS0AFlND&n@mUVxsI!=jQN#on;04~mYS$AU4MG{G zv>sGQFafo~TI7LuL)t=iYu$HqU#%+3X(aSEw|#eH!D_$IvXEFO zsgDp5>Es<$9=vkC=fA#%efAR(!B)C4gM9H=PFg*XY*>hprMp>2gdFlcLbz}|S@lj_ z0rK=gi!cSE6{jYHCm?Z=gIQemLeoO5$TW!Na>x9@j+xA0`>J>?&@pd)sQu=iXCx#Q^38%M-A zkl<&&ybg5F@F``?VGC(4iu{+)QkeO*Q0|s%qw4QN?EE?$dXHErC@g@as`D*Cy4m{v zX=pp~yeB|{_j6AOY{h>?2QU{~a=?bU9IyahXf+j0b%pc4+b|V{szSajNnC|-=sL0` z+Z_iq?Z7m&+K>-d!1-y>9S;mbxvp^qh>ePP zy@V*2@6aWAK literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift new file mode 100644 index 0000000..4d24ad4 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -0,0 +1,23 @@ +import ReactorKit +import UIKit + +final class EditMenuReactor { + enum Action { + case addPhoto(index: Int, photo: UIImage) + case inputMenuName(index: Int, name: String) + case inputMenuPrice(index: Int, price: String) + case tapDeleteMenuButton(index: Int) + case tapAddMenuButton + case tapSaveButton + } + + enum Mutation { + case setPhoto(index: Int, photo: UIImage) + } + + struct State { + var store: Store + var isAddMenuButtonHidden: Bool + var isEnableSaveButton: Bool + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift index 34d73b8..f331ac0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift @@ -43,8 +43,13 @@ final class EditMenuView: BaseView { $0.setBackgroundColor(color: .gray30, forState: .disabled) } + let tableViewFooterView = EditMenuTableFooterView( + frame: .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 56) + ) + override func setup() { self.backgroundColor = .gray0 + self.menuTableView.tableFooterView = self.tableViewFooterView self.addSubViews([ self.backButton, self.titleLabel, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift new file mode 100644 index 0000000..e09c2fe --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift @@ -0,0 +1,29 @@ +import UIKit + +final class EditMenuTableFooterView: BaseView { + let addMenuButton = UIButton().then { + $0.layer.borderColor = UIColor.green.cgColor + $0.layer.borderWidth = 1 + $0.setImage(UIImage(named: "ic_add_menu"), for: .normal) + $0.setTitle("메뉴 추가하기", for: .normal) + $0.setTitleColor(.green, for: .normal) + $0.titleLabel?.font = .bold(size: 14) + $0.backgroundColor = .white + $0.layer.cornerRadius = 8 + } + + override func setup() { + self.addSubViews([ + self.addMenuButton + ]) + } + + override func bindConstraints() { + self.addMenuButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24).priority(.high) + make.top.equalToSuperview().offset(6).priority(.high) + make.right.equalToSuperview().offset(-24).priority(.high) + make.height.equalTo(48) + } + } +} From 77550a55e6f9a46931cfefaea14a062fbd4fac4c Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 2 Jun 2022 20:49:46 +0900 Subject: [PATCH 083/166] =?UTF-8?q?feat:=20EditMenuReactor=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuReactor.swift | 115 +++++++++++++++++- .../models/presentation/Menu.swift | 6 +- .../models/presentation/Store.swift | 2 +- 3 files changed, 115 insertions(+), 8 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 4d24ad4..5dce2bd 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -1,18 +1,27 @@ -import ReactorKit import UIKit -final class EditMenuReactor { +import ReactorKit +import RxRelay + +final class EditMenuReactor: BaseReactor, Reactor { enum Action { case addPhoto(index: Int, photo: UIImage) case inputMenuName(index: Int, name: String) - case inputMenuPrice(index: Int, price: String) + case inputMenuPrice(index: Int, price: Int) case tapDeleteMenuButton(index: Int) case tapAddMenuButton case tapSaveButton } enum Mutation { - case setPhoto(index: Int, photo: UIImage) + case setPhoto(index: Int, photoURL: String) + case setMenuName(index: Int, name: String) + case setMenuPrice(index: Int, price: Int) + case deleteMenu(index: Int) + case addMenu + case dismiss + case showLoading(isShow: Bool) + case showErrorAlert(error: Error) } struct State { @@ -20,4 +29,102 @@ final class EditMenuReactor { var isAddMenuButtonHidden: Bool var isEnableSaveButton: Bool } + + let initialState: State + let dismissPublisher = PublishRelay() + private let storeService: StoreServiceType + private let imageService: ImageServiceType + private let globalState: GlobalState + + init( + storeService: StoreServiceType, + imageService: ImageServiceType, + globalState: GlobalState, + state: State = State( + store: Store(), + isAddMenuButtonHidden: false, + isEnableSaveButton: true + ) + ) { + self.storeService = storeService + self.imageService = imageService + self.globalState = globalState + self.initialState = state + } + + func mutate(action: Action) -> Observable { + switch action { + case .addPhoto(let index, let photo): + return self.uploadImage(image: photo) + .map { .setPhoto(index: index, photoURL: $0) } + .catch { .just(.showErrorAlert(error: $0)) } + + case .inputMenuName(let index, let name): + return .just(.setMenuName(index: index, name: name)) + + case .inputMenuPrice(let index, let price): + return .just(.setMenuPrice(index: index, price: price)) + + case .tapDeleteMenuButton(let index): + return .just(.deleteMenu(index: index)) + + case .tapAddMenuButton: + return .just(.addMenu) + + case .tapSaveButton: + return .concat([ + .just(.showLoading(isShow: true)), + self.updateStore(store: self.currentState.store), + .just(.showLoading(isShow: false)) + ]) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setPhoto(let index, let photoURL): + newState.store.menus[index].imageUrl = photoURL + + case .setMenuName(let index, let name): + newState.store.menus[index].name = name + + case .setMenuPrice(let index, let price): + newState.store.menus[index].price = price + + case .deleteMenu(let index): + newState.store.menus.remove(at: index) + + case .addMenu: + newState.store.menus.append(Menu()) + + case .dismiss: + self.dismissPublisher.accept(()) + + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func uploadImage(image: UIImage) -> Observable { + return self.imageService.uploadImage(image: image, fileType: .menu) + .map { $0.imageUrl } + } + + private func updateStore(store: Store) -> Observable { + return self.storeService.updateStore(store: self.currentState.store) + .map { _ in Mutation.dismiss } + .catch { + .merge([ + .just(.showErrorAlert(error: $0)), + .just(.showLoading(isShow: false)) + ]) + } + } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift index 9457b74..697a637 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift @@ -1,9 +1,9 @@ import Foundation struct Menu: Equatable { - let imageUrl: String - let name: String - let price: Int + var imageUrl: String + var name: String + var price: Int init(response: BossStoreMenuResponse) { self.imageUrl = response.imageUrl diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index 4f9e62e..f537754 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -11,7 +11,7 @@ struct Store: Equatable { var phoneNumber: String? var snsUrl: String? var introduction: String? - let menus: [Menu] + var menus: [Menu] var name: String var appearanceDays: [AppearanceDay] From 28bbb65f775789ebd44128e8d99eb0ddc81f7f15 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 2 Jun 2022 21:23:12 +0900 Subject: [PATCH 084/166] =?UTF-8?q?wip:=20=EB=A9=94=EB=89=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=99=94=EB=A9=B4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EB=B0=94=EC=9D=B8=EB=94=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyStoreInfoCoordinator.swift | 2 +- .../edit-menu/EditMenuReactor.swift | 14 ++-- .../edit-menu/EditMenuViewController.swift | 75 ++++++++++++++++++- .../cells/EditMenuTableViewCell.swift | 3 + 4 files changed, 83 insertions(+), 11 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift index e56223d..2600fb4 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoCoordinator.swift @@ -26,7 +26,7 @@ extension MyStoreInfoCoordinator { } func pushEditMenu(store: Store) { - let viewController = EditMenuViewController.instance() + let viewController = EditMenuViewController.instance(store: store) self.presenter.parent? .navigationController? diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 5dce2bd..c45d29d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -37,19 +37,19 @@ final class EditMenuReactor: BaseReactor, Reactor { private let globalState: GlobalState init( + store: Store, storeService: StoreServiceType, imageService: ImageServiceType, - globalState: GlobalState, - state: State = State( - store: Store(), - isAddMenuButtonHidden: false, - isEnableSaveButton: true - ) + globalState: GlobalState ) { self.storeService = storeService self.imageService = imageService self.globalState = globalState - self.initialState = state + self.initialState = .init( + store: store, + isAddMenuButtonHidden: store.menus.count == 5, + isEnableSaveButton: false + ) } func mutate(action: Action) -> Observable { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index f9abfa1..364208a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -1,15 +1,33 @@ import UIKit -final class EditMenuViewController: BaseViewController, EditMenuCoordinator { +import ReactorKit + +final class EditMenuViewController: BaseViewController, View, EditMenuCoordinator { private let editMenuView = EditMenuView() + private let editMenuReactor: EditMenuReactor private weak var coordinator: EditMenuCoordinator? - static func instance() -> EditMenuViewController { - return EditMenuViewController(nibName: nil, bundle: nil).then { + static func instance(store: Store) -> EditMenuViewController { + return EditMenuViewController(store: store).then { $0.hidesBottomBarWhenPushed = true } } + init(store: Store) { + self.editMenuReactor = EditMenuReactor( + store: store, + storeService: StoreService(), + imageService: ImageService(), + globalState: GlobalState.shared + ) + + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override func loadView() { self.view = self.editMenuView } @@ -18,6 +36,7 @@ final class EditMenuViewController: BaseViewController, EditMenuCoordinator { super.viewDidLoad() self.coordinator = self + self.reactor = self.editMenuReactor } override func bindEvent() { @@ -27,5 +46,55 @@ final class EditMenuViewController: BaseViewController, EditMenuCoordinator { self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) + + self.editMenuReactor.dismissPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.presenter.dismiss(animated: true) + }) + .disposed(by: self.eventDisposeBag) + + self.editMenuReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.editMenuReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.disposeBag) + } + + func bind(reactor: EditMenuReactor) { + // Bind State + reactor.state + .map { $0.store.menus } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.editMenuView.menuTableView.rx.items( + cellIdentifier: EditMenuTableViewCell.registerId, + cellType: EditMenuTableViewCell.self + )) { row, menu, cell in + cell.bind(menu: menu) + } + .disposed(by: self.disposeBag) + + reactor.state + .map { $0.isAddMenuButtonHidden } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: true) + .drive(self.editMenuView.tableViewFooterView.rx.isHidden) + .disposed(by: self.disposeBag) + + reactor.state + .map { $0.isEnableSaveButton } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.editMenuView.saveButton.rx.isEnabled) + .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index 653e934..16f2a2a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -97,5 +97,8 @@ final class EditMenuTableViewCell: BaseTableViewCell { make.height.equalTo(self.menuNameTextFieldBackground) } } + + func bind(menu: Menu) { + } } From 0b41dc92260ab972560591729158046923528bbd Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 4 Jun 2022 14:23:32 +0900 Subject: [PATCH 085/166] =?UTF-8?q?wip:=20=EB=A9=94=EB=89=B4=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=99=94=EB=A9=B4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EB=B0=94=EC=9D=B8=EB=94=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuCoordinator.swift | 78 ++++++++++++ .../edit-menu/EditMenuReactor.swift | 41 ++++++- .../edit-menu/EditMenuView.swift | 77 +++++++++++- .../edit-menu/EditMenuViewController.swift | 111 ++++++++++++++++++ .../subviews/EditMenuTableFooterView.swift | 5 +- .../cells/EditMenuTableViewCell.swift | 30 +++-- .../strings/en.lproj/Localizations.strings | 3 + 7 files changed, 325 insertions(+), 20 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift index 792526c..2787df2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift @@ -1,3 +1,81 @@ +import UIKit +import PhotosUI + +import SPPermissions +import SPPermissionsPhotoLibrary +import SPPermissionsCamera + protocol EditMenuCoordinator: BaseCoordinator, AnyObject { + func showPhotoActionSheet() + func showCamera() + + func showAlbumPicker() +} + +extension EditMenuCoordinator where Self: BaseViewController { + func showPhotoActionSheet() { + let alert = UIAlertController( + title: "이미지 불러오기", + message: nil, + preferredStyle: .actionSheet + ) + let libraryAction = UIAlertAction( + title: "앨범", + style: .default + ) { _ in + if SPPermissions.Permission.photoLibrary.authorized { + self.showAlbumPicker() + } else { + let controller = SPPermissions.native([.photoLibrary]) + + controller.delegate = self as? SPPermissionsDelegate + controller.present(on: self) + } + } + let cameraAction = UIAlertAction( + title: "카메라", + style: .default + ) { _ in + if SPPermissions.Permission.camera.authorized { + self.showCamera() + } else { + let controller = SPPermissions.native([.camera]) + + controller.delegate = self as? SPPermissionsDelegate + controller.present(on: self) + } + } + let cancelAction = UIAlertAction( + title: "취소", + style: .cancel, + handler: nil + ) + + alert.addAction(libraryAction) + alert.addAction(cameraAction) + alert.addAction(cancelAction) + self.presenter.present(alert, animated: true) + } + + func showCamera() { + let imagePicker = UIImagePickerController().then { + $0.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate + $0.sourceType = .camera + $0.cameraCaptureMode = .photo + } + + self.presenter.present(imagePicker, animated: true) + } + + func showAlbumPicker() { + var configuration = PHPickerConfiguration() + + configuration.filter = .images + + let picker = PHPickerViewController(configuration: configuration) + + picker.delegate = self as? PHPickerViewControllerDelegate + self.presenter.present(picker, animated: true, completion: nil) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index c45d29d..eab48f9 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -20,12 +20,14 @@ final class EditMenuReactor: BaseReactor, Reactor { case deleteMenu(index: Int) case addMenu case dismiss + case refreshSaveButtonEnable case showLoading(isShow: Bool) case showErrorAlert(error: Error) } struct State { var store: Store + var originalMenuCount: Int var isAddMenuButtonHidden: Bool var isEnableSaveButton: Bool } @@ -45,9 +47,16 @@ final class EditMenuReactor: BaseReactor, Reactor { self.storeService = storeService self.imageService = imageService self.globalState = globalState + + var newStore = store + if store.menus.isEmpty { + newStore.menus.append(Menu()) + } + self.initialState = .init( - store: store, - isAddMenuButtonHidden: store.menus.count == 5, + store: newStore, + originalMenuCount: store.menus.count, + isAddMenuButtonHidden: store.menus.count == 20, isEnableSaveButton: false ) } @@ -60,16 +69,31 @@ final class EditMenuReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert(error: $0)) } case .inputMenuName(let index, let name): - return .just(.setMenuName(index: index, name: name)) + return .merge([ + .just(.setMenuName(index: index, name: name)), + .just(.refreshSaveButtonEnable) + ]) case .inputMenuPrice(let index, let price): - return .just(.setMenuPrice(index: index, price: price)) + return .merge([ + .just(.setMenuPrice(index: index, price: price)), + .just(.refreshSaveButtonEnable) + ]) + case .tapDeleteMenuButton(let index): - return .just(.deleteMenu(index: index)) + return .merge([ + .just(.deleteMenu(index: index)), + .just(.refreshSaveButtonEnable) + ]) + case .tapAddMenuButton: - return .just(.addMenu) + return .merge([ + .just(.addMenu), + .just(.refreshSaveButtonEnable) + ]) + case .tapSaveButton: return .concat([ @@ -95,13 +119,18 @@ final class EditMenuReactor: BaseReactor, Reactor { case .deleteMenu(let index): newState.store.menus.remove(at: index) + newState.isAddMenuButtonHidden = newState.store.menus.count == 20 case .addMenu: newState.store.menus.append(Menu()) + newState.isAddMenuButtonHidden = newState.store.menus.count == 20 case .dismiss: self.dismissPublisher.accept(()) + case .refreshSaveButtonEnable: + newState.isEnableSaveButton = newState.store != self.initialState.store + case .showLoading(let isShow): self.showLoadginPublisher.accept(isShow) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift index f331ac0..e16439c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift @@ -4,6 +4,8 @@ import RxSwift import RxCocoa final class EditMenuView: BaseView { + private let tapBackgroundGesture = UITapGestureRecognizer() + let backButton = UIButton().then { $0.setImage(UIImage(named: "ic_back"), for: .normal) } @@ -14,9 +16,9 @@ final class EditMenuView: BaseView { $0.text = "edit_menu_title".localized } - fileprivate let menuCountLabel = UILabel().then { + private let menuCountLabel = UILabel().then { $0.font = .medium(size: 14) - $0.textColor = .black + $0.textColor = .gray30 } let deleteButton = UIButton().then { @@ -33,6 +35,7 @@ final class EditMenuView: BaseView { EditMenuTableViewCell.self, forCellReuseIdentifier: EditMenuTableViewCell.registerId ) + $0.contentInset = .init(top: 0, left: 0, bottom: 72, right: 0) } let saveButton = UIButton().then { @@ -47,9 +50,15 @@ final class EditMenuView: BaseView { frame: .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 56) ) + deinit { + NotificationCenter.default.removeObserver(self) + } + override func setup() { + self.addGestureRecognizer(self.tapBackgroundGesture) self.backgroundColor = .gray0 self.menuTableView.tableFooterView = self.tableViewFooterView + self.setupKeyboardEvent() self.addSubViews([ self.backButton, self.titleLabel, @@ -58,6 +67,14 @@ final class EditMenuView: BaseView { self.menuTableView, self.saveButton ]) + + self.tapBackgroundGesture.rx.event + .asDriver() + .throttle(.milliseconds(500)) + .drive(onNext: { [weak self] _ in + self?.endEditing(true) + }) + .disposed(by: self.disposeBag) } override func bindConstraints() { @@ -97,13 +114,67 @@ final class EditMenuView: BaseView { make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom).offset(-64) } } + + func setPhotoInCell(index: Int, photo: UIImage) { + guard let cell = self.menuTableView.cellForRow( + at: IndexPath(row: index, section: 0) + ) as? EditMenuTableViewCell else { return } + + cell.cameraButton.setImage(photo, for: .normal) + } + + fileprivate func setMenuCount(count: Int) { + let text = "\(count)/20개의 메뉴가 등록되어 있습니다." + let attributedTextRange = (text as NSString).range(of: "개의 메뉴가 등록되어 있습니다.") + let attributedString = NSMutableAttributedString(string: text) + + attributedString.addAttribute( + .foregroundColor, + value: UIColor.gray70, + range: attributedTextRange + ) + + self.menuCountLabel.attributedText = attributedString + } + + private func setupKeyboardEvent() { + NotificationCenter.default.addObserver( + self, + selector: #selector(onShowKeyboard(notification:)), + name: UIResponder.keyboardWillShowNotification, + object: nil + ) + NotificationCenter.default.addObserver( + self, + selector: #selector(onHideKeyboard(notification:)), + name: UIResponder.keyboardWillHideNotification, + object: nil + ) + } + + @objc func onShowKeyboard(notification: NSNotification) { + let userInfo = notification.userInfo! + var keyboardFrame + = (userInfo[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue + keyboardFrame = self.convert(keyboardFrame, from: nil) + + var contentInset = self.menuTableView.contentInset + contentInset.bottom = keyboardFrame.size.height + 10 + self.menuTableView.contentInset = contentInset + } + + @objc func onHideKeyboard(notification: NSNotification) { + let contentInset:UIEdgeInsets = UIEdgeInsets.zero + + self.menuTableView.contentInset = contentInset + } } extension Reactive where Base: EditMenuView { var menuCount: Binder { return Binder(self.base) { view, count in - view.menuCountLabel.text = "\(count)/20개의 메뉴가 등록되어 있습니다." + view.setMenuCount(count: count) } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index 364208a..cbfbd17 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -1,11 +1,15 @@ import UIKit +import PhotosUI import ReactorKit +import Base +import SPPermissions final class EditMenuViewController: BaseViewController, View, EditMenuCoordinator { private let editMenuView = EditMenuView() private let editMenuReactor: EditMenuReactor private weak var coordinator: EditMenuCoordinator? + private var selectedCellIndex = 0 // 사진 추가시, 셀 인덱스 확인을 위해 사용 static func instance(store: Store) -> EditMenuViewController { return EditMenuViewController(store: store).then { @@ -70,6 +74,19 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato } func bind(reactor: EditMenuReactor) { + // Bind Action + self.editMenuView.tableViewFooterView.addMenuButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapAddMenuButton } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + + self.editMenuView.saveButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapSaveButton } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + // Bind State reactor.state .map { $0.store.menus } @@ -80,9 +97,26 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato cellType: EditMenuTableViewCell.self )) { row, menu, cell in cell.bind(menu: menu) + cell.cameraButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .asDriver(onErrorJustReturn: ()) + .do(onNext: { [weak self] in + self?.selectedCellIndex = row + }) + .drive(onNext: { [weak self] in + self?.coordinator?.showPhotoActionSheet() + }) + .disposed(by: cell.disposeBag) } .disposed(by: self.disposeBag) + reactor.state + .map { $0.originalMenuCount } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: 0) + .drive(self.editMenuView.rx.menuCount) + .disposed(by: self.disposeBag) + reactor.state .map { $0.isAddMenuButtonHidden } .distinctUntilChanged() @@ -98,3 +132,80 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato .disposed(by: self.disposeBag) } } + +extension EditMenuViewController: + UIImagePickerControllerDelegate & UINavigationControllerDelegate +{ + func imagePickerController( + _ picker: UIImagePickerController, + didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any] + ) { + if let photo = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { + picker.dismiss(animated: true) { [weak self] in + guard let self = self else { return } + + self.editMenuView.setPhotoInCell( + index: self.selectedCellIndex, + photo: photo + ) + self.editMenuReactor.action.onNext( + .addPhoto(index: self.selectedCellIndex, photo: photo) + ) + } + } else { + picker.dismiss(animated: true, completion: nil) + } + } +} + +extension EditMenuViewController: SPPermissionsDelegate { + func didAllowPermission(_ permission: SPPermissions.Permission) { + if permission == .camera { + self.coordinator?.showCamera() + } else if permission == .photoLibrary { + self.coordinator?.showAlbumPicker() + } + } + + func didDeniedPermission(_ permission: SPPermissions.Permission) { + AlertUtils.showWithCancel( + viewController: self, + title: "authorization_denied_title".localized, + message: "authorization_denied_description".localized, + okButtonTitle: "authorization_setting".localized + ) { + guard let url = URL(string: UIApplication.openSettingsURLString) else { return } + if UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url) + } + } + } +} + +extension EditMenuViewController: PHPickerViewControllerDelegate { + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + let itemProvider = results.first?.itemProvider + + if let itemProvider = itemProvider, + itemProvider.canLoadObject(ofClass: UIImage.self) { + itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in + if let photo = image as? UIImage { + DispatchQueue.main.async { [weak self] in + guard let self = self else { return } + picker.dismiss(animated: true) { + self.editMenuView.setPhotoInCell( + index: self.selectedCellIndex, + photo: photo + ) + self.editMenuReactor.action.onNext( + .addPhoto(index: self.selectedCellIndex, photo: photo) + ) + } + } + } + } + } else { + // TODO: Handle empty results or item provider not being able load UIImage + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift index e09c2fe..5db3620 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift @@ -5,11 +5,12 @@ final class EditMenuTableFooterView: BaseView { $0.layer.borderColor = UIColor.green.cgColor $0.layer.borderWidth = 1 $0.setImage(UIImage(named: "ic_add_menu"), for: .normal) - $0.setTitle("메뉴 추가하기", for: .normal) + $0.setTitle("edit_menu_add".localized, for: .normal) $0.setTitleColor(.green, for: .normal) $0.titleLabel?.font = .bold(size: 14) $0.backgroundColor = .white $0.layer.cornerRadius = 8 + $0.imageEdgeInsets = .init(top: 0, left: 0, bottom: 0, right: 8) } override func setup() { @@ -21,7 +22,7 @@ final class EditMenuTableFooterView: BaseView { override func bindConstraints() { self.addMenuButton.snp.makeConstraints { make in make.left.equalToSuperview().offset(24).priority(.high) - make.top.equalToSuperview().offset(6).priority(.high) + make.top.equalToSuperview().offset(24).priority(.high) make.right.equalToSuperview().offset(-24).priority(.high) make.height.equalTo(48) } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index 16f2a2a..c81cb0f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -11,8 +11,10 @@ final class EditMenuTableViewCell: BaseTableViewCell { let cameraButton = UIButton().then { $0.backgroundColor = .gray10 - $0.setImage(UIImage(named: "ic_cemera"), for: .normal) $0.contentMode = .scaleAspectFill + $0.layer.cornerRadius = 16 + $0.clipsToBounds = true + $0.setImage(UIImage(named: "ic_camera"), for: .normal) } private let menuNameTextFieldBackground = UIView().then { @@ -22,7 +24,7 @@ final class EditMenuTableViewCell: BaseTableViewCell { let menuNameTextField = UITextField().then { $0.attributedPlaceholder = NSAttributedString( - string: "메뉴를 입력해주세요.", + string: "edit_menu_name_placeholder".localized, attributes: [.foregroundColor: UIColor.gray30] ) $0.font = .medium(size: 14) @@ -36,20 +38,23 @@ final class EditMenuTableViewCell: BaseTableViewCell { let menuPriceTextField = UITextField().then { $0.attributedPlaceholder = NSAttributedString( - string: "가격을 입력해 주세요", + string: "edit_menu_price_placeholder".localized, attributes: [.foregroundColor: UIColor.gray30] ) $0.font = .medium(size: 14) $0.textColor = .gray100 + $0.keyboardType = .decimalPad } override func prepareForReuse() { super.prepareForReuse() - self.cameraButton.setImage(nil, for: .normal) + self.cameraButton.setImage(UIImage(named: "ic_camera"), for: .normal) } override func setup() { + self.contentView.isUserInteractionEnabled = false + self.backgroundColor = .clear self.selectionStyle = .none self.addSubViews([ self.containerView, @@ -63,16 +68,16 @@ final class EditMenuTableViewCell: BaseTableViewCell { override func bindConstraints() { self.containerView.snp.makeConstraints { make in - make.left.equalToSuperview() - make.right.equalToSuperview() + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) make.top.equalToSuperview().offset(16) make.bottom.equalToSuperview() + make.bottom.equalTo(self.cameraButton).offset(12) } self.cameraButton.snp.makeConstraints { make in make.left.equalTo(self.containerView).offset(12) make.top.equalTo(self.containerView).offset(12) - make.bottom.equalTo(self.containerView).offset(-12) make.width.equalTo(self.cameraButton.snp.height) } @@ -92,10 +97,17 @@ final class EditMenuTableViewCell: BaseTableViewCell { self.menuPriceTextFieldBackground.snp.makeConstraints { make in make.left.equalTo(self.menuNameTextFieldBackground) - make.right.equalTo(self.menuPriceTextFieldBackground) - make.top.equalTo(self.menuPriceTextFieldBackground.snp.bottom).offset(8) + make.right.equalTo(self.menuNameTextFieldBackground) + make.top.equalTo(self.menuNameTextFieldBackground.snp.bottom).offset(8) make.height.equalTo(self.menuNameTextFieldBackground) } + + self.menuPriceTextField.snp.makeConstraints { make in + make.left.equalTo(self.menuPriceTextFieldBackground).offset(12) + make.top.equalTo(self.menuPriceTextFieldBackground).offset(15) + make.bottom.equalTo(self.menuPriceTextFieldBackground).offset(-15) + make.right.equalTo(self.menuPriceTextFieldBackground).offset(-12) + } } func bind(menu: Menu) { diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 5120a91..e98c7f1 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -105,6 +105,9 @@ "edit_menu_title" = "메뉴 관리"; "edit_menu_delete" = "삭제"; "edit_menu_save" = "저장하기"; +"edit_menu_add" = "메뉴 추가하기"; +"edit_menu_name_placeholder" = "메뉴를 입력해주세요."; +"edit_menu_price_placeholder" = "가격을 입력해 주세요."; // Statistics "statistics_filter_total" = "전체"; From 58ca9b3d49ccd73b90392b63592f09ceee21eac7 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 4 Jun 2022 14:32:11 +0900 Subject: [PATCH 086/166] =?UTF-8?q?feat:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20b?= =?UTF-8?q?ulk=20=EC=97=85=EB=A1=9C=EB=93=9C=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/ImageService.swift | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift index e9061aa..6455618 100644 --- a/3dollar-in-my-pocket-manager/services/ImageService.swift +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -6,6 +6,8 @@ import Base protocol ImageServiceType { func uploadImage(image: UIImage, fileType: FileType) -> Observable + + func uploadImages(images: [UIImage], fileType: FileType) -> Observable<[ImageUploadResponse]> } struct ImageService: ImageServiceType { @@ -36,4 +38,42 @@ struct ImageService: ImageServiceType { return Disposables.create() } } + + func uploadImages(images: [UIImage], fileType: FileType) -> Observable<[ImageUploadResponse]> { + var datas: [Data] = [] + + for image in images { + guard let data = image.jpegData(compressionQuality: 0.8) else { + return .error(BaseError.nilValue) + } + + datas.append(data) + } + + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/upload/\(fileType.rawValue)/bulk" + + HTTPUtils.fileUploadSession.upload(multipartFormData: { multipartFormData in + for index in datas.indices { + multipartFormData.append( + datas[index], + withName: "file", + fileName: DateUtils.todayString(format: "yyyy-MM-dd'T'HH-mm-ss") + "_image\(index).png", + mimeType: "image/png" + ) + } + }, to: urlString) + .responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + + + } } From ba3d564696fab8eab1550729d5bc3fdd4236538d Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 4 Jun 2022 15:53:30 +0900 Subject: [PATCH 087/166] =?UTF-8?q?wip:=20=EB=A9=94=EB=89=B4=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=99=94=EB=A9=B4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?API=20=ED=86=B5=EC=8B=A0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuReactor.swift | 80 +++++++++++++------ .../edit-menu/EditMenuViewController.swift | 14 +++- .../cells/EditMenuTableViewCell.swift | 12 ++- .../extensions/UIButtonExtensions.swift | 9 +++ .../models/presentation/Menu.swift | 5 ++ .../services/ImageService.swift | 16 ++-- 6 files changed, 98 insertions(+), 38 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index eab48f9..93f689b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -14,12 +14,12 @@ final class EditMenuReactor: BaseReactor, Reactor { } enum Mutation { - case setPhoto(index: Int, photoURL: String) + case setPhoto(index: Int, photo: UIImage) case setMenuName(index: Int, name: String) case setMenuPrice(index: Int, price: Int) case deleteMenu(index: Int) case addMenu - case dismiss + case pop case refreshSaveButtonEnable case showLoading(isShow: Bool) case showErrorAlert(error: Error) @@ -30,10 +30,12 @@ final class EditMenuReactor: BaseReactor, Reactor { var originalMenuCount: Int var isAddMenuButtonHidden: Bool var isEnableSaveButton: Bool + /// 변경되거나 추가된 이미지들 + var newPhotos: [(Int, UIImage)] } let initialState: State - let dismissPublisher = PublishRelay() + let popPublisher = PublishRelay() private let storeService: StoreServiceType private let imageService: ImageServiceType private let globalState: GlobalState @@ -57,16 +59,15 @@ final class EditMenuReactor: BaseReactor, Reactor { store: newStore, originalMenuCount: store.menus.count, isAddMenuButtonHidden: store.menus.count == 20, - isEnableSaveButton: false + isEnableSaveButton: false, + newPhotos: [] ) } func mutate(action: Action) -> Observable { switch action { case .addPhoto(let index, let photo): - return self.uploadImage(image: photo) - .map { .setPhoto(index: index, photoURL: $0) } - .catch { .just(.showErrorAlert(error: $0)) } + return .just(.setPhoto(index: index, photo: photo)) case .inputMenuName(let index, let name): return .merge([ @@ -98,7 +99,10 @@ final class EditMenuReactor: BaseReactor, Reactor { case .tapSaveButton: return .concat([ .just(.showLoading(isShow: true)), - self.updateStore(store: self.currentState.store), + self.updateStore( + store: self.currentState.store, + newPhotos: self.currentState.newPhotos + ), .just(.showLoading(isShow: false)) ]) } @@ -108,8 +112,13 @@ final class EditMenuReactor: BaseReactor, Reactor { var newState = state switch mutation { - case .setPhoto(let index, let photoURL): - newState.store.menus[index].imageUrl = photoURL + case .setPhoto(let index, let photo): + newState.store.menus[index].photo = photo + if let index = state.newPhotos.firstIndex(where: { $0.0 == index }) { + newState.newPhotos[index] = (index, photo) + } else { + newState.newPhotos.append((index, photo)) + } case .setMenuName(let index, let name): newState.store.menus[index].name = name @@ -125,8 +134,8 @@ final class EditMenuReactor: BaseReactor, Reactor { newState.store.menus.append(Menu()) newState.isAddMenuButtonHidden = newState.store.menus.count == 20 - case .dismiss: - self.dismissPublisher.accept(()) + case .pop: + self.popPublisher.accept(()) case .refreshSaveButtonEnable: newState.isEnableSaveButton = newState.store != self.initialState.store @@ -141,19 +150,38 @@ final class EditMenuReactor: BaseReactor, Reactor { return newState } - private func uploadImage(image: UIImage) -> Observable { - return self.imageService.uploadImage(image: image, fileType: .menu) - .map { $0.imageUrl } - } - - private func updateStore(store: Store) -> Observable { - return self.storeService.updateStore(store: self.currentState.store) - .map { _ in Mutation.dismiss } - .catch { - .merge([ - .just(.showErrorAlert(error: $0)), - .just(.showLoading(isShow: false)) - ]) - } + private func updateStore(store: Store, newPhotos: [(Int, UIImage)]) -> Observable { + if newPhotos.isEmpty { + return self.storeService.updateStore(store: self.currentState.store) + .map { _ in Mutation.pop } + .catch { + .merge([ + .just(.showErrorAlert(error: $0)), + .just(.showLoading(isShow: false)) + ]) + } + } else { + let images = newPhotos.map { $0.1 } + + return self.imageService.uploadImages(images: images, fileType: .menu) + .flatMap { response -> Observable in + var newStore = store + let imageURLs = response.map { $0.imageUrl } + let newPhotoIndex = newPhotos.map { $0.0 } + + for index in imageURLs.indices { + newStore.menus[newPhotoIndex[index]].imageUrl = imageURLs[index] + } + + return self.storeService.updateStore(store: newStore) + .map { _ in Mutation.pop } + } + .catch { + .merge([ + .just(.showErrorAlert(error: $0)), + .just(.showLoading(isShow: false)) + ]) + } + } } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index cbfbd17..e9c4f0c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -51,10 +51,10 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato }) .disposed(by: self.eventDisposeBag) - self.editMenuReactor.dismissPublisher + self.editMenuReactor.popPublisher .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in - self?.coordinator?.presenter.dismiss(animated: true) + self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) @@ -97,6 +97,16 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato cellType: EditMenuTableViewCell.self )) { row, menu, cell in cell.bind(menu: menu) + cell.menuNameTextField.rx.controlEvent(.editingDidEnd) + .map { cell.menuNameTextField.text ?? "" } + .map { Reactor.Action.inputMenuName(index: row, name: $0) } + .bind(to: reactor.action) + .disposed(by: cell.disposeBag) + cell.menuPriceTextField.rx.controlEvent(.editingDidEnd) + .map { cell.menuPriceTextField.text ?? "" } + .map { Reactor.Action.inputMenuPrice(index: row, price: Int($0) ?? 0) } + .bind(to: reactor.action) + .disposed(by: cell.disposeBag) cell.cameraButton.rx.tap .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .asDriver(onErrorJustReturn: ()) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index c81cb0f..c90de64 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -11,7 +11,7 @@ final class EditMenuTableViewCell: BaseTableViewCell { let cameraButton = UIButton().then { $0.backgroundColor = .gray10 - $0.contentMode = .scaleAspectFill + $0.imageView?.contentMode = .scaleAspectFill $0.layer.cornerRadius = 16 $0.clipsToBounds = true $0.setImage(UIImage(named: "ic_camera"), for: .normal) @@ -111,6 +111,16 @@ final class EditMenuTableViewCell: BaseTableViewCell { } func bind(menu: Menu) { + if !menu.imageUrl.isEmpty { + self.cameraButton.setImage(urlString: menu.imageUrl) + } + + if let photo = menu.photo { + self.cameraButton.setImage(photo, for: .normal) + } + + self.menuNameTextField.text = menu.name + self.menuPriceTextField.text = menu.price == 0 ? "" : "\(menu.price)" } } diff --git a/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift index 4754b96..36c54bc 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIButtonExtensions.swift @@ -1,5 +1,7 @@ import UIKit +import Kingfisher + extension UIButton { func setBackgroundColor(color: UIColor, forState: UIControl.State) { self.clipsToBounds = true // add this to maintain corner radius @@ -12,4 +14,11 @@ extension UIButton { self.setBackgroundImage(colorImage, for: forState) } } + + func setImage(urlString: String?, for state: UIControl.State = .normal) { + if let urlString = urlString, + let url = URL(string: urlString) { + self.kf.setImage(with: url, for: state) + } + } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift index 697a637..8d34d63 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift @@ -1,17 +1,22 @@ import Foundation +import UIKit struct Menu: Equatable { + /// 서버 업로드 전 단말기에서만 사용하는 이미지 필드 + var photo: UIImage? var imageUrl: String var name: String var price: Int init(response: BossStoreMenuResponse) { + self.photo = nil self.imageUrl = response.imageUrl self.name = response.name self.price = response.price } init() { + self.photo = nil self.imageUrl = "" self.name = "" self.price = 0 diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift index 6455618..8a072d6 100644 --- a/3dollar-in-my-pocket-manager/services/ImageService.swift +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -57,23 +57,21 @@ struct ImageService: ImageServiceType { for index in datas.indices { multipartFormData.append( datas[index], - withName: "file", + withName: "files", fileName: DateUtils.todayString(format: "yyyy-MM-dd'T'HH-mm-ss") + "_image\(index).png", mimeType: "image/png" ) } }, to: urlString) - .responseDecodable(of: ResponseContainer.self) { response in - if response.isSuccess() { - observer.processValue(response: response) - } else { - observer.processHTTPError(response: response) - } + .responseDecodable(of: ResponseContainer<[ImageUploadResponse]>.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) } + } return Disposables.create() } - - } } From e9333ecc72ad677f8311eea7b8105c4c67661b46 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 5 Jun 2022 10:02:40 +0900 Subject: [PATCH 088/166] =?UTF-8?q?feat:=20=EA=B0=80=EA=B2=8C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=20=EC=85=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 + .../my/my-store-info/MyStoreInfoView.swift | 24 ++++++ .../MyStoreInfoViewController.swift | 5 +- .../edit-menu/EditMenuCoordinator.swift | 14 ++++ .../edit-menu/EditMenuReactor.swift | 13 ++++ .../edit-menu/EditMenuViewController.swift | 14 +++- .../subviews/cells/MyStoreInfoMenuCell.swift | 77 +++++++++++++++++++ .../strings/en.lproj/Localizations.strings | 2 + 8 files changed, 147 insertions(+), 6 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index dccc5a8..d58bf51 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -120,6 +120,7 @@ 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */; }; 6E7A49E027D8D0E200E6653C /* CategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */; }; 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */; }; + 6E7DFAF7284C2ECE006F0078 /* MyStoreInfoMenuCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7DFAF6284C2ECE006F0078 /* MyStoreInfoMenuCell.swift */; }; 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; 6E89A865281E5A3300B795EF /* EditScheduleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */; }; 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */; }; @@ -334,6 +335,7 @@ 6E7A49DD27D8D0A600E6653C /* StoreCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategoryResponse.swift; sourceTree = ""; }; 6E7A49DF27D8D0E200E6653C /* CategoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryService.swift; sourceTree = ""; }; 6E7A49E127D8D3F800E6653C /* StoreCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCategory.swift; sourceTree = ""; }; + 6E7DFAF6284C2ECE006F0078 /* MyStoreInfoMenuCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoMenuCell.swift; sourceTree = ""; }; 6E808CAD27F016CF00C46459 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cpqyhqxhepkpbfajpzjhmdywgxbk/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleTableViewCell.swift; sourceTree = ""; }; @@ -727,6 +729,7 @@ 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */, 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */, 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */, + 6E7DFAF6284C2ECE006F0078 /* MyStoreInfoMenuCell.swift */, ); path = cells; sourceTree = ""; @@ -1303,6 +1306,7 @@ 6E1F54AA27CB7D5C0050BBBA /* LoginRequest.swift in Sources */, 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */, + 6E7DFAF7284C2ECE006F0078 /* MyStoreInfoMenuCell.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E91A9952841EE620090361F /* CursorResponse.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index 779739f..19be954 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -29,6 +29,26 @@ final class MyStoreInfoView: BaseView { ), subitems: [item]) let section = NSCollectionLayoutSection(group: group) + section.boundarySupplementaryItems = [.init( + layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoHeaderView.height) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + )] + return section + } else if sectionIndex == 2 { + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(MyStoreInfoMenuCell.height) + )) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(MyStoreInfoMenuCell.height) + ), subitems: [item]) + let section = NSCollectionLayoutSection(group: group) + section.boundarySupplementaryItems = [.init( layoutSize: .init( widthDimension: .fractionalWidth(1), @@ -71,6 +91,10 @@ final class MyStoreInfoView: BaseView { MyStoreInfoIntroductionCell.self, forCellWithReuseIdentifier: MyStoreInfoIntroductionCell.registerId ) + $0.register( + MyStoreInfoMenuCell.self, + forCellWithReuseIdentifier: MyStoreInfoMenuCell.registerId + ) $0.register( MyStoreInfoWorkDayCell.self, forCellWithReuseIdentifier: MyStoreInfoWorkDayCell.registerId diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 216a58f..26fbe2e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -110,10 +110,11 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor case .menu(let menu): guard let cell = collectionView.dequeueReusableCell( - withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, + withReuseIdentifier: MyStoreInfoMenuCell.registerId, for: indexPath - ) as? MyStoreInfoWorkDayCell else { return BaseCollectionViewCell() } + ) as? MyStoreInfoMenuCell else { return BaseCollectionViewCell() } + cell.bind(menu: menu) return cell case .appearanceDay(let appearanceDay): diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift index 2787df2..1838cd2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift @@ -4,8 +4,11 @@ import PhotosUI import SPPermissions import SPPermissionsPhotoLibrary import SPPermissionsCamera +import Base protocol EditMenuCoordinator: BaseCoordinator, AnyObject { + func showSaveAlert() + func showPhotoActionSheet() func showCamera() @@ -14,6 +17,17 @@ protocol EditMenuCoordinator: BaseCoordinator, AnyObject { } extension EditMenuCoordinator where Self: BaseViewController { + func showSaveAlert() { + AlertUtils.showWithCancel( + viewController: self, + title: nil, + message: "edit_menu_save_alert_message".localized, + okButtonTitle: "edit_menu_save_alert_ok".localized + ) { [weak self] in + self?.popViewController(animated: true) + } + } + func showPhotoActionSheet() { let alert = UIAlertController( title: "이미지 불러오기", diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 93f689b..76bfe47 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -5,6 +5,7 @@ import RxRelay final class EditMenuReactor: BaseReactor, Reactor { enum Action { + case tapBackButton case addPhoto(index: Int, photo: UIImage) case inputMenuName(index: Int, name: String) case inputMenuPrice(index: Int, price: Int) @@ -14,6 +15,7 @@ final class EditMenuReactor: BaseReactor, Reactor { } enum Mutation { + case showSaveAlert case setPhoto(index: Int, photo: UIImage) case setMenuName(index: Int, name: String) case setMenuPrice(index: Int, price: Int) @@ -36,6 +38,7 @@ final class EditMenuReactor: BaseReactor, Reactor { let initialState: State let popPublisher = PublishRelay() + let showSavePublisher = PublishRelay() private let storeService: StoreServiceType private let imageService: ImageServiceType private let globalState: GlobalState @@ -66,6 +69,13 @@ final class EditMenuReactor: BaseReactor, Reactor { func mutate(action: Action) -> Observable { switch action { + case .tapBackButton: + if self.initialState.store != self.currentState.store { + return .just(.showSaveAlert) + } else { + return .just(.pop) + } + case .addPhoto(let index, let photo): return .just(.setPhoto(index: index, photo: photo)) @@ -112,6 +122,9 @@ final class EditMenuReactor: BaseReactor, Reactor { var newState = state switch mutation { + case .showSaveAlert: + self.showSavePublisher.accept(()) + case .setPhoto(let index, let photo): newState.store.menus[index].photo = photo if let index = state.newPhotos.firstIndex(where: { $0.0 == index }) { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index e9c4f0c..e662af9 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -44,17 +44,17 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato } override func bindEvent() { - self.editMenuView.backButton.rx.tap - .asDriver() + self.editMenuReactor.popPublisher + .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in self?.coordinator?.popViewController(animated: true) }) .disposed(by: self.eventDisposeBag) - self.editMenuReactor.popPublisher + self.editMenuReactor.showSavePublisher .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in - self?.coordinator?.popViewController(animated: true) + self?.coordinator?.showSaveAlert() }) .disposed(by: self.eventDisposeBag) @@ -75,6 +75,12 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato func bind(reactor: EditMenuReactor) { // Bind Action + self.editMenuView.backButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapBackButton } + .bind(to: reactor.action) + .disposed(by: self.eventDisposeBag) + self.editMenuView.tableViewFooterView.addMenuButton.rx.tap .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .map { Reactor.Action.tapAddMenuButton } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift new file mode 100644 index 0000000..6afc48f --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift @@ -0,0 +1,77 @@ +import UIKit + +final class MyStoreInfoMenuCell: BaseCollectionViewCell { + static let registerId = "\(MyStoreInfoMenuCell.self)" + static let height: CGFloat = 86 + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 12 + } + + private let stackView = UIStackView().then { + $0.spacing = 4 + $0.axis = .vertical + $0.alignment = .leading + } + + private let nameLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray95 + } + + private let priceLabel = UILabel().then { + $0.font = .medium(size: 14) + $0.textColor = .gray95 + } + + private let photoView = UIImageView().then { + $0.layer.cornerRadius = 20 + $0.layer.masksToBounds = true + $0.contentMode = .scaleAspectFill + } + + override func setup() { + self.backgroundColor = .clear + self.stackView.addArrangedSubview(self.nameLabel) + self.stackView.addArrangedSubview(self.priceLabel) + self.addSubViews([ + self.containerView, + self.stackView, + self.photoView + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview().offset(4) + make.bottom.equalToSuperview().offset(-8) + } + + self.stackView.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.centerY.equalTo(self.containerView) + make.right.equalTo(self.photoView.snp.left).offset(-40) + } + + self.photoView.snp.makeConstraints { make in + make.right.equalTo(self.containerView).offset(-16) + make.width.equalTo(40) + make.height.equalTo(40) + make.centerY.equalTo(self.containerView) + } + } + + func bind(menu: Menu) { + let numberFormatter = NumberFormatter() + numberFormatter.numberStyle = .decimal + let price = numberFormatter.string(for: menu.price) + + + self.nameLabel.text = menu.name + self.priceLabel.text = price + self.photoView.setImage(urlString: menu.imageUrl) + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index e98c7f1..9cafe10 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -108,6 +108,8 @@ "edit_menu_add" = "메뉴 추가하기"; "edit_menu_name_placeholder" = "메뉴를 입력해주세요."; "edit_menu_price_placeholder" = "가격을 입력해 주세요."; +"edit_menu_save_alert_message" = "수정된 내용을 저장하지 않고 나갈까요?"; +"edit_menu_save_alert_ok" = "나가기"; // Statistics "statistics_filter_total" = "전체"; From 71f6aef1d5f7d7006f6f50e80222396cdf27f377 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sun, 5 Jun 2022 16:33:48 +0900 Subject: [PATCH 089/166] =?UTF-8?q?wip:=20=EC=82=AD=EC=A0=9C=EB=AA=A8?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic_delete.imageset/Contents.json | 12 +++++++ .../ic_delete.imageset/Group 778.pdf | Bin 0 -> 2064 bytes .../edit-menu/EditMenuReactor.swift | 20 +++++++++-- .../edit-menu/EditMenuView.swift | 16 +++++++++ .../edit-menu/EditMenuViewController.swift | 27 +++++++++++--- .../cells/EditMenuTableViewCell.swift | 33 ++++++++++++++---- .../models/presentation/Menu.swift | 6 ++++ .../strings/en.lproj/Localizations.strings | 2 ++ 8 files changed, 104 insertions(+), 12 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Group 778.pdf diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Contents.json new file mode 100644 index 0000000..e6b376e --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Group 778.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Group 778.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_delete.imageset/Group 778.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e2da7cd689d08a57c8e10f4a6013c833c90c61a7 GIT binary patch literal 2064 zcmbVNO>f&U487}D@DiXs)Rtt+a)6@1nykaH4a?HqiXA*hO*16+X1hbTUq8x`DCOg_ z>JTt5{?n)$@F##Of?>`v8^)=kwFw?B;S0-aT{b-u?@B|rxOY7ASovC&# zotxjA+AQDQ!t6f&R`=`|6A2#=aBp0ZMZcB)H!|v79GMleP&rb_LMqOouNy|LM28_V z$wevkG-MNn=gtyU3M~Z$h&XB%Ku=PFx2ESpLO{(NwT%2ol_x2KrYJ4Bkvig{pU9n% znmw^c*03+wV4i5M1=oOmb=IjNvP5I!@(h9%x0r5%4BKL!U<@A6NiK6$2-wA#=3H}} zhD7Q@;frL5zW4%=e=!4+qiYn5kHly`t;N~luW#<M&s50u|fk<*b!@E6Odk7~^o9e#?LceYv#&NLo z;BIG1i4m~`4!&d-L`t{FG1L>k#8wY$ct4(#=zQ9A+WF#b$US_a7)6(?qb61-l>^rk` zbhEY@OoJKiBjdqE)gcDTLD5rWA$p?H51SQA1zW)qe4bhRjIrWGe~(DSR2(qb0((jr z3ZGR&wQbjjp)Z|zWH|n8e Store { + var newStore = store + + newStore.menus = newStore.menus.filter { $0.isValid } + return newStore + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift index e16439c..31e92be 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift @@ -137,6 +137,16 @@ final class EditMenuView: BaseView { self.menuCountLabel.attributedText = attributedString } + fileprivate func setDeleteMode(isDeleteMode: Bool) { + if isDeleteMode { + self.deleteButton.setTitle("edit_menu_delete_all".localized, for: .normal) + self.saveButton.setTitle("edit_menu_finish_delete".localized, for: .normal) + } else { + self.deleteButton.setTitle("edit_menu_delete".localized, for: .normal) + self.saveButton.setTitle("edit_menu_save".localized, for: .normal) + } + } + private func setupKeyboardEvent() { NotificationCenter.default.addObserver( self, @@ -177,4 +187,10 @@ extension Reactive where Base: EditMenuView { view.setMenuCount(count: count) } } + + var isDeleteMode: Binder { + return Binder(self.base) { view, isDeleteMode in + view.setDeleteMode(isDeleteMode: isDeleteMode) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index e662af9..da39e0e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -79,7 +79,13 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .map { Reactor.Action.tapBackButton } .bind(to: reactor.action) - .disposed(by: self.eventDisposeBag) + .disposed(by: self.disposeBag) + + self.editMenuView.deleteButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapDeleteButton } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) self.editMenuView.tableViewFooterView.addMenuButton.rx.tap .throttle(.milliseconds(500), scheduler: MainScheduler.instance) @@ -95,14 +101,15 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato // Bind State reactor.state - .map { $0.store.menus } - .distinctUntilChanged() + .map { state in + return state.store.menus.map { ($0, state.isDeleteMode) } + } .asDriver(onErrorJustReturn: []) .drive(self.editMenuView.menuTableView.rx.items( cellIdentifier: EditMenuTableViewCell.registerId, cellType: EditMenuTableViewCell.self )) { row, menu, cell in - cell.bind(menu: menu) + cell.bind(menu: menu.0, isDeleteMode: menu.1) cell.menuNameTextField.rx.controlEvent(.editingDidEnd) .map { cell.menuNameTextField.text ?? "" } .map { Reactor.Action.inputMenuName(index: row, name: $0) } @@ -123,6 +130,11 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato self?.coordinator?.showPhotoActionSheet() }) .disposed(by: cell.disposeBag) + cell.deleteButon.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapDeleteMenuButton(index: row) } + .bind(to: reactor.action) + .disposed(by: cell.disposeBag) } .disposed(by: self.disposeBag) @@ -140,6 +152,13 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato .drive(self.editMenuView.tableViewFooterView.rx.isHidden) .disposed(by: self.disposeBag) + reactor.state + .map { $0.isDeleteMode } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: false) + .drive(self.editMenuView.rx.isDeleteMode) + .disposed(by: self.disposeBag) + reactor.state .map { $0.isEnableSaveButton } .distinctUntilChanged() diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index c90de64..ebecc63 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -46,6 +46,10 @@ final class EditMenuTableViewCell: BaseTableViewCell { $0.keyboardType = .decimalPad } + let deleteButon = UIButton().then { + $0.setImage(UIImage(named: "ic_delete"), for: .normal) + } + override func prepareForReuse() { super.prepareForReuse() @@ -56,14 +60,17 @@ final class EditMenuTableViewCell: BaseTableViewCell { self.contentView.isUserInteractionEnabled = false self.backgroundColor = .clear self.selectionStyle = .none - self.addSubViews([ - self.containerView, + self.containerView.addSubViews([ self.cameraButton, self.menuNameTextFieldBackground, self.menuNameTextField, self.menuPriceTextFieldBackground, self.menuPriceTextField ]) + self.addSubViews([ + self.containerView, + self.deleteButon + ]) } override func bindConstraints() { @@ -76,15 +83,15 @@ final class EditMenuTableViewCell: BaseTableViewCell { } self.cameraButton.snp.makeConstraints { make in - make.left.equalTo(self.containerView).offset(12) - make.top.equalTo(self.containerView).offset(12) + make.left.equalToSuperview().offset(12) + make.top.equalToSuperview().offset(12) make.width.equalTo(self.cameraButton.snp.height) } self.menuNameTextFieldBackground.snp.makeConstraints { make in make.left.equalTo(self.cameraButton.snp.right).offset(12) make.top.equalTo(self.cameraButton) - make.right.equalTo(self.containerView).offset(-12) + make.right.equalToSuperview().offset(-12) make.height.equalTo(48) } @@ -108,9 +115,16 @@ final class EditMenuTableViewCell: BaseTableViewCell { make.bottom.equalTo(self.menuPriceTextFieldBackground).offset(-15) make.right.equalTo(self.menuPriceTextFieldBackground).offset(-12) } + + self.deleteButon.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.width.equalTo(32) + make.height.equalTo(32) + make.right.equalToSuperview().offset(32) + } } - func bind(menu: Menu) { + func bind(menu: Menu, isDeleteMode: Bool) { if !menu.imageUrl.isEmpty { self.cameraButton.setImage(urlString: menu.imageUrl) } @@ -121,6 +135,13 @@ final class EditMenuTableViewCell: BaseTableViewCell { self.menuNameTextField.text = menu.name self.menuPriceTextField.text = menu.price == 0 ? "" : "\(menu.price)" + + UIView.transition(with: self, duration: 0.3) { [weak self] in + self?.containerView.transform + = isDeleteMode ? .init(translationX: -56, y: 0) : .identity + self?.deleteButon.transform + = isDeleteMode ? .init(translationX: -56, y: 0) : .identity + } } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift index 8d34d63..58a67bf 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift @@ -8,6 +8,12 @@ struct Menu: Equatable { var name: String var price: Int + var isValid: Bool { + return (self.photo != nil || !self.imageUrl.isEmpty) + && (!name.isEmpty) + && (price != 0) + } + init(response: BossStoreMenuResponse) { self.photo = nil self.imageUrl = response.imageUrl diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 9cafe10..09a290a 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -104,7 +104,9 @@ // Eidt Menu "edit_menu_title" = "메뉴 관리"; "edit_menu_delete" = "삭제"; +"edit_menu_delete_all" = "전체 삭제"; "edit_menu_save" = "저장하기"; +"edit_menu_finish_delete" = "삭제 완료"; "edit_menu_add" = "메뉴 추가하기"; "edit_menu_name_placeholder" = "메뉴를 입력해주세요."; "edit_menu_price_placeholder" = "가격을 입력해 주세요."; From a83205a23c00ec0105559406c4fd3502538b271c Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Mon, 6 Jun 2022 10:38:08 +0900 Subject: [PATCH 090/166] =?UTF-8?q?wip:=20=EB=A9=94=EB=89=B4=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=ED=99=94=EB=A9=B4=20=EC=88=98=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuCoordinator.swift | 13 +++++ .../edit-menu/EditMenuReactor.swift | 50 +++++++++++++++---- .../edit-menu/EditMenuViewController.swift | 9 +++- .../cells/EditMenuTableViewCell.swift | 1 + .../strings/en.lproj/Localizations.strings | 1 + 5 files changed, 64 insertions(+), 10 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift index 1838cd2..13e9783 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuCoordinator.swift @@ -9,6 +9,8 @@ import Base protocol EditMenuCoordinator: BaseCoordinator, AnyObject { func showSaveAlert() + func showDeleteAllAlert() + func showPhotoActionSheet() func showCamera() @@ -28,6 +30,17 @@ extension EditMenuCoordinator where Self: BaseViewController { } } + func showDeleteAllAlert() { + AlertUtils.showWithCancel( + viewController: self, + title: nil, + message: "edit_menu_delete_all_message".localized, + okButtonTitle: "edit_menu_delete".localized + ) { [weak self] in + (self as? EditMenuViewController)?.editMenuReactor.action.onNext(.deleteAllMenu) + } + } + func showPhotoActionSheet() { let alert = UIAlertController( title: "이미지 불러오기", diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 4750251..09bfc98 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -10,6 +10,7 @@ final class EditMenuReactor: BaseReactor, Reactor { case inputMenuName(index: Int, name: String) case inputMenuPrice(index: Int, price: Int) case tapDeleteButton + case deleteAllMenu case tapDeleteMenuButton(index: Int) case tapAddMenuButton case tapSaveButton @@ -17,13 +18,16 @@ final class EditMenuReactor: BaseReactor, Reactor { enum Mutation { case showSaveAlert + case showDeleteAllAlert case setPhoto(index: Int, photo: UIImage) case setMenuName(index: Int, name: String) case setMenuPrice(index: Int, price: Int) case deleteMenu(index: Int) + case deleteAllMenu case addMenu case toggleDeleteMode case pop + case setSaveButtonEnable(isEnable: Bool) case refreshSaveButtonEnable case showLoading(isShow: Bool) case showErrorAlert(error: Error) @@ -42,6 +46,7 @@ final class EditMenuReactor: BaseReactor, Reactor { let initialState: State let popPublisher = PublishRelay() let showSavePublisher = PublishRelay() + let showDeleteAllAlertPublisher = PublishRelay() private let storeService: StoreServiceType private let imageService: ImageServiceType private let globalState: GlobalState @@ -95,8 +100,22 @@ final class EditMenuReactor: BaseReactor, Reactor { .just(.refreshSaveButtonEnable) ]) + case .deleteAllMenu: + return .merge([ + .just(.deleteAllMenu), + .just(.refreshSaveButtonEnable) + ]) + + case .tapDeleteButton: - return .just(.toggleDeleteMode) + if self.currentState.isDeleteMode { + return .just(.showDeleteAllAlert) + } else { + return .merge([ + .just(.toggleDeleteMode), + .just(.setSaveButtonEnable(isEnable: true)) + ]) + } case .tapDeleteMenuButton(let index): return .merge([ @@ -113,14 +132,18 @@ final class EditMenuReactor: BaseReactor, Reactor { case .tapSaveButton: - return .concat([ - .just(.showLoading(isShow: true)), - self.updateStore( - store: self.currentState.store, - newPhotos: self.currentState.newPhotos - ), - .just(.showLoading(isShow: false)) - ]) + if self.currentState.isDeleteMode { + return .just(.toggleDeleteMode) + } else { + return .concat([ + .just(.showLoading(isShow: true)), + self.updateStore( + store: self.currentState.store, + newPhotos: self.currentState.newPhotos + ), + .just(.showLoading(isShow: false)) + ]) + } } } @@ -131,6 +154,9 @@ final class EditMenuReactor: BaseReactor, Reactor { case .showSaveAlert: self.showSavePublisher.accept(()) + case .showDeleteAllAlert: + self.showDeleteAllAlertPublisher.accept(()) + case .setPhoto(let index, let photo): newState.store.menus[index].photo = photo if let index = state.newPhotos.firstIndex(where: { $0.0 == index }) { @@ -149,6 +175,9 @@ final class EditMenuReactor: BaseReactor, Reactor { newState.store.menus.remove(at: index) newState.isAddMenuButtonHidden = newState.store.menus.count == 20 + case .deleteAllMenu: + newState.store.menus = [] + case .addMenu: newState.store.menus.append(Menu()) newState.isAddMenuButtonHidden = newState.store.menus.count == 20 @@ -159,6 +188,9 @@ final class EditMenuReactor: BaseReactor, Reactor { case .pop: self.popPublisher.accept(()) + case .setSaveButtonEnable(let isEnable): + newState.isEnableSaveButton = isEnable + case .refreshSaveButtonEnable: newState.isEnableSaveButton = newState.store != self.initialState.store diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index da39e0e..64d358e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -7,7 +7,7 @@ import SPPermissions final class EditMenuViewController: BaseViewController, View, EditMenuCoordinator { private let editMenuView = EditMenuView() - private let editMenuReactor: EditMenuReactor + let editMenuReactor: EditMenuReactor private weak var coordinator: EditMenuCoordinator? private var selectedCellIndex = 0 // 사진 추가시, 셀 인덱스 확인을 위해 사용 @@ -58,6 +58,13 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato }) .disposed(by: self.eventDisposeBag) + self.editMenuReactor.showDeleteAllAlertPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.showDeleteAllAlert() + }) + .disposed(by: self.eventDisposeBag) + self.editMenuReactor.showLoadginPublisher .asDriver(onErrorJustReturn: false) .drive(onNext: { [weak self] isShow in diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index ebecc63..1060664 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -1,4 +1,5 @@ import UIKit +import RxSwift final class EditMenuTableViewCell: BaseTableViewCell { static let registerId = "\(EditMenuTableViewCell.self)" diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 09a290a..9ce5e7e 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -107,6 +107,7 @@ "edit_menu_delete_all" = "전체 삭제"; "edit_menu_save" = "저장하기"; "edit_menu_finish_delete" = "삭제 완료"; +"edit_menu_delete_all_message" = "전체 메뉴를 삭제하시겠습니까?"; "edit_menu_add" = "메뉴 추가하기"; "edit_menu_name_placeholder" = "메뉴를 입력해주세요."; "edit_menu_price_placeholder" = "가격을 입력해 주세요."; From 30c5724835eacefb4ab1643af38b9510eb302c82 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 6 Jun 2022 11:23:42 +0900 Subject: [PATCH 091/166] =?UTF-8?q?feat:=20=EB=A9=94=EB=89=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuReactor.swift | 58 +++++++++++++------ .../cells/EditMenuTableViewCell.swift | 1 + 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 09bfc98..32261b3 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -19,6 +19,8 @@ final class EditMenuReactor: BaseReactor, Reactor { enum Mutation { case showSaveAlert case showDeleteAllAlert + case setStore(store: Store) + case setMenus(menus: [Menu]) case setPhoto(index: Int, photo: UIImage) case setMenuName(index: Int, name: String) case setMenuPrice(index: Int, price: Int) @@ -38,8 +40,6 @@ final class EditMenuReactor: BaseReactor, Reactor { var originalMenuCount: Int var isAddMenuButtonHidden: Bool var isEnableSaveButton: Bool - /// 변경되거나 추가된 이미지들 - var newPhotos: [(Int, UIImage)] var isDeleteMode: Bool } @@ -71,7 +71,6 @@ final class EditMenuReactor: BaseReactor, Reactor { originalMenuCount: store.menus.count, isAddMenuButtonHidden: store.menus.count == 20, isEnableSaveButton: false, - newPhotos: [], isDeleteMode: false ) } @@ -111,7 +110,10 @@ final class EditMenuReactor: BaseReactor, Reactor { if self.currentState.isDeleteMode { return .just(.showDeleteAllAlert) } else { + let validStore = self.getValidStore(store: self.currentState.store) + return .merge([ + .just(.setStore(store: validStore)), .just(.toggleDeleteMode), .just(.setSaveButtonEnable(isEnable: true)) ]) @@ -133,14 +135,20 @@ final class EditMenuReactor: BaseReactor, Reactor { case .tapSaveButton: if self.currentState.isDeleteMode { - return .just(.toggleDeleteMode) + if self.currentState.store.menus.isEmpty { + return .merge([ + .just(.setMenus(menus: [Menu()])), + .just(.toggleDeleteMode) + ]) + } else { + return .just(.toggleDeleteMode) + } } else { + let validStore = self.getValidStore(store: self.currentState.store) + return .concat([ .just(.showLoading(isShow: true)), - self.updateStore( - store: self.currentState.store, - newPhotos: self.currentState.newPhotos - ), + self.updateStore(store: validStore), .just(.showLoading(isShow: false)) ]) } @@ -157,13 +165,14 @@ final class EditMenuReactor: BaseReactor, Reactor { case .showDeleteAllAlert: self.showDeleteAllAlertPublisher.accept(()) + case .setStore(let store): + newState.store = store + + case .setMenus(let menus): + newState.store.menus = menus + case .setPhoto(let index, let photo): newState.store.menus[index].photo = photo - if let index = state.newPhotos.firstIndex(where: { $0.0 == index }) { - newState.newPhotos[index] = (index, photo) - } else { - newState.newPhotos.append((index, photo)) - } case .setMenuName(let index, let name): newState.store.menus[index].name = name @@ -184,6 +193,7 @@ final class EditMenuReactor: BaseReactor, Reactor { case .toggleDeleteMode: newState.isDeleteMode.toggle() + newState.isAddMenuButtonHidden = newState.isDeleteMode case .pop: self.popPublisher.accept(()) @@ -204,9 +214,19 @@ final class EditMenuReactor: BaseReactor, Reactor { return newState } - private func updateStore(store: Store, newPhotos: [(Int, UIImage)]) -> Observable { + private func updateStore(store: Store) -> Observable { + let newPhotos = store.menus + .filter { $0.photo != nil } + .compactMap { $0.photo } + let newPhotosIndex = store.menus + .filter { $0.photo != nil } + .compactMap { store.menus.firstIndex(of: $0) } + if newPhotos.isEmpty { return self.storeService.updateStore(store: self.currentState.store) + .do(onNext: { [weak self] _ in + self?.globalState.updateStorePublisher.onNext(store) + }) .map { _ in Mutation.pop } .catch { .merge([ @@ -215,19 +235,19 @@ final class EditMenuReactor: BaseReactor, Reactor { ]) } } else { - let images = newPhotos.map { $0.1 } - - return self.imageService.uploadImages(images: images, fileType: .menu) + return self.imageService.uploadImages(images: newPhotos, fileType: .menu) .flatMap { response -> Observable in var newStore = store let imageURLs = response.map { $0.imageUrl } - let newPhotoIndex = newPhotos.map { $0.0 } for index in imageURLs.indices { - newStore.menus[newPhotoIndex[index]].imageUrl = imageURLs[index] + newStore.menus[newPhotosIndex[index]].imageUrl = imageURLs[index] } return self.storeService.updateStore(store: newStore) + .do(onNext: { [weak self] _ in + self?.globalState.updateStorePublisher.onNext(newStore) + }) .map { _ in Mutation.pop } } .catch { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index 1060664..0d39321 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -136,6 +136,7 @@ final class EditMenuTableViewCell: BaseTableViewCell { self.menuNameTextField.text = menu.name self.menuPriceTextField.text = menu.price == 0 ? "" : "\(menu.price)" + self.containerView.isUserInteractionEnabled = !isDeleteMode UIView.transition(with: self, duration: 0.3) { [weak self] in self?.containerView.transform From 6a8e64b4806b4980014df8b8f572a35aad670a86 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 6 Jun 2022 12:09:08 +0900 Subject: [PATCH 092/166] =?UTF-8?q?feat:=20=EA=B0=80=EA=B2=8C=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EB=A9=94=EB=89=B4=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 + .../my/my-store-info/MyStoreInfoView.swift | 12 ++- .../MyStoreInfoViewController.swift | 9 ++ .../edit-menu/EditMenuReactor.swift | 2 +- .../cells/MyStoreInfoMenuMoreCell.swift | 82 +++++++++++++++++++ .../MyStoreInfoSectionModel.swift | 15 +++- .../strings/en.lproj/Localizations.strings | 3 +- 7 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index d58bf51..04cd7dc 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 6E07F9B9284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07F9B8284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift */; }; 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5727D77AF50084480C /* BaseReactor.swift */; }; 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5927D77B790084480C /* BaseViewController.swift */; }; 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */; }; @@ -230,6 +231,7 @@ /* Begin PBXFileReference section */ 2485BFD46CCBCCA4FDB38FB3 /* Pods-3dollar-in-my-pocket-manager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-3dollar-in-my-pocket-manager.release.xcconfig"; path = "Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager.release.xcconfig"; sourceTree = ""; }; 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_3dollar_in_my_pocket_manager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6E07F9B8284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoMenuMoreCell.swift; sourceTree = ""; }; 6E142D5727D77AF50084480C /* BaseReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseReactor.swift; sourceTree = ""; }; 6E142D5927D77B790084480C /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninCoordinator.swift; sourceTree = ""; }; @@ -730,6 +732,7 @@ 6ED370F6280C33A300C445E5 /* MyStoreInfoHeaderView.swift */, 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */, 6E7DFAF6284C2ECE006F0078 /* MyStoreInfoMenuCell.swift */, + 6E07F9B8284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift */, ); path = cells; sourceTree = ""; @@ -1413,6 +1416,7 @@ 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */, 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, + 6E07F9B9284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift in Sources */, 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index 19be954..db810b4 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -39,14 +39,18 @@ final class MyStoreInfoView: BaseView { )] return section } else if sectionIndex == 2 { - let item = NSCollectionLayoutItem(layoutSize: .init( + let menuItem = NSCollectionLayoutItem(layoutSize: .init( widthDimension: .fractionalWidth(1), heightDimension: .estimated(MyStoreInfoMenuCell.height) )) + let moreItem = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoMenuMoreCell.height) + )) let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( widthDimension: .fractionalWidth(1), heightDimension: .estimated(MyStoreInfoMenuCell.height) - ), subitems: [item]) + ), subitems: [menuItem, moreItem]) let section = NSCollectionLayoutSection(group: group) section.boundarySupplementaryItems = [.init( @@ -95,6 +99,10 @@ final class MyStoreInfoView: BaseView { MyStoreInfoMenuCell.self, forCellWithReuseIdentifier: MyStoreInfoMenuCell.registerId ) + $0.register( + MyStoreInfoMenuMoreCell.self, + forCellWithReuseIdentifier: MyStoreInfoMenuMoreCell.registerId + ) $0.register( MyStoreInfoWorkDayCell.self, forCellWithReuseIdentifier: MyStoreInfoWorkDayCell.registerId diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 26fbe2e..0ab1975 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -117,6 +117,15 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor cell.bind(menu: menu) return cell + case .menuMore(let menus): + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoMenuMoreCell.registerId, + for: indexPath + ) as? MyStoreInfoMenuMoreCell else { return BaseCollectionViewCell() } + + cell.bind(menus: menus) + return cell + case .appearanceDay(let appearanceDay): guard let cell = collectionView.dequeueReusableCell( withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 32261b3..aea4e9e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -223,7 +223,7 @@ final class EditMenuReactor: BaseReactor, Reactor { .compactMap { store.menus.firstIndex(of: $0) } if newPhotos.isEmpty { - return self.storeService.updateStore(store: self.currentState.store) + return self.storeService.updateStore(store: store) .do(onNext: { [weak self] _ in self?.globalState.updateStorePublisher.onNext(store) }) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift new file mode 100644 index 0000000..b7efa1d --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift @@ -0,0 +1,82 @@ +import UIKit + +final class MyStoreInfoMenuMoreCell: BaseCollectionViewCell { + static let registerId = "\(MyStoreInfoMenuMoreCell.self)" + static let height: CGFloat = 48 + + private let containerView = UIView().then { + $0.backgroundColor = .gray5 + $0.layer.cornerRadius = 16 + } + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 14) + $0.textColor = .gray40 + } + + private let stackView = UIStackView().then { + $0.axis = .horizontal + $0.spacing = -8 + } + + override func prepareForReuse() { + super.prepareForReuse() + + self.stackView.arrangedSubviews.forEach { $0.removeFromSuperview() } + } + + override func setup() { + self.addSubViews([ + self.containerView, + self.titleLabel, + self.stackView + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview().offset(4) + make.height.equalTo(44) + make.bottom.equalToSuperview() + } + + self.titleLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.centerY.equalTo(self.containerView) + } + + self.stackView.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.right.equalTo(self.containerView).offset(-16) + } + } + + func bind(menus: [Menu]) { + self.titleLabel.text = String.init( + format: "my_store_info_menu_more_format".localized, + menus.count + ) + + for menu in menus { + let photoView = self.generatePhotoView(menu: menu) + + self.stackView.addArrangedSubview(photoView) + } + } + + private func generatePhotoView(menu: Menu) -> UIImageView { + let photoView = UIImageView() + + photoView.layer.cornerRadius = 14 + photoView.layer.masksToBounds = true + photoView.setImage(urlString: menu.imageUrl) + photoView.snp.makeConstraints { make in + make.width.equalTo(28) + make.height.equalTo(28) + } + + return photoView + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift index ae35bae..c88c6af 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift @@ -11,6 +11,7 @@ extension MyStoreInfoSectionModel: SectionModelType { case overview(Store) case introduction(String?) case menu(Menu) + case menuMore([Menu]) case appearanceDay(AppearanceDay) } @@ -28,9 +29,17 @@ extension MyStoreInfoSectionModel: SectionModelType { } init(menus: [Menu]) { - let menus = menus.map { SectionItemType.menu($0) } - - self.items = menus + if menus.count < 4 { + let menus = menus.map { SectionItemType.menu($0) } + + self.items = menus + } else { + var sectionItemTypes = menus[..<3].map { SectionItemType.menu($0) } + let moreItemType = SectionItemType.menuMore(Array(menus[3...])) + + sectionItemTypes.append(moreItemType) + self.items = sectionItemTypes + } } init(appearanceDays: [AppearanceDay]) { diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 9ce5e7e..f3d2c53 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -70,7 +70,7 @@ "waiting_question_button" = "이메일로 문의하기"; // My Page -"my_page_store_info" = "가제정보"; +"my_page_store_info" = "가게정보"; "my_pate_statistics" = "통계"; // My Store Info @@ -78,6 +78,7 @@ "my_store_info_header_introduction" = "사장님 한마디"; "my_store_info_header_introduction_button" = "정보 수정"; "my_store_info_header_menus" = "메뉴 정보"; +"my_store_info_menu_more_format" = "%d개의 메뉴가 더 있습니다."; "my_store_info_header_menus_button" = "메뉴 수정"; "my_store_info_header_appearance_day" = "영업 일정"; "my_store_info_header_appearance_day_button" = "일정 관리"; From 962c9ef145020f0184cbb4b57d121535d31e82b5 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 6 Jun 2022 17:05:40 +0900 Subject: [PATCH 093/166] =?UTF-8?q?feat:=20=EC=84=A4=EC=A0=95=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 24 ++++ .../ic_alert.imageset/Contents.json | 12 ++ .../ic_alert.imageset/alert-circle.pdf | Bin 0 -> 2790 bytes .../ic_arrow_right.imageset/Contents.json | 12 ++ .../ic_arrow_right.imageset/ic_fwd.pdf | Bin 0 -> 1083 bytes .../ic_kakao_logo.imageset/Contents.json | 12 ++ .../ic_kakao_logo.imageset/ic_logo_kakao.pdf | Bin 0 -> 2848 bytes .../domains/setting/SettingCoordinator.swift | 46 +++++++ .../domains/setting/SettingReactor.swift | 115 ++++++++++++++++ .../domains/setting/SettingView.swift | 23 +++- .../setting/SettingViewController.swift | 82 ++++++++++- .../subviews/SettingTableFooterView.swift | 37 +++++ .../subviews/SettingTableHeaderView.swift | 53 ++++++++ .../subviews/cells/SettingTableViewCell.swift | 127 ++++++++++++++++++ .../extensions/UIColorExtensions.swift | 3 + .../models/presentation/SettingCellType.swift | 36 +++++ .../models/presentation/SocialType.swift | 27 ++++ .../models/presentation/User.swift | 27 ++++ .../strings/en.lproj/Localizations.strings | 7 + .../services/AuthService.swift | 46 +++++++ .../utils/UserDefaultsUtils.swift | 6 + 21 files changed, 693 insertions(+), 2 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/alert-circle.pdf create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/ic_fwd.pdf create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/ic_logo_kakao.pdf create mode 100644 3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift create mode 100644 3dollar-in-my-pocket-manager/models/presentation/User.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 04cd7dc..9f99321 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -144,6 +144,12 @@ 6E95E856282FD2140004C08D /* TotalStatisticsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */; }; 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */; }; 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9F995327E7019700C95C41 /* WaitingView.swift */; }; + 6EA53B99284DCDD5007A3839 /* SettingCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53B98284DCDD5007A3839 /* SettingCellType.swift */; }; + 6EA53B9C284DD18A007A3839 /* SettingTableFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53B9B284DD18A007A3839 /* SettingTableFooterView.swift */; }; + 6EA53B9E284DD299007A3839 /* SettingTableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53B9D284DD299007A3839 /* SettingTableHeaderView.swift */; }; + 6EA53BA0284DD766007A3839 /* SettingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53B9F284DD766007A3839 /* SettingReactor.swift */; }; + 6EA53BA2284DD8DB007A3839 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA1284DD8DB007A3839 /* User.swift */; }; + 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */; }; 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -359,6 +365,12 @@ 6E95E855282FD2140004C08D /* TotalStatisticsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsViewController.swift; sourceTree = ""; }; 6E95E85A282FD3E40004C08D /* TotalStatisticsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsTableViewCell.swift; sourceTree = ""; }; 6E9F995327E7019700C95C41 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = ""; }; + 6EA53B98284DCDD5007A3839 /* SettingCellType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingCellType.swift; sourceTree = ""; }; + 6EA53B9B284DD18A007A3839 /* SettingTableFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingTableFooterView.swift; sourceTree = ""; }; + 6EA53B9D284DD299007A3839 /* SettingTableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingTableHeaderView.swift; sourceTree = ""; }; + 6EA53B9F284DD766007A3839 /* SettingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingReactor.swift; sourceTree = ""; }; + 6EA53BA1284DD8DB007A3839 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingCoordinator.swift; sourceTree = ""; }; 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -513,6 +525,8 @@ 6E1E5BAB2827EE42003A1B51 /* subviews */, 6E1E5BA72827EB33003A1B51 /* SettingView.swift */, 6E1E5BA92827EBE5003A1B51 /* SettingViewController.swift */, + 6EA53B9F284DD766007A3839 /* SettingReactor.swift */, + 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */, ); path = setting; sourceTree = ""; @@ -521,6 +535,8 @@ isa = PBXGroup; children = ( 6E1E5BAC2827EE46003A1B51 /* cells */, + 6EA53B9B284DD18A007A3839 /* SettingTableFooterView.swift */, + 6EA53B9D284DD299007A3839 /* SettingTableHeaderView.swift */, ); path = subviews; sourceTree = ""; @@ -1041,6 +1057,8 @@ 6E5E14A32830F6E900B1F450 /* FeedbackType.swift */, 6E5E14A928312BBA00B1F450 /* Statistic.swift */, 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */, + 6EA53B98284DCDD5007A3839 /* SettingCellType.swift */, + 6EA53BA1284DD8DB007A3839 /* User.swift */, ); path = presentation; sourceTree = ""; @@ -1292,6 +1310,7 @@ 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, + 6EA53B9C284DD18A007A3839 /* SettingTableFooterView.swift in Sources */, 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, @@ -1317,6 +1336,7 @@ 6E91A9892841DC110090361F /* DailyStatisticsView.swift in Sources */, 6EC5E432282BDB3000AD571C /* StatisticsViewController.swift in Sources */, 6E5F3DDE281D6435002282B6 /* AppearanceDay.swift in Sources */, + 6EA53BA2284DD8DB007A3839 /* User.swift in Sources */, 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */, 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, @@ -1332,12 +1352,14 @@ 6E1F54A627CB7A130050BBBA /* AuthService.swift in Sources */, 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */, 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */, + 6EA53B99284DCDD5007A3839 /* SettingCellType.swift in Sources */, 6E7A49DA27D8CE1800E6653C /* ImageService.swift in Sources */, 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */, 6E5E14A82830F9B700B1F450 /* TotalStatisticsReactor.swift in Sources */, 6E5E14AC2831322D00B1F450 /* TotalStatisticsCoordinator.swift in Sources */, 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */, 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */, + 6EA53B9E284DD299007A3839 /* SettingTableHeaderView.swift in Sources */, 6E5DCE7627FDCCED00CA58EE /* LocationResponse.swift in Sources */, 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */, 6E91A9932841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift in Sources */, @@ -1379,6 +1401,7 @@ 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */, 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, + 6EA53BA0284DD766007A3839 /* SettingReactor.swift in Sources */, 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */, @@ -1433,6 +1456,7 @@ 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, + 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */, 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/Contents.json new file mode 100644 index 0000000..286d96e --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "alert-circle.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/alert-circle.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_alert.imageset/alert-circle.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1f0b700b125cdf2ca56d24e47c3b92660b104c47 GIT binary patch literal 2790 zcmb7`O>fjN5Qgvm6~0tzk?O>W^CeZ4XiE_SMA;&7Kpa9gZ5Qn(ut`zj*E4qP*Us)r zl--N-*faCacoNOg&DHg(6a{0F$GrdcopFA4#?Q}L+b#7YOF|yKYrFgLfu{r)`qVIP z+j_&ItM=EbX&0|A_~mW*)C}w=D@AO6Ja&r>lZjBWOp3}wnY-;&WTh+;$vuLPhI#0m zl-#YVLnhv!Vb*mLoP#Ror1YACus8;F@P#cL2Wi*?`}~4+R0iqN!{#Yg`+L}GHY^so zE8y;8XgVe{=Na*-z<^4~RK;<@r4(hJRaMFn4hA5Nzb70-lH<`mvf5bDDHV}y2nd4!OS4+*C8_eZ6mu#>tF#${Hd)XfM?;dbr*4edSX9#u)A zI}%JU%qav72($&vrT|aK6Y)SMWpfQqnO5voXl1)igD$_w903U-VD>3#FkI znSAWR4-bCjJT2Oxf7~|h!1eUBus7EIUZ|W^EPG1s(f&oh-3|`UO)sm!g zoxy^;IG6n+*~&fr1ChW}KJ%m#91zeaep!$8y1$>BK5g4O7W0BlS(_5%S(av;u>DE8 zWwX%%rKEF)k|d>xZU^O5h&fW^cn4*%HypS1YTa%bO`_48D=NqF&~Mrke!NPsj$VDZ{tM8AFwX!0 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/Contents.json new file mode 100644 index 0000000..2c187de --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_fwd.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/ic_fwd.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_arrow_right.imageset/ic_fwd.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c2496443afc7176e222d870d0c4f72c76d1a8f8a GIT binary patch literal 1083 zcmZ{j&u^PB6vyxHuXvY8?V(@;#*S1~T9b8}wrLsNt?GdhH(>&M13Gp4>t_>eoF?@F zJ%8l)`^#dpzPq9k2cSq$|M&@r*VlM+15$166_Sw0pQYLjdrS>1?5lq0WZ6QzmVfF> z79VbLbsyfU9)1IfIN_9Vyz>i|=Vc@=p{Ir2~hN&4Q zd9)=PZS`TO&9tRxX*Z-uce*DkNZW!AUc>;^Y`>%KZ0nBvp!2kdN literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/Contents.json new file mode 100644 index 0000000..25f1192 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_logo_kakao.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/ic_logo_kakao.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao_logo.imageset/ic_logo_kakao.pdf new file mode 100644 index 0000000000000000000000000000000000000000..42420555a84f192dd11c07ed8dc0fff983338878 GIT binary patch literal 2848 zcmeHJOK;pZ5We$Q@M0i2gwjwHA3$IrexhiDxVt?B2zroZ#olyRawNHM^6NVzN+Zd3 zUqFx5VR!VA^KstP(bd_-8&FONkg060zX&PczLm)@-|j1!eEe|zr7C;G@JW8E>f8QK zYTURPq06>;xL+s??{RI=iHcj~Ym2(OFWRauzpd7fk4LKQ!*xF#deO9p5!+N<^U#)6 zM@R6^lauCAev+w5hi4YRPS7mUBzALNE<%vAqF5k*dd=)UMGxZym zcrBYYWh%JT3EgukQnxi+Gb;B^dn-#kYIHkOnF-$KxGR`}2`O#vjFDPpP7^mMi;4klr1PwcSOx)nz{LbmJW`H3$5xfZXA+iC>fS2w%j-+n$2)BGhu{XBjCoHlh| z)p#P6?gU=ZS57a(2rUYnpy&d9V*R+gK~p7pu#uC+r_BTE!ZZ6jL>5eVlP#&p!;Vj! zJwGk_V&B}ZbsyX6v%s4WL`*OJN}K0dE)gFeI)EODb2UC5ugXDMKn^{khat#v48;@3 zp^IzCx~IFehNru)Ofx+$iqV0$1=-fDQbaejV;t#kRU&#Of literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift new file mode 100644 index 0000000..f1846ab --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift @@ -0,0 +1,46 @@ +import UIKit + +import Base + +protocol SettingCoordinator: BaseCoordinator, AnyObject { + func showLogoutAlert() + + func showSignoutAlert() + + func goToSignin() +} + +extension SettingCoordinator where Self: SettingViewController { + func showLogoutAlert() { + AlertUtils.showWithCancel( + viewController: self, + title: nil, + message: "로그아웃하시겠습니까?", + okButtonTitle: "로그아웃" + ) { + self.settingReactor.action.onNext(.tapLogout) + } + } + + func showSignoutAlert() { + AlertUtils.showWithCancel( + viewController: self, + title: "회원탈퇴", + message: "회원 탈퇴 시, 그동안의 데이터가 모두 삭제됩니다.\n회원탈퇴하시겠습니까?", + okButtonTitle: "탈퇴" + ) { + self.settingReactor.action.onNext(.tapSignout) + } + } + + func goToSignin() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + + sceneDelegate.goToSignin() + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift new file mode 100644 index 0000000..9fde49b --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift @@ -0,0 +1,115 @@ +import ReactorKit +import RxSwift +import RxCocoa + +final class SettingReactor: BaseReactor, Reactor { + enum Action { + case viewDidLoad + case tapLogout + case tapSignout + } + + enum Mutation { + case setUser(user: User) + case goToSignin + case showLoading(isShow: Bool) + case showErrorAlert(Error) + } + + struct State { + var user: User + } + + let initialState: State + let goToSigninPublisher = PublishRelay() + private let authService: AuthServiceType + private let userDefaults: UserDefaultsUtils + + init( + authService: AuthServiceType, + userDefaults: UserDefaultsUtils, + state: State = State(user: User()) + ) { + self.authService = authService + self.userDefaults = userDefaults + self.initialState = state + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + return self.fetchMyInfo() + + case .tapLogout: + return .concat([ + .just(.showLoading(isShow: true)), + self.logout(), + .just(.showLoading(isShow: false)) + ]) + + case .tapSignout: + return .concat([ + .just(.showLoading(isShow: true)), + self.signout(), + .just(.showLoading(isShow: false)) + ]) + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setUser(let user): + newState.user = user + + case .goToSignin: + self.goToSigninPublisher.accept(()) + + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func fetchMyInfo() -> Observable { + return self.authService.fetchMyInfo() + .map(User.init(response:)) + .map { .setUser(user: $0) } + .catch { .just(.showErrorAlert($0)) } + } + + private func logout() -> Observable { + return self.authService.logout() + .do(onNext: { [weak self] _ in + self?.userDefaults.clear() + }) + .map { _ in .goToSignin } + .catch { + .merge([ + .just(.showErrorAlert($0)), + .just(.showLoading(isShow: false)) + ]) + + } + } + + private func signout() -> Observable { + return self.authService.signout() + .do(onNext: { [weak self] _ in + self?.userDefaults.clear() + }) + .map { _ in .goToSignin } + .catch { + .merge([ + .just(.showErrorAlert($0)), + .just(.showLoading(isShow: false)) + ]) + + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift index 35ffd63..f33d081 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift @@ -7,13 +7,34 @@ final class SettingView: BaseView { $0.text = "setting_title".localized } + let tableHeaderView = SettingTableHeaderView(frame: .init( + x: 0, + y: 0, + width: UIScreen.main.bounds.width, + height: SettingTableHeaderView.height + )) + + let tableFooterView = SettingTableFooterView(frame: .init( + x: 0, + y: 0, + width: UIScreen.main.bounds.width, + height: SettingTableFooterView.height + )) + let tableView = UITableView().then { - $0.tableFooterView = UIView() $0.separatorStyle = .none + $0.backgroundColor = .clear + $0.rowHeight = SettingTableViewCell.height + $0.register( + SettingTableViewCell.self, + forCellReuseIdentifier: SettingTableViewCell.registerId + ) } override func setup() { self.backgroundColor = .gray100 + self.tableView.tableHeaderView = self.tableHeaderView + self.tableView.tableFooterView = self.tableFooterView self.addSubViews([ self.titleLabel, self.tableView diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 73a6f00..cdd6cb3 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -1,7 +1,14 @@ import UIKit -final class SettingViewController: BaseViewController { +import ReactorKit + +final class SettingViewController: BaseViewController, View, SettingCoordinator { private let settingView = SettingView() + let settingReactor = SettingReactor( + authService: AuthService(), + userDefaults: UserDefaultsUtils() + ) + private weak var coordinator: SettingCoordinator? static func instance() -> UINavigationController { let viewController = SettingViewController(nibName: nil, bundle: nil).then { @@ -18,7 +25,80 @@ final class SettingViewController: BaseViewController { } } + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + override func loadView() { self.view = self.settingView } + + override func viewDidLoad() { + super.viewDidLoad() + + self.reactor = self.settingReactor + self.coordinator = self + self.settingReactor.action.onNext(.viewDidLoad) + } + + override func bindEvent() { + self.settingReactor.goToSigninPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToSignin() + }) + .disposed(by: self.eventDisposeBag) + + self.settingReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.settingReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) + + self.settingView.tableFooterView.signoutButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.showSignoutAlert() + }) + .disposed(by: self.eventDisposeBag) + } + + func bind(reactor: SettingReactor) { + // Bind State + reactor.state + .map { $0.user } + .distinctUntilChanged() + .map { SettingCellType.toSettingCellTypes(user: $0) } + .asDriver(onErrorJustReturn: []) + .drive(self.settingView.tableView.rx.items( + cellIdentifier: SettingTableViewCell.registerId, + cellType: SettingTableViewCell.self + )) { row, cellType, cell in + cell.bind(cellType: cellType) + cell.rightButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.showLogoutAlert() + }) + .disposed(by: cell.disposeBag) + } + .disposed(by: self.eventDisposeBag) + + reactor.state + .map { $0.user.name } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: "") + .drive(self.settingView.tableHeaderView.rx.name) + .disposed(by: self.disposeBag) + } } diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift new file mode 100644 index 0000000..cc49877 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift @@ -0,0 +1,37 @@ +import UIKit + +final class SettingTableFooterView: BaseView { + static let height: CGFloat = 40 + + private let alertImage = UIImageView().then { + $0.image = UIImage(named: "ic_alert") + } + + let signoutButton = UIButton().then { + $0.setTitle("setting_signout".localized, for: .normal) + $0.titleLabel?.font = .medium(size: 14) + $0.setTitleColor(.gray40, for: .normal) + } + + override func setup() { + self.backgroundColor = .clear + self.addSubViews([ + self.alertImage, + self.signoutButton + ]) + } + + override func bindConstraints() { + self.alertImage.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalToSuperview().offset(24) + make.width.equalTo(16) + make.height.equalTo(16) + } + + self.signoutButton.snp.makeConstraints { make in + make.centerY.equalTo(self.alertImage) + make.left.equalTo(self.alertImage.snp.right).offset(8) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift new file mode 100644 index 0000000..d1751a0 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift @@ -0,0 +1,53 @@ +import UIKit + +import RxSwift +import RxCocoa + +final class SettingTableHeaderView: BaseView { + static let height: CGFloat = 90 + + private let nameLabel = UILabel().then { + $0.font = .bold(size: 24) + $0.textColor = .white + } + + private let descriptionLabel = UILabel().then { + $0.font = .regular(size: 24) + $0.textColor = .white + $0.text = "setting_name_description".localized + } + + override func setup() { + self.backgroundColor = .clear + self.addSubViews([ + self.nameLabel, + self.descriptionLabel + ]) + } + + override func bindConstraints() { + self.nameLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview().offset(16) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.left.equalTo(self.nameLabel) + make.right.equalTo(self.nameLabel) + make.top.equalTo(self.nameLabel.snp.bottom) + } + } + + fileprivate func setName(name: String) { + self.nameLabel.text = "\(name) 사장님" + } +} + +extension Reactive where Base: SettingTableHeaderView { + var name: Binder { + return Binder(self.base) { view, name in + view.setName(name: name) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift index 1f1eeb0..b7e9327 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift @@ -2,4 +2,131 @@ import UIKit final class SettingTableViewCell: BaseTableViewCell { static let registerId = "\(SettingTableViewCell.self)" + static let height: CGFloat = 66 + + private let containerView = UIView().then { + $0.backgroundColor = .gray90 + $0.layer.cornerRadius = 12 + } + + private let stackView = UIStackView().then { + $0.axis = .horizontal + $0.spacing = 8 + } + + private let socialTypeImage = UIImageView() + + private let titleLabel = UILabel().then { + $0.font = .regular(size: 12) + $0.textColor = .white + } + + private let rightLabel = UILabel().then { + $0.font = .regular(size: 12) + $0.textColor = .gray30 + } + + private let rightArrowImage = UIImageView().then { + $0.image = UIImage(named: "ic_arrow_right") + } + + let rightButton = UIButton().then { + $0.titleLabel?.font = .regular(size: 12) + $0.setTitleColor(.red, for: .normal) + $0.setTitle("setting_logout".localized, for: .normal) + } + + override func prepareForReuse() { + super.prepareForReuse() + + self.stackView.arrangedSubviews.forEach { $0.removeFromSuperview() } + } + + override func setup() { + self.backgroundColor = .clear + self.selectionStyle = .none + self.contentView.isUserInteractionEnabled = true + self.addSubViews([ + self.containerView, + self.stackView, + self.rightLabel, + self.rightArrowImage, + self.rightButton + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview().offset(8) + make.bottom.equalToSuperview() + } + + self.stackView.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.centerY.equalTo(self.containerView) + } + + self.socialTypeImage.snp.makeConstraints { make in + make.width.equalTo(16) + make.height.equalTo(16) + } + + self.rightLabel.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.right.equalTo(self.containerView).offset(-16) + } + + self.rightArrowImage.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.right.equalTo(self.containerView).offset(-16) + make.width.equalTo(24) + make.height.equalTo(24) + } + + self.rightButton.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.right.equalTo(self.containerView).offset(-16) + } + } + + func bind(cellType: SettingCellType) { + self.titleLabel.text = cellType.title + switch cellType { + case .registerationNumber(let string): + self.stackView.addArrangedSubview(self.titleLabel) + self.rightLabel.text = string + self.rightLabel.isHidden = false + self.rightButton.isHidden = true + self.rightArrowImage.isHidden = true + + case .contact: + self.stackView.addArrangedSubview(self.titleLabel) + self.rightLabel.isHidden = true + self.rightButton.isHidden = true + self.rightArrowImage.isHidden = false + + case .faq: + self.stackView.addArrangedSubview(self.titleLabel) + self.rightLabel.isHidden = true + self.rightButton.isHidden = true + self.rightArrowImage.isHidden = false + + case .privacy: + self.stackView.addArrangedSubview(self.titleLabel) + self.rightLabel.isHidden = true + self.rightButton.isHidden = true + self.rightArrowImage.isHidden = false + + case .signout(let socialType): + self.stackView.addArrangedSubview(self.socialTypeImage) + self.stackView.addArrangedSubview(self.titleLabel) + self.titleLabel.text = "\(socialType.title) 계정 회원" + self.socialTypeImage.image = socialType.iconImage + self.rightLabel.isHidden = true + self.rightButton.isHidden = false + self.rightArrowImage.isHidden = true + } + } } diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 4387d84..23bc757 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -25,6 +25,9 @@ extension UIColor { /// r: 50 g: 50, b: 50 static let gray80 = UIColor(r: 50, g: 50, b: 50) + /// r: 35 g: 35, b: 35 + static let gray90 = UIColor(r: 35, g: 35, b: 35) + /// r: 26, g: 26, b: 26 static let gray95 = UIColor(r: 26, g: 26, b: 26) diff --git a/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift b/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift new file mode 100644 index 0000000..d38982b --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift @@ -0,0 +1,36 @@ +enum SettingCellType { + case registerationNumber(String) + case contact + case faq + case privacy + case signout(SocialType) + + var title: String { + switch self { + case .registerationNumber: + return "setting_registeration_number".localized + + case .contact: + return "setting_contact".localized + + case .faq: + return "setting_faq".localized + + case .privacy: + return "setting_privacy".localized + + case .signout: + return "" + } + } + + static func toSettingCellTypes(user: User) -> [SettingCellType] { + return [ + .registerationNumber(user.businessNumber), + .contact, + .faq, + .privacy, + .signout(user.socialType) + ] + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift index 9bba172..f869d09 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/SocialType.swift @@ -1,7 +1,34 @@ import Foundation +import UIKit enum SocialType: String, Decodable { case apple = "APPLE" case kakao = "KAKAO" case google = "GOOGLE" + + var iconImage: UIImage? { + switch self { + case .apple: + return UIImage(named: "ic_kakao_logo") + + case .kakao: + return UIImage(named: "ic_kakao_logo") + + case .google: + return UIImage(named: "ic_kakao_logo") + } + } + + var title: String { + switch self { + case .apple: + return "애플" + + case .kakao: + return "카카오" + + case .google: + return "구글" + } + } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/User.swift b/3dollar-in-my-pocket-manager/models/presentation/User.swift new file mode 100644 index 0000000..de3c5b5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/User.swift @@ -0,0 +1,27 @@ +import Foundation + +struct User: Equatable { + let bossId: String + let businessNumber: String + let name: String + let socialType: SocialType + + init(response: BossAccountInfoResponse) { + self.bossId = response.bossId + self.businessNumber = response.businessNumber + self.name = response.name + self.socialType = response.socialType + } + + init( + bossId: String = "", + businessNumber: String = "", + name: String = "", + socialType: SocialType = .kakao + ) { + self.bossId = bossId + self.businessNumber = businessNumber + self.name = name + self.socialType = socialType + } +} diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index f3d2c53..102c6b3 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -128,3 +128,10 @@ // Seting "setting_title" = "설정"; +"setting_name_description" = "오늘도 적게 일하고 많이 버세요!"; +"setting_registeration_number" = "사업자번호"; +"setting_contact" = "가슴속 삼천원팀에 연락하기"; +"setting_faq" = "FAQ"; +"setting_privacy" = "개인정보 처리방침"; +"setting_logout" = "로그아웃"; +"setting_signout" = "회원탈퇴"; diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index f161ee2..a7daea8 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -5,6 +5,8 @@ import UIKit protocol AuthServiceType { func login(socialType: SocialType, token: String) -> Observable + func logout() -> Observable + func signup( ownerName: String, storeName: String, @@ -16,6 +18,8 @@ protocol AuthServiceType { token: String ) -> Observable + func signout() -> Observable + func fetchMyInfo() -> Observable } @@ -44,6 +48,27 @@ struct AuthService: AuthServiceType { } } + func logout() -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/auth/logout" + let headers = HTTPUtils.defaultHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .post, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } + func signup( ownerName: String, storeName: String, @@ -86,6 +111,27 @@ struct AuthService: AuthServiceType { } } + func signout() -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/auth/signout" + let headers = HTTPUtils.defaultHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .delete, + headers: headers + ).responseDecodable(of: ResponseContainer.self) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } + func fetchMyInfo() -> Observable { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/boss/account/me" diff --git a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift index 4d7a147..52399d8 100644 --- a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift @@ -42,4 +42,10 @@ struct UserDefaultsUtils { return self.instance.string(forKey: self.KEY_STORE_ID) ?? "" } } + + func clear() { + self.instance.removeObject(forKey: self.KEY_TOKEN) + self.instance.removeObject(forKey: self.KEY_USER_ID) + self.instance.removeObject(forKey: self.KEY_STORE_ID) + } } From 58327c2a7d10a41333a5d37a3378d01a58bd24bb Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 6 Jun 2022 17:13:34 +0900 Subject: [PATCH 094/166] =?UTF-8?q?feat:=20=EC=84=A4=EC=A0=95=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=ED=83=AD=EB=B0=94=20=EC=BB=AC=EB=9F=AC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/main/MainTabController.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift index 9cc71b0..1efb1b2 100644 --- a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift +++ b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift @@ -5,6 +5,7 @@ import RxSwift final class MainTabController: UITabBarController { private let feedbackGenerator = UISelectionFeedbackGenerator() private let disposeBag = DisposeBag() + private let borderLayer = CALayer() static func instance() -> MainTabController { return MainTabController(nibName: nil, bundle: nil) @@ -42,6 +43,7 @@ final class MainTabController: UITabBarController { self.tabBar.barTintColor = .white self.tabBar.backgroundColor = .white } + self.borderLayer.backgroundColor = UIColor.gray5.cgColor case .setting: if #available(iOS 15, *) { @@ -54,6 +56,7 @@ final class MainTabController: UITabBarController { self.tabBar.barTintColor = .gray100 self.tabBar.backgroundColor = .gray100 } + self.borderLayer.backgroundColor = UIColor.gray90.cgColor } } @@ -63,10 +66,13 @@ final class MainTabController: UITabBarController { MyPageViewController.instance(), SettingViewController.instance() ], animated: true) + + self.borderLayer.backgroundColor = UIColor.gray5.cgColor + self.borderLayer.frame = .init(x: 0, y: 0, width: self.tabBar.frame.size.width, height: 1) + self.tabBar.tintColor = .green - self.tabBar.layer.borderWidth = 1 - self.tabBar.layer.borderColor = UIColor.gray5.cgColor self.tabBar.barTintColor = .white self.tabBar.backgroundColor = .white + self.tabBar.layer.addSublayer(self.borderLayer) } } From fcbe1788584a8d5d5d0d12f5708984f59b7ab7ab Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Tue, 7 Jun 2022 21:47:57 +0900 Subject: [PATCH 095/166] =?UTF-8?q?feat:=20=EC=95=B1=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppIcon.appiconset/100.png | Bin 0 -> 11825 bytes .../AppIcon.appiconset/1024.png | Bin 0 -> 84764 bytes .../AppIcon.appiconset/114.png | Bin 0 -> 13974 bytes .../AppIcon.appiconset/120.png | Bin 0 -> 15019 bytes .../AppIcon.appiconset/144.png | Bin 0 -> 18970 bytes .../AppIcon.appiconset/152.png | Bin 0 -> 20074 bytes .../AppIcon.appiconset/167.png | Bin 0 -> 22529 bytes .../AppIcon.appiconset/180.png | Bin 0 -> 25103 bytes .../Assets.xcassets/AppIcon.appiconset/20.png | Bin 0 -> 1186 bytes .../Assets.xcassets/AppIcon.appiconset/29.png | Bin 0 -> 2088 bytes .../Assets.xcassets/AppIcon.appiconset/40.png | Bin 0 -> 3353 bytes .../Assets.xcassets/AppIcon.appiconset/50.png | Bin 0 -> 4554 bytes .../Assets.xcassets/AppIcon.appiconset/57.png | Bin 0 -> 5479 bytes .../Assets.xcassets/AppIcon.appiconset/58.png | Bin 0 -> 5591 bytes .../Assets.xcassets/AppIcon.appiconset/60.png | Bin 0 -> 5909 bytes .../Assets.xcassets/AppIcon.appiconset/72.png | Bin 0 -> 7542 bytes .../Assets.xcassets/AppIcon.appiconset/76.png | Bin 0 -> 8184 bytes .../Assets.xcassets/AppIcon.appiconset/80.png | Bin 0 -> 8809 bytes .../Assets.xcassets/AppIcon.appiconset/87.png | Bin 0 -> 9874 bytes .../AppIcon.appiconset/Contents.json | 60 ++++++++++++++++++ 20 files changed, 60 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/100.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/114.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/120.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/144.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/152.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/167.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/180.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/20.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/29.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/40.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/50.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/57.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/58.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/60.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/72.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/76.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/80.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/87.png diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/100.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000000000000000000000000000000000000..2248f3803019b86e4cf74740824ca4685ace99ad GIT binary patch literal 11825 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%0Aij46PvJi+bP8bi)2UFwlPi;z0wIYm_6=$=ww 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/114.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0e65762793b6b3bf04d1e110645682dfb47c33 GIT binary patch literal 13974 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/120.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 0000000000000000000000000000000000000000..0bda1d79fd24ddee2f44b06c383b32b0dedc5f7b GIT binary patch literal 15019 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 B377x? literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/144.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 0000000000000000000000000000000000000000..274be212015a0b533beae4ba540adbfa331f6458 GIT binary patch literal 18970 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

*jNE^?s4p6-4 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 FV1g%FY{~!t literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/152.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 0000000000000000000000000000000000000000..79fe746a0f5197001f5370c07ea3cf2daefe0a51 GIT binary patch literal 20074 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/167.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 0000000000000000000000000000000000000000..e302d97898d9e0e82a8e2017e2ef28e70ab263fe GIT binary patch literal 22529 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 a37(B60;{5H_@F#}(Uj#i&X!u|*8!rj^c literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/180.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2c3d5812ebb0731cd6fdc25dbf1cb662dbd946 GIT binary patch literal 25103 zcmV*1KzP52P)PyA07*naRCr$OT?LpNRn|RK?c*AEPl!VBKyX+fxV!x50=q13i@Pq1F0kwZ3&9o= zWRVCE0zu*lad#P)_NxCo_top^nT!*eBvaovnaNCbb@i+B?mO?^bMG}WGc#?p9<3v= zi;RHL3g}(rNw$6r8G%+nw*q088i7_o?^2Jm^~1CRx)lSv)CjZ!dY5{ftskZp(5)EQ zrAD9?(7V**Z2d5;fNsUWE;RzJfNsX)G))7hVZyR)Se6CD08G<_0RwT%f^E0Ps+uvZ zTjeFKfNsJt8ioOaxx6BTNH_ww#{<9L1Iw}z3PoVWEu^IS5%75ti^rRA<@&0vMjf>;_8!~|ZL%{2yerog;JcsaV(gbcVd;wX$jVBSE4Nzf zMh@^+I;|DZjTlIm%S1(G2zgoQc=+~*Z|xvz-407noW4-A7k*; zKR$-XmZ1&=D8(y~y-@f-C_SmZ* zqMM80@uvdu5bUy5K%|Jsh7o83q;?eGMx$YP+vVY%e}01VZ+I3N=_&Gia&TUgo5z}m z4O`xm=e5$5=A(bNx6oA{3LtJNuLTcURj`pG`(;iXWB1FruU>7GIN0L+B6iV_ljwz*P^1L0{MA4STNyvWM-$q zuv{=I*TGu)5n#swm$z!PX*#KA7o#Oqw_iBhR=EojSHf*N*w<-nk9h z=Vv1`Jw<>UjmA(?R)KXJi?Dq4CM;XE0UI_KBNmOpFZbgUiXJD&X+0Vof!z|&;(jv> z6qS@CD>D^G9yAO`jU0wSy*task5;>|tP(#>oi7&kPgk4_I~0cD^1xd55kRWp_LDeQ zA7Il3M9N{b*#}0)k$@FOMP(RMrZ2=EeY&7s+iW1yG^T*X z!({?q4-k#RuBem^AcC7?v$}2V74rw8P7d%1unkmcmZ0x zG6WcI7%sO1G}#uyibrACagdt8^ujJ*4SVT_@^f_#tVh^TAok_L?0K4;V>6-%7fjP7 z*Froj8%hB_Ej$5ldH|OnaQR>xE?5@Ni^4^Or=`dw8~4pLJowDJ_~ysi$jC^6+vO5q zw;t6;V7Ic+1T;5hZ$15IoPPcv5Zh1y)8&TgR@T?9SPMi-6jptiFw!~${#*q@g3slJ zz3zM18>a$ppK^s%J2aqkVD>swacqLOay{(wRX}hf>~N|29f7Z1DTZ4pjN!=uQrf^s z?F6K>gY6E$iiTw(n3-v?!cjc;+F0EEc#^(A|!O zU9tpr@d6;YS#2U|jrCVe63q#tzvwaXXT!+s10!bu;LSul5>(VXClk}A%*Dljej2kE zu0&2&nyfgjhZ=$1!a{Qc7>>r!p=}PPfA*BT8~ z7MdGB9>pc);`=@Oq>(suzk%q~E*BlzWQ&Ffu7KLyZTJar2O0phrU5ar&_;HD*hRm= z-ZWKNXTBe4Nr#az+U~2Yamiv>oGf*ELz)3>zK;ZN!Z6zH52M`y3e*ju}(uVdNQi zNbtolIS$RCIn9`8E$k(`9H8lzd*$J)alvIL0)-`rMdL8Jkuy!01R}XE0loG+*c*Ro z8lVMG1d9IdfXs@(=r#&QMtAv}T{uT3jEW{U0a&CK;_09_h1Yf>iZ!nxt3n7y=c8cc z4nizc4tIVI{{GBpTzAha$j!;zZK=mD184>s3W`c`&!5i3-S=N1LL#?^@=m}mT?Uk| zf|0X_@+%u|ai`fUKCeB5-6X4{e9vb0lVrn2o@;NO4tveSCQKGy!veVZqwm@zuV-+D zZbV!CzovUo{%^zVaVqSTwy@$67+x<9KkYXBIBfwkGg3wW!LT_qYIYZky-NU^UW`yA zg6^H#V(Mp4!Q*wqv`rZCAgoni37CcF(o@my0I_a>1#9uUKty{gnqWz50^YV@_Ba_x zX%Cn#vHbShNsR-vP?o5iEAF}UZi&~~;X_v>(=GvMvCf4hc;wa#aLX+hAXZQ!`F^r7qjmPAsZcXL z6%0vB)X(Q|-A}7FcTKX)NhdcK&>GBvJeXbnAWA(I5_hs-#Pw&w-aHfb+HaH_F!>-w ziB-aAe-Mmz`@xP>!ti?V(i@*69FBrlnKow$#(g&f8w*R3O{=|&hs$>fKyx!lx#z^u z_haAv2f_+kFw2&}Uj9jyl@#6?hSB9H7&(K0SUKQIflUjzWEx!0dSj;L8T$l}>=i0j`AH;}Tr4*H3}Hj#j^B$eonL4YS8-at+&x!AMV0;woV! zHkK`3jXNIt7e;?Nd6x(EP7i2;IUbKACE&-eV;)DRE^T1PT)?_-U~ih11S;~>xcpzN zv^P_%8^4oFb0gOv0BeQ4QrH>YPlA!&S(bXcUCh*l^*U$z2v z@j}3pDilQB6K$;tYsq^mj9xS3ZpUGCKM_V+7xB1IFlf`dGfT#b!j%#Ld>&kJ?UQ(A z^w-GFO50`WM~efrs(GQMm5u?dXJbP^Q_H|Kr>SF~K)d!iu;XrE%{a#`m*iyovte2cpc&cYZk!3Jk%*&2bDq87G9`1v#{^WmVe81=nDXC8(QiOk zSP>J(=DId!w5SnDlM>-iXfy1RrOu|Sp^c#vj#l1g#}7?QOBdRaFtP_I$!O^^MR)28 ztO(ukDpj7F6u|>~<=3zaXNz@KL6jhjZYNZ^1Gktc{48M@-A`8M(2|FXVXgQd5Z)|S zoo+p&{RqS&5xDcR@WS&S;E#8{w9C5ob~vDEk@@V3ODm8P@M6e-?$~pW9_ZR3Uv}n2 zr4^XBcr|{RwFoO#ZF)b21bam*c(XZp5i)9*%fP5bk)n@?wa}t)`~J zp&tY`|E7Z^bunr2{n0U^H*7k{q11O0Sm}5ujJEp#)G`M*!dmj7BS@<2qI|6zX0J1Z zBMYEuf!F^4c+&xH-gw=fr@%<-q^L~cT*trd@MvenF*19>=ybSPW{a-Kiq&e8(9(0$ z*zI`Onf+k+fY~z^CBz+lY_ z4I;9SXdDF_3NYb^*%&=`62?uMfzq-{@wJNh-kA`m9eV)Yef>_vi_75hrNG`a9ro(+ z;z|?X%9j&D)m!<&Byhct?Ngi-1 zE1x?Uc89}Zy5m^2as&20;U6b{}k_zorH>D7}*(Vl8F)uM=jX$TY1USN z4zt8T9hOjgU9x%$sJTHDAX*X0DmVBuH<^Ms6}%BaRJ7c2-_^((mz9W=h^vv>M9TlE z6zp^a?A&26y%y&GwgUT}a!Xy)tie%f=_l+EKoiW&>Fe90BR+fc9(3-}5wXHznBL-lU*gk=m>+9K%bUg1uleQh&9yLq8rUC z99kxmOrE-ycE#rjIGHd4R+cnyQoK0%_+Ipxul^eLW@=Ar%aqX+$Vn35>zyncBeMsL z&PO9g2}^c5-hT6cIQP#_BR4xeLD^b5NSkth+a1u_D?uLo{f7^uN1v{U7MH5xEulhj zwb4R}PnIAu-7tJPKt^{MnLQ;qV#Q*x;}N*%Z?z3P_v#qj@#vefi)V=U*hBWjYtQ}# z+3j)x<_kumQbOXb>=j2a558lm13d1-oQS&71F_>6&B#} z;PBIL$M?U^lk}}!G03vr0Zr>%SX_oTpZYV-yZCrSHx$AXNEP3!@Lj$1CbCDg6;wWC z*#PAY5m%QLRUvFMClgbr%*AzgzKkEI&6l!V1N(NvW#=Cw($W4sI>Mci22@n4%@+CS zvN5nr9Sd5MNRs9d%o#lufXP{-6~bS|>M|&!mvxs92B}EyKp1IVoq8R9*d>b^skn25 zPPE3U?G>M{zsyS^}K+~haIu&~k?1Aq;dQ3J@CaoTW2@F$91~eZ;&B1ouWg^&799VP@ zZT6O*W8q2xY%~;+uVSM60Lh5-5%7cV?;C9eA8X^0h+ir_x6fs(*R1C~QeEU82bw1d&&ssxO-!b{79{L|k%GsVIM#+Bni0xeb6N zv^ZN-@j6xdwyZ)$&!VNuM@`k8rZ(C-=M9lfnx;M$BX{KVwN*+=wsqA4B>~0NH~b`- zG0h99H`vNuypc@Ce9m{GqjlMX6OF;kh(@*&1lTR>i z+&FCBycy}~>0-V4_m*^QH$ZcC(+knLeIBNL@&r=T0e=+U0}U=Nx5`nKaH7sBn%h=5TG9sKDN~WtzBF?#Y$okj=)J5b|Ignmn5YF?BIF@xN3Dc9G`I4<3Zo8h>YlY zVQ!#=k)1MLlJR0H&x4~^mM9MIupjY?q5^pFD}QbWJ(FgkAVsGbu;XTqoe@6XtgocuCaR zU}&6w%YfPQbS0uMp05NviC{>T&zC|T$=;T7T^20Xva6tl^}@*C6GofiDurv!1kqB< z`tHkBUKes$5f*7H&YB(!gTL#PAyC!+xB8*!QqBMvU5*Cm&ZH$x^%2!rvw9=$dgKkf z^U3$fNDGJvtf7N+BNmGx5{U>;Cbc;1u)}cOb=P6P{Zu6>ZLz=n@=Kh3_SteSC&G>d z^>zca9zcHBA3uBqdkpR=5(%St9_*E0G~a@0A1uMCD}}ACxAw@Qu(pVmPtu4mI)(wmyI8-KDoDc zJv#d9T0JTaA*v~V*JD6QY(`HQ9t(>Xt-*6|eSxBq3Vi?5T&&w%jI8w3CP_wB#{u<4 zaF>>rieziccH7Y(eBE_tR=Mq# zyzc}LD5`1LdTjBm83^ffuF^M?T1e?F#~SJ^Y6(-v)J9M?dmn9C`b+C8sGOrErlse# zwAjZf_QL<$%g2aFNmOo;ay2RF2_f}ho}whX^0jVfbNGJa{LxJTvYhJ_i1eh3yD?^& zaOY&;;YZ%U?T@~WwDe4o-Le}2Ww)dTjpe%<%-Z*?d&O`wxcA2JSYw9q^2je`ePmL z+jbuqZTGJ#F+l5B&8O|ul_Su~SE<6~M$KZ28cntURWuwiCk={!A~?xUSA8Y?+UR*I zjI4fY67i0U=ff_VFB8Vd?k8miM0C$8qNF&aD2*y?(*#r}2ZP#=kdS=bFmc$KcVW(= zRnn1wQ9)7&m&=99%1Q)-LE*dne_e;_6%!RpOB#`ynko~4^n{#^c z*Dt}VpL*&k+;GDU$j!|atG>OD?FwjqI0=0hmEm7cT!#z)?}Vz*H*@=#w&Z|A4MbA? z3)z6xqv0ih18tPNliz(=iqDF**0NFV{@qeCSAsdZ9$mFj*DAZX0wrk-eb%RfUOJFQTtj8QPL($N&eAPysBiL|gq(VkqjW<7SGq!T5IkRE)ap zVafK^e3@V*2nP=yjMGm)9m9qVLrRKjW>nij;BMNq33KMm!S~;PkEv6q%0!^&gRdd2 zC@CpH_wL>C_19mcZQHg94t?#l*W$V7od-8uDMUQ@6VHKCb z^rnb=OB7|)_EOKFYq~{>VV5pXDvnqOEfFt=Bcr4nP>P5v<(cS}rGlsmMN1|A(55=9 zv;%4yW!AH!;GQ&NGeu1-AVaT*Qz29fF`Z0ud3cN%F(S#dEJp3f+ubQ@Be`k%*0a(& z>zl%+cKfT+U>RvR^U??L$@pK9<<#aNmtFwhKp@a$jQ#S=RsOQ zi_I@RNe(*bAhFa0x$gFL(n%-b(@#I$?v{GH16r)KspO-B`gO&-FW-tDo!Uq{2x2$592%3>1qO5a zy2tgSb_BDC=2)Z2@G><~b67W;i(Y}~XN7oT<{UVHu~SQR0- z49D^&xU>UKDc_X_YuSH+;>C3<&jeJ?=FFD^BekOnl87*$I%}t(IU|W$5LH{iL;H1e z_7E+xSloEn36}?Jts^b(LmzdZt;+ruO>)Q)Gda~m=^ZIxnXqPr`nRA(Rh5(Y`Qp(a zT$!1;@S11v?wIk&&B_p!9bIW1I&_fGHN6q4U%83@{qKKRy?S-RswQ8a&xbs@OP4M} zQRt86q1|!|7A(NYC!dV9Yu5^G;WerIp!L7&uDcR^ddZR{7&&sJOelIswuk3qhX7iv zMoBr2J9JOH`NGY}@Ofo}XlOBfxCnN*M7$D)hbj0u(k?O9$mGP#vj znUaYVvFLWR5=Mq&tvQ)ie5OhjG<$tD+^dpKsq3f-EDcmv z?q@|Ki3G-!g-%X^(!i&FBX6*B-*F`%orr~$CVI_8*;tAjQ0tUql}Xg2Daooy)kj$^ zsqMb732ZA4%bNwW;~_ZboOAK<#~;b&jYnZ&A^!ERe~CMdAf=@~ zpa1vIJ8}522dJ`LlF<6AWIc;FL3AC`L)h7TIo+aaC49P3PZrExXE{r}^E!(1LmPq8 z%D%YoDDjk}*CbaVK`i`Kb+e+Jw92yT9)-?(lQVas=*I(_K4`8c zWy^u`)k;!IjfJ+}PDTrg7AlQ(V>KR}JkF+9N`JN43pOi3@!niMSZxo4=}p5q=bVj? zKOU0+G_B@;{_`K4a>^+(dY^svS;AM`7^R%H)aB*nVu`u=W28`nm6PR)E3S~uA1486 z3Ar^rAAS4wO`P}8Ll24eV_UoPwkx2y8D!VgV@B?YPv5=|@p6^(XBRL%|BI?VCk<($ zw*a;yETTsttB(@mv-1=qhNLcbOjRgqvyZayT3|#FQ@qd3ULBfav)AcDdE|BFtJS&H z3eq^B7R`wAQ>#raQ=U>)ze4GxLCugksSY{$MHgL!fB*a6+Z5E>70}X&s<;eq zKl2xyb?(uK7gxZIu*&S<2I}|j{Pm_#=|vS7D68yp48VLup)Is%jOek+CI#^6LJOo- z8~M5vGjv|hyg>$R+OsMVwbTLF>%WJ+{zui9C0UH0>`CNxeVOWg=@;i_)RQ7*cBKhW zdUx0xeuTa8S7&n6lGLDeCglH|92q@eGK-xlAqraDI)ab9GXU;qFh07*naRD`(s zNJpflUS*{Sofa=%EUv?CK|i(|pvAK*yJxr5pzGGXJ*>D3#^z~TQH|zUGu=sw`G#Fb z0h!$$eybE>A}Z1{Q!6T72fJXl0+$3~G_Or621CENqwk=$L+WElnp0A(50Rz%BzhtpbzVGI3x0IfmI?3Lq>KOXPB_nv@K3C|+(J92co=?LNt8#dso ztFFSc&pw;*kWlk+^wCEPE!n97&3bjga0I=(wHH8peICg$0eAf5x79dotz@~DU)CkI zcM2g&-xJpRC{r81Z~?5<6M=GOpropL(Sdxm2_gF5u)uz(C}(J^Al=qUBlI<<@_ zCbdZE05DR?gay-!INQ0g6k1v;zWU-vTz%UMSh9Q#1`i&HDN}w*1WUH1h1L&%^nqYy zpoYF}?ao`dawQHv_+X(NwC40|&`16H>#xhEP@i|foI;ubN~KKRyyVhcIna; zzyA8`b_KMy)C4QF8`oTOO#-Y0FWrLN{HZq7F`*_u{`jMW$7#*!$KH3}eU&DDD<9hx z(9HPWYhVuvc^gitDvAC{3$(iWXV>wG2^^N>qF00)KhaNUU2~-p7v&98OFsK;ODWny zIiD$32Kg=N2K#yI(qrXL&SAKysxF>v%2aw5D;b#`Mk))e>4KJ?>hD@}!Zyeoe^MQ4 zrCXMx{$pVo*3O_5mAqUgvPwpfzTnKNwql&>Fqokp@S|dLG5+(>w|L^E|6lzp}6yCr5RPc`s%Ck^wUo#G}K&4MvopX zo5rSWP8-7ib_2A|DP()K>H`0-npT@xYk#x)s_YC3gI0c_%HfI-iK!Z4)zX-1H>O{$ zpA3854+`|s!r>IjH7 z6;cg~Raj$8sbY?1IK0CEtyVM_%F4ybwuk*HyQe!hTQizcaz6m}I3j7BS=>?kt{}MLu`Cr3X)rn6*su5Kpe1^1{JyI}x%WyJ_ zfKyAsvRo`Eqs+JXm2H0>EGq(+--l~&e-Y2UJ_ZB&_Q33~o^=52hRv4AGD(tj8;M** z)iPNC?V+`FtDHqz+)$B9#bRkMT4}b#s79xp8XBy+&r-UQ)EY#jW=@uG66$|+I7aB)@ZV^W+zF3hgS%7#*ub4(p0kJbShr{0m6bujqC2qXW__a!wMI&`RHw(y`Ag!lBu z8*gk?+Ob^$tvwxmx_89SpF9DNi~dPBjNp0|u#og6owZVY539H`cIyIC- zuojP2frpx#44o+Jl%r)NF>ZL_O7&sduk:FvUpX_udksh>QF%*<5Swi`ytB3Mk0 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 A(f|Me literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/29.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1326642a3bac80f1c01072e11fab9caee90ab6 GIT binary patch literal 2088 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/50.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9d7e4341c47ea685fa68742c98775590386f9e GIT binary patch literal 4554 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/57.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000000000000000000000000000000000000..aeaaad1c72b33c818180340a79c63a5589d07b02 GIT binary patch literal 5479 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¥(>Cz!n$4tV9ORYRv)QwI zH#ZF#!urnVVN4GQ2Eb;A&ob!nQ3(fjeM{f#`m=58HffJFWkw;z8oLsJ1i9RN^Uchi zJC}rn1m1dk9=$tvr^`J9;jKSFyd#{N`BnJyaz4CgHmy3h=Qlljv3&V*Io7SW-df9G zK!CKU1bZ|Ar!{Pk)!C40fWGx4t(qkA_XYo;Lx&D*`Rq$>STGswjhh(YPUKHb`tff5 zX4XZW#&~)yf9pAs-Zxywf&Kd>(a2)77A7EZ34p@>#JwOC;W9+7*riJs#*7`y=fhMS zX{~tHHHdgy6qAZpQdU|_>!$J=2_O3XdhMly0pTL0`w%zP z$$L%a7iA|9(xvLIT)m3ItQ;OJTm++2c{+L^J!0C>BccT@GoQn|ZXc6!I`i-okMaI{ z?_J0ygldZXPq3%BgcQXk0&;QPbML*}b^A!J9@d`|PbM?8X&>e$ji4;#<>R8gJbP|A zuBZ2MX!buzKY4_yQywQfJ6n!_se<&6M?5kpxI{BdDG7fdKthW|)N(&rqne?Q>55rc z!p78Tl>6M=UN9f^%Tu&?{V=u$ksLml@uNXN%?mMZxGJyHGc}E@ihN4m8$`p%`e=rN z*9=fkadOI9M#T6p=~NZNfs;qk1Hm6nv!oLK+)Y?98GkT<;tQd5XiVi_2ctyVxypj?bc&A)LU~C5{^@gi?u{JDU=Mp)2 zBc7n22&Ypn%uj78{A`e6uTvccRs{%lYmEQCuITYL)G{6Cfa9u_cc^a z#gKep;=iXe`hX-%O~LYQ0rt1|%78_+TQF*|d;N<*UXY52m^?vD@i)c+m3~B&U`E=) zcKvgkuowdrcK|cSE?HhF^t-HN^dTTQGi%kt-8ecO8{QHFk(F241=lx zSBJGzV&Y=!(EV~Esm@yDh*xmf8XqQ^zV72Hv8uD~UtJFC|FQRq{oy`W45Z99P|zr<*tFU!k9YIzH zw}SS>L`BmavKrUU)trtIO<7fvPEdd|f><>N(VA0A&1(d3>!LECkQUvB7WO#VH_TT- zVy#iw6$^y{vE^>5ma2hEb8u6=PJHJ+O_n!bzN^cm6?QyOm;O@m6w}0}YRqjl8h6Og zlvB$HVRE3$v$S_MVSM%y=H;wlbhF>_eBw}IswFExE-L_Q-(zXs zdYVQiv7^&eVl)T+GG60QRSq_b6MvwB7g~*EYO}%YbDtq?|4hspZK$Q~*BPWJgM@;W zOm8`yXA^FcKhtUdOmh6^$?x_u4%N!M!p%%PGM8y>#_)W?5PU{ZJ{Rq{?;Inu-e*sz zCkU7!&IK!Z;mm5%y#?&(I7RlkGwTBu<*t=gd9l;=X{X1zA+{rh!3x@@Pp3-v%EJ|A zE#+A!kV56e#!N$N44J7jajAAHLq1x3_XPDUE;75!z^+=DSFoA!neWM3Yx{^MyxV3h zJtLDOc?f{JtFk$j`l3{6tDxt<_c9qVD0kxGro+d06_l8oxCwcP;-ow~OPcGo=SOr&sb??mABR zOBfe_EwARSXKPso!yEM`#o2^Uiudqv(?PUy)aQ>U7IMsU7E>^$8KP%YYx+bdV^^(I z=w8nHONg>W&@D2NzvOM?q&H9QcGuk%Bt~vNJyDBneFp%O(B%|{) z^7*dHY_^mi!9d}*2B{=F;wcJNlJwn^ctXBkhj>JEW9UBaYTQSv;PYqKu&!u3$x-0_Q;ac+d}QAsqj#d6eJNZ0){hKJhl{A7uu_@f0^#O<6XXI)N6;=xgG0X+}AC>c3SKDC2cYjv&pRiU=BiBQuFGpQ^;h>42hp7LCd*y*x{m% zM~bknb^yautz%es$tA9SDD74%m{6tgB*OP1&h>roNQnf;B&PMJ4%D dQvOfA`yW~G?G|G;0hs^*002ovPDHLkV1krWm-7Gs literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/58.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f92d27326e48865bc987fcb24256ff3843df84 GIT binary patch literal 5591 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/60.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 0000000000000000000000000000000000000000..88a344d85c9e8bf9e53a55707073c752b70c3014 GIT binary patch literal 5909 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/72.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000000000000000000000000000000000000..a407f5ba209e4c4bae71e1d0f24bfcfc9c149340 GIT binary patch literal 7542 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 M07*qoM6N<$f|9R!G5`Po literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/76.png b/3dollar-in-my-pocket-manager/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4d2363f73b1eb0ebca5177fe9c7fd1b81d99e5 GIT binary patch literal 8184 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 Ef Date: Tue, 7 Jun 2022 21:55:25 +0900 Subject: [PATCH 096/166] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../img_intro.imageset/Contents.json | 12 ++++++++++++ .../img_intro.imageset/Mask group.pdf | Bin 0 -> 142483 bytes .../domains/membership/signin/SigninView.swift | 15 ++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Mask group.pdf diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Contents.json new file mode 100644 index 0000000..38320bc --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Mask group.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Mask group.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/img_intro.imageset/Mask group.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ae41a8cd3469116f20b460aa4080481146c66650 GIT binary patch literal 142483 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift index 0aad698..a832f74 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninView.swift @@ -3,19 +3,32 @@ import UIKit import Base final class SigninView: BaseView { + private let introImageView = UIImageView().then { + $0.image = UIImage(named: "img_intro") + $0.contentMode = .scaleAspectFill + } + let appleButton = SocialSigninButton(socialType: .apple) let kakaoButton = SocialSigninButton(socialType: .kakao) override func setup() { - self.backgroundColor = .gray0 + self.backgroundColor = .gray100 self.addSubViews([ + self.introImageView, self.appleButton, self.kakaoButton ]) } override func bindConstraints() { + self.introImageView.snp.makeConstraints { make in + make.top.equalTo(self.safeAreaLayoutGuide).offset(106) + make.left.equalToSuperview() + make.right.equalToSuperview() + make.height.equalTo(self.introImageView.snp.height) + } + self.kakaoButton.snp.makeConstraints { make in make.left.equalToSuperview().offset(32) make.right.equalToSuperview().offset(-32) From a9904421e7aa160379b414a7ce166f1a84fa0274 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Tue, 7 Jun 2022 22:18:35 +0900 Subject: [PATCH 097/166] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20=EB=AC=B8=EA=B5=AC=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=B0=8F=20=EA=B8=B0=EB=B3=B8=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../img_store_default.imageset/Contents.json | 23 ++++++++++++++++++ .../img_truck_example.png | Bin 0 -> 14061 bytes .../img_truck_example@2x.png | Bin 0 -> 32414 bytes .../img_truck_example@3x.png | Bin 0 -> 53049 bytes .../signup/subviews/SignupPhotoView.swift | 9 +++++-- .../strings/en.lproj/Localizations.strings | 6 ++--- 6 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example@3x.png diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/Contents.json new file mode 100644 index 0000000..edcca84 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "img_truck_example.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "img_truck_example@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "img_truck_example@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example.png b/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example.png new file mode 100644 index 0000000000000000000000000000000000000000..bab9d7ae587f840c2326ac99f2e2d3dae1d46747 GIT binary patch literal 14061 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 W%NU?c5C3->g0j4ZT%C+X=>Gt_1^E*I literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/img_store_default.imageset/img_truck_example@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..65eb3dbc49dffaf92dc81b12f5bd5f7c4200a0fd GIT binary patch literal 32414 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift index bc32fb7..2256131 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift @@ -83,7 +83,7 @@ final class SignupPhotoView: BaseView { make.left.equalTo(self.containerView).offset(12) make.top.equalTo(self.containerView).offset(14) make.right.equalTo(self.containerView).offset(-12) - make.height.equalTo(136) + make.height.equalTo(self.imageView.snp.width).dividedBy(2.227) } self.uploadButton.snp.makeConstraints { make in @@ -111,7 +111,12 @@ extension Reactive where Base: SignupPhotoView { var photo: Binder { return Binder(self.base) { view, photo in - view.imageView.image = photo + if let photo = photo { + view.imageView.image = photo + } else { + view.imageView.image = UIImage(named: "img_store_default") + } + } } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 102c6b3..61746a2 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -37,11 +37,11 @@ // Signup "signup_title" = "회원가입"; -"signup_description" = "사장님, 가게 정보를\n입력해 주세요!"; +"signup_description" = "사장님, 가게 정보 등록하시고\n부자 되세요~!"; "signup_owner_name" = "사장님 성함"; "signup_owner_name_placeholder" = "사장님 성함을 입력해주세요."; "signup_store_name" = "가게이름"; -"signup_store_name_description" = "최대 20자"; +"signup_store_name_description" = "공백 포함 최대 20자"; "signup_store_name_placeholder" = "가게 이름을 입력해 주세요."; "signup_registeration_number_title" = "사업자 등록 번호"; "signup_registeration_number_description" = "“-”를 제외한 숫자만 입력"; @@ -54,7 +54,7 @@ "signup_photo_title" = "가게 인증 사진"; "signup_photo_description" = "사진은 사장님 인증 용도로 사용됩니다."; "signup_upload_photo" = "이미지 업로드"; -"signup_button" = "회원 가입"; +"signup_button" = "가입 신청하기"; // Home "home_off_title" = "이 위치에서 영업을 시작할까요?"; From 383e47641602e8d5e74c8dcea5d9ec1edf03b227 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Wed, 8 Jun 2022 22:23:04 +0900 Subject: [PATCH 098/166] =?UTF-8?q?feat:=20=EC=95=B1=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 9f99321..abd39df 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1621,6 +1621,7 @@ DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "가3사장님-Dev"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; @@ -1659,6 +1660,7 @@ DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "가3사장님"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; From c1db7627e10aaf6dfd3e99388a4cd5d813acf9c2 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 9 Jun 2022 15:04:11 +0900 Subject: [PATCH 099/166] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20AP?= =?UTF-8?q?I=20=ED=83=80=EC=9E=84=EC=95=84=EC=9B=83=206=EC=B4=88=EB=A1=9C?= =?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 --- 3dollar-in-my-pocket-manager/services/AuthService.swift | 2 +- 3dollar-in-my-pocket-manager/utils/HTTPUtils.swift | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index a7daea8..6ba4456 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -30,7 +30,7 @@ struct AuthService: AuthServiceType { let parameters = LoginRequest(socialType: socialType, token: token).params let headers = HTTPUtils.jsonHeader() - HTTPUtils.defaultSession.request( + HTTPUtils.loginSession.request( urlString, method: .post, parameters: parameters, diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift index 5d52135..0026836 100644 --- a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -12,6 +12,13 @@ struct HTTPUtils { return Session(configuration: configuration) }() + static let loginSession: Session = { + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 6 + + return Session(configuration: configuration) + }() + static let fileUploadSession: Session = { let configuration = URLSessionConfiguration.default configuration.timeoutIntervalForRequest = 30 From 3d9601301c1ac29ccd9c748465a60496dd506180 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 9 Jun 2022 15:11:32 +0900 Subject: [PATCH 100/166] =?UTF-8?q?fix:=20=ED=83=AD=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic_home.imageset/Contents.json | 15 ++------------- .../Assets.xcassets/ic_home.imageset/home.pdf | Bin 0 -> 3814 bytes .../Assets.xcassets/ic_home.imageset/home.png | Bin 563 -> 0 bytes .../Assets.xcassets/ic_home.imageset/home@2x.png | Bin 913 -> 0 bytes .../Assets.xcassets/ic_home.imageset/home@3x.png | Bin 1289 -> 0 bytes .../Assets.xcassets/ic_my.imageset/Contents.json | 12 ++++++++++++ .../Assets.xcassets/ic_my.imageset/my.pdf | Bin 0 -> 2502 bytes .../ic_truck.imageset/Contents.json | 12 ++++++++++++ .../Assets.xcassets/ic_truck.imageset/truck.pdf | Bin 0 -> 5444 bytes .../domains/my/MyPageViewController.swift | 2 +- .../domains/setting/SettingViewController.swift | 2 +- 11 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.pdf delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.png delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home@2x.png delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/my.pdf create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/truck.pdf diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json index e25be4b..9fa3006 100644 --- a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/Contents.json @@ -1,19 +1,8 @@ { "images" : [ { - "filename" : "home.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "home@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "home@3x.png", - "idiom" : "universal", - "scale" : "3x" + "filename" : "home.pdf", + "idiom" : "universal" } ], "info" : { diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.pdf new file mode 100644 index 0000000000000000000000000000000000000000..54eccad87045bc5da837719e5530f869921af75b GIT binary patch literal 3814 zcma)9$&TDM5WVv&cp1Pxn9Wrr0mDE%69+*OWYW&f$f2W=XFBL5>23#3zTS_NRAi5s zMJMTrta`PuSaoxM_wJPvo-xHGKmPg~TdXR+Yjq+-tyb`^;dspe=sFvez=@pUeO!dRHc?Old6Vc@K{IY5`pZomLKKlT}>1mC^W=o z!~7gegO(FlQX&UGOtK@eRqQ6mIGABR$-( zv>3FP{Bmqb4bj;%z2LJe7-`OQCgM$yBql{mnQ)Kr#`<6@SK#DGYh>jwp`#Ab0HKhg zZsm|7XeFd5Nml6)DnAGfS+%o>1o7<~#Ij!&Y7<>0opHWOxYXvgmS@cWc*xnVmx8<5i>aDMROai(wg>HSWfl1u2P}NxgMN%8Yk0& zVDPY`oE2bFdaL0fIzO{|n@%a6zJemb3Tj2CEy`=kZs)ZduL~Q4)3`Vqmqkwb1<&NE zMomtI+FP$YG7tBIGB!FMg?2ima8%GNk!}>|`G;caU9b@qRtw`$YdRi;w#wnC&QRcu ztDtWYOuQR61TI>+bVn6oa$AK>McgE}w-Tg)C1^rfZBuQTVwFUW zB_?;dc@xpy7pzi4zgrmn+?Bl*_Ec=7p0Dck2y63h`IfM1FN(!%3vsNs3bswRFJa_aT#@51LP%|2vV^cIOHdVLL|e(xtd1{=7!ipA^$liM ze9O}0ejjB>-6DxBej&vLB7W6LCam%lS*y@9Ig37+JVKNSsTda;*0L-bn1sQPt((S5_fw%T!sTQrqO8z?>8r4+)Yq5U?qqKuhn2VVdWX*&_>VD<+R!Eh7(KC`}Pj*cyT`NhnM`t_TlB| kl-2rpyzpdjcJS)`_U{4g^F+EiU9vgGMa^z*zW(vu7gC`5{{R30 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_home.imageset/home.png deleted file mode 100644 index 35febf2fa14b48ca83ac11a1cd5a11d5b90669f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)wMq5na+F#_H0Z#vR77d_?|cX?}IM1)>sB6m*DL>hxwub##HNM0=}#u z-PVJkN>Bivi*+oPx<%dx_yavvFr|Z+t7;H@a|OLp3=!TTFJm6?3R3qC!yS}rV0=YB z!i;4%wah=k(?tfMkRXpy#29l{z-g=Ri5XnRsftG<1{A|XS)^}Azp2(+^jf?j@}33k z(;c)ma$)KAh}x!6Wh3(9nO1(9jh zBv~yiK|6CZ{9#jAlcHft)&SguqH{~CxJENNx22`H3zHu zB-oGbJ;8xg)N1KCk6RnvrRA!~=uvP5f;_w<t37Mdy@oXuR7wL6}=2M;a839+Q7! z>yarXJ0@T_GoMNg30fX8DYLKDj>LoD@*mkfzM4L zHTC{Pb~Rgxy+52mkw%i|Y+c&ggqkW%LtX#MegMerl(~#!U-fhAd8R_#2XB$6q23f1{}c^A6A&o zdxMsl?jB&6mRUHzg)-mo-~IaazZ*zMh=jmP&_6qYNPVJTg~u}^NcTI+U%Rl3T>(y| zfUNvRzYYTK7-1$3ao8Hc5-Hf?*XILd+&csZ&#*wpyVnwS1Pm%yNT(eLvAf3I1@GR$ z`4ub>Erp!wF0x}v8SzoSC~s&S)Zor{=|2Z+xCb|sQne^4wYdQ2tcYyt2c8G&Gg3BC z?$mwf`jt9_G_`u9aj{tn{l2(FMmW%dm-m=cFlz8jxmEYBaln3fT-@RIyowD7-vhT7 z*YsEan8Y8XD3$hCwB&#)m6QhY-bv&nA zpbKCpsRqv_Ql$3qq1D4n!`~1AA~IvGSQvUhD5Xu34Q>}#)_0rmw@U4I-nV_B;Yhtz z7a&B@f1Ii#E@lr(iz~5Voq1rJEw6IeU0LPqtp{Qv5fC?tfVg=B+pvpFr`gkR%`QBi z9a0S+Vk#OocO)2l0zC6KVIO0%)W#6LZI$Q(*m|oi&x;*)mHGTz@-$@G*oR@vfYVn4R;xq#7e|XA|P&FfdEUMWg`}|{8CH;dcLFF}U9tFKkEI09=mL1QG;i(22L}%?Cc~v=^eZQTd#U-I n?a`yO`H7ue)7n;kf@S^z`ePktc{*WJ00000NkvXXu0mjfm=cJOu6n-RE^wFH%TZ*MDbn zfU6(Q(Aqyo$&@S5+h0;tDm&`8G`C;i7$3wgS_cD^M0o<8ZttiS(NRbkR;_t0zN}TtYUL5FatMWhe zH=iRA{#Vd=OVL5h+>|_rNKQUmvL&!W%6$wMcYRwrzXEl)8<>|T>RTQ%BYUXT+Gu{h z*;93$ltn+wLd}wgWo@^&u~?a(Ds{_z|d( z30GSRl?|-Cvfmg94Y3Dq%XxAI+zM3GgiHL3M66-C;MN##xi0tv-nlE_&WdRheo0m; zWk$ZlVl6E!4nbpw!=@7UB{MQrR<5hhK1aA&L1e-+?DGTlSy5n|h5l1z4YNIdpo8zi z_X0C!Tw_tj3HI z1!9N-F+_nFqCgB$AciOqLllT%4rM}7%7u$(kRrv{n{DWJNrepJ4B6;U{6BY6W`$Wf z0*&KLDpGKnDsgW2kArh5k_tut_HepYS}9)mEk;Sk`K(Cz_6rj0N~rfC>w>NcD-dNw zC$PZ~!Mnoh{9TI(X(7S1;B*4m{iiwK{ z&}rjbQtc*q#=k(-Y|Y%MR*fymc$1kh#FFPPyq`q@wwU-izZu7cGO#p8Ci&S?A%22q z0th7YW7}DUOA&uH)|lIBz%wCMQ2se#$!6Z->+|Vb8t_bfSY?O;F+_nFqCgB$AciOq zLllT13d9fvVwhZ@08h}~=&nyZcbh~+%pEfOfjeTJf%%da1p zy6uOw5F5s5-o1eCP1jNzu?wW5d9rmsMWSSZY;jRd-po?~odWCT;Q1`l8z&3+Hv}eo zUrfK31$vq8p|MQ(?m`KG9&JOiH00000NkvXXu0mjfcid2~ diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/Contents.json new file mode 100644 index 0000000..c21fdad --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "my.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/my.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_my.imageset/my.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d592b37261b4ccc06d6d14a2066d31dc53b1f9c6 GIT binary patch literal 2502 zcma);U2oGc6o&8pD||C)yI2xCahyuiB-Sy605Ll5CN4tiZAEDUO@;=)e#fc(+Wn9q z7nS?OKIc6jwsUfOeRD1n&6waB@4x?GoL^k<%S&durTxof%+rsidmNv5PHb$f-d*weUHq>Z*e@oMY{!UFF{ipk~doq|lkFDq6Zf7@Cf0zo_(s zbznu37r7`(u98xfl`44dXBB<`(l9XiZ&{h>QWUb_V6(7N=9SVV2Z4qrXaH;3Q}6(< zYbL!&Ft~z#5Ljy%70o3Tu#I4zICUZn-2B5hqu8Os>OFL^4oq*8syHG*BH#fe@({|~ zk}>)4|%nATD$WLO}Q-)F^(KwR#^| z$G-gU4nb|;>E9bfB~sbCb8Igvp-l81q*4G1?9G;P=awIZusJnL>E}YH?H1<=%og1- zgh338kHToR?aFI_Z>yvMi*?qactLWPrQ?!ZjsO({8DB6`fQ9orW+1f)uhBNpboo*=Puq znPjUZn`tScehSNJpKRX+6uW^OK#~op6PXEJW!#2GBVF;(bH|#KgdZxj!jJUq)QGc6 zN-~e`4#&#Yx1RBUpwU*<9h_jchaE%AGMQyk&!WUY2lCe((`F@aj{$q-y8F~$zV@Eo zUdo~>1@7bmnC|NIP1p6~!0*4&-AzyW_0Lbk)7$#dIPl3VSM^o@!tcWkj5J6bS7GEW zEzHnAZyGaj`*pBz=H`7jnvOi$PXiBc>kTok9Ev_5EW(FH`eC&ssoX}e;NH)?f2OtK zK>t7_vQ+L^vH=co7y_TyW8Lgs94JD{9&+6PF? z6s2Mh>HS$!6m(|n%#u=uh2y4PwPwR?_1<4oI!=dvZO-`VYI(LzO1kL#k=uZ$1gCea XzlPLLUtINOoWhZ^%Gk-t+s`+z-_`ir literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/Contents.json new file mode 100644 index 0000000..a11babd --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "truck.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/truck.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_truck.imageset/truck.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d2f47819a73f16eb291f523ebb110bfec5f725a GIT binary patch literal 5444 zcmeHL%Z}SN6y579xCxLfBJ)iO2m&;drYPE?(@A$h7p_K0rtqV+og(em=TIgO>9K(J z1ENJDpCRu(_sJ_hxqbcSx#~mLDIvxF_dhxzUc3-5Uv|^(KK<-;i?4p1b{|e3g#mb% zRvk}=X}#@MucyBs#_8_6SK{Vv`)fRQe|4&t^CM(=dCoWf&GuSr@4QfbjB!w2jN4B3 zHb@sEc0PVNj=RnldA4_F4cm&D-UsD^5vDgfS{?9`dFZm7$k-7hqYY$PqlY1YQ{L&z z3zqvJr4dBPVXPd8ZMu(D1GR498j{Q!sEYiFP}94vexSHdN{(k{Uza$F4fJ zUD>Pj=xP`GEiFEE zIS$D|t{$?!tfE&MBoj`JHuqQBMM<=Q`iP7R9A@94->1h`pTKtp6NU3?sGzcSU2y;* z+6vz_U=D4S#z+FnS_xq*L9$K^H7B1~EJxyT3Bk<;=%bS!i7w&g=xr3Sj~@RI35rg6 z7sb#^Z6(5t#JW~8dxz;URNXa=2-dJeW=d$dlle!6Fp*#=(XY~K(5RKroRm4qsr8Z} zJdYXB`yl4zFPToX>c&dzOW z=CoF|1`x%9F~kYGu6tsXH~XVhcAimG@Kd51jmKEgowgEI?+d)`5u!%)R5H=B{8z7av zVG(S$BUTiEP}FjCy|aT17)FUgSw&f-ErqsxmgLUqj>%feU~r^q9CI@GI-F_U}0aBUpXijN)n1#)2)LV)b_Xph;BY|f)9g-%h**aA4202$vK&7LNZO^ zbJxcK<4~KtkgrulC{o%X`<%jAvXC@qH!UO>D#=CMQ>0F5g4c51k4%j?v}@uol?Y@m z@J#&K2&?(&Ld003Z0nOIjkE7u^IcHA3{9o;R1itifOF(hHqJ8PGWVt{xD_Wr|JG-{c8VN zysP(L?7^DutZzlq-E`c4I*ij%q`SGhEbeB%J54)iOc!$nyj>rF374Vf`Yu7d)?5AX za1W{?S#T$co}2wA>{VC%k3bqp{z6hR@JNN#@SF8%z1e@b-1_-2z3-$5-8o; Date: Thu, 9 Jun 2022 15:26:22 +0900 Subject: [PATCH 101/166] =?UTF-8?q?fix:=20[=ED=99=88=20=ED=99=94=EB=A9=B4]?= =?UTF-8?q?=20=EB=82=B4=EC=9C=84=EC=B9=98=20=EB=B2=84=ED=8A=BC,=20?= =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=ED=91=B8=EB=93=9C=ED=8A=B8=EB=9F=AD=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EB=B2=84=ED=8A=BC=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic_check_off.imageset/Contents.json | 12 ++++++++++++ .../ic_check_off.imageset/check_off.pdf | Bin 0 -> 2290 bytes .../ic_location.imageset/Contents.json | 12 ++++++++++++ .../ic_location.imageset/location.pdf | Bin 0 -> 3945 bytes .../domains/home/HomeReactor.swift | 4 ++++ .../domains/home/HomeView.swift | 10 +++++++++- .../domains/home/HomeViewController.swift | 6 ++++++ .../home/subviews/ShowOtherStoreButton.swift | 9 +++++---- .../extensions/UIColorExtensions.swift | 3 +++ .../strings/en.lproj/Localizations.strings | 1 + 10 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/check_off.pdf create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/location.pdf diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/Contents.json new file mode 100644 index 0000000..6599714 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "check_off.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/check_off.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_check_off.imageset/check_off.pdf new file mode 100644 index 0000000000000000000000000000000000000000..32550ffa8e350633e60f5f1b5fb071fe6e363d6c GIT binary patch literal 2290 zcmZuzU2oGs5PZL1u`iWcq}o1zoD-?4L{o|oAWDkFL&bw}u1!#4gYBZiuV*jy&0dHd zDZ0$<&d%=bd2@1meRHm(QYlRdwcmdzqKgZ`-gPuSGxerqcoZ8Y)-6Wp3ICUZM6)mnXhr5diT_9X(@ zIabGe*s9$T%(OA4q~k?jHdgz3`TZUcfzFz{b1i6LAZ4K^qT2LszA zDE@2;{}AP9qSwpa1#&$Wq`;SCY~nE6X*4k9P~Hz>IW3Qgj;#`|X%zk}!21W-dP4tB zrBRk=IyZc`{2la*ajTFmu+@PWfCmbrG@BKrqa7Eb9u5Kp*8w_Q2g~umDLivgm_?>A zvm($cH3DP!VvyKetvo7?&eNO(l^#L{0znKjqJaSJg-idyfR&3(ph7UY3my)IwwByj zyr4)!5(;*~Bv@Dw(c$zX88LQU=?@h#gMuM?fFUMF@@;h>9v~_s4T%zo7(ijeK#UXq zz^}Z|{Bh%HoIQR}xta7bz_iKdm|rzrfG+s?!WPz<0t;|=clFkwtBQ9@X@X| z)m8gU_xx5IuM8H!Jiuh|OiSChPhD+$a+7p9(k8%!N-l#X`8bRAiGB5v{+^M5$s91b1bYOO#23|2ZQI8~*XPbYsDw)OlD_*UQxsW2 z43CdaXuqNcP{uml14x%V)BlGI7vj)r&cugMnk3>lbk$~SJLOLA-8Glvv~PFzj7~SJ nvzMa8%eEcJCA=?ie7E^)S^fUsN!1PebkfAk)XB-4PdEPngdNW> literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/Contents.json new file mode 100644 index 0000000..8baec95 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "location.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/location.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_location.imageset/location.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0afb6e5a28110f18bbcbde70f9736908ef6dbcda GIT binary patch literal 3945 zcmeHKO>fgc5WVlO*h{7MP}}SEM-aHlPSb9bsA zHchow@ph4& z1rtVB>W=Ne_F9pdEmvSr#BK!6tgcpceLlR5t^^8>6a!B-2*3}h5HSD`#~26LhPWL= zHn!n~7aR~af|an6Li0+2AcMj=ih{d`i53`yDb~R$X1Eh-CPc)M4vccvur~sOda?vR zq$z=dDd!G*1Yw3mI9Q7#f1_IU;cpAba7|(L=Mu_7*wV0Ysfc==O!Ledsv47Ic`@Y* z#&Nc#lE@ziCKivkpr9r>Z%>%<$3X?hfz*^Qo)s`G_P3y*esW+TN}1uA{yDHnm?FrC zf}sp?$(&O>{Q^A;!2m)fzJH910Js6u!li*d{zzBs=M74eb_WND$%9dR`HlfMV{MS6YL*D zxixOIfGqLcfvlbGL76EZpUS6?b=jg|!C_M^SItJzFdV-=r*Ith-MTr_hs(v$HYoAD h>jv!{9s?X-Eq^w|ejJLc%`m!S%halagO~3wegU1|1@r&_ literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 4cc42cd..49efd20 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -8,6 +8,7 @@ final class HomeReactor: BaseReactor, Reactor { enum Action { case viewDidLoad case tapShowOtherStore + case tapCurrentLocation case tapSalesToggle case moveCamera(CLLocation) } @@ -61,6 +62,9 @@ final class HomeReactor: BaseReactor, Reactor { self.fetchMyStoreInfo() ]) + case .tapCurrentLocation: + return self.fetchCurrentLocation() + case .tapShowOtherStore: if self.currentState.isShowOtherStore { return .merge([ diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index e695482..7b8043f 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -21,7 +21,15 @@ final class HomeView: BaseView { let salesToggleView = SalesToggleView() let currentLocationButton = UIButton().then { - $0.setImage(nil, for: .normal) + $0.setImage(UIImage(named: "ic_location"), for: .normal) + $0.contentEdgeInsets = .init(top: 8, left: 8, bottom: 8, right: 8) + $0.backgroundColor = .white + $0.layer.cornerRadius = 20 + $0.layer.borderWidth = 1 + $0.layer.borderColor = UIColor.gray20.cgColor + $0.layer.shadowColor = UIColor.black.cgColor + $0.layer.shadowOffset = CGSize(width: 0, height: 4) + $0.layer.shadowOpacity = 0.15 } private let rangeOverlayView = NMFCircleOverlay().then { diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 46e0477..4379592 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -54,6 +54,12 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { func bind(reactor: HomeReactor) { // Bind action + self.homeView.currentLocationButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapCurrentLocation } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + self.homeView.salesToggleView.rx.tapButton .map { Reactor.Action.tapSalesToggle } .bind(to: reactor.action) diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift index bf7f85e..c70d705 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift @@ -12,14 +12,13 @@ final class ShowOtherButton: BaseView { } private let checkImageView = UIImageView().then { - $0.image = UIImage(named: "ic_check") - $0.isHidden = true + $0.image = UIImage(named: "ic_check_off") } private let titleLabel = UILabel().then { $0.font = .medium(size: 14) $0.textColor = .gray100 - $0.text = "다른 푸드트럭 보기" + $0.text = "home_show_other".localized $0.setKern(kern: -0.4) } @@ -58,7 +57,9 @@ final class ShowOtherButton: BaseView { } fileprivate func setShowOtherStores(isShow: Bool) { - self.checkImageView.isHidden = !isShow + self.checkImageView.image = isShow + ? UIImage(named: "ic_check") + : UIImage(named: "ic_check_off") } } diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 23bc757..449f7c1 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -10,6 +10,9 @@ extension UIColor { /// r: 226, g: 226, b: 226 static let gray10 = UIColor(r: 226, g: 226, b: 226) + /// r: 208 g: 208 b: 208 + static let gray20 = UIColor(r: 208, g: 208, b: 208) + /// r: 183, g: 183, b: 183 static let gray30 = UIColor(r: 183, g: 183, b: 183) diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 61746a2..604d602 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -63,6 +63,7 @@ "home_on_title" = "개시 후"; "home_on_description" = "동안 영업 중입니다."; "home_on_toggle" = "영업 종료하기!"; +"home_show_other" = "다른 푸드트럭 보기"; // Waiting "waiting_title" = "승인 대기 중입니다."; From 07f37d59b35e28f258c388ba47dbf5fb24bc8e9c Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 9 Jun 2022 15:31:29 +0900 Subject: [PATCH 102/166] =?UTF-8?q?fix:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=EB=90=9C=20=EB=AC=B8=EA=B5=AC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../strings/en.lproj/Localizations.strings | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 604d602..90bdbf9 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -57,13 +57,13 @@ "signup_button" = "가입 신청하기"; // Home -"home_off_title" = "이 위치에서 영업을 시작할까요?"; -"home_off_description" = "영업을 시작하면 손님들에게 노출이 시작됩니다!"; -"home_off_toggle" = "영업 시작하기"; -"home_on_title" = "개시 후"; -"home_on_description" = "동안 영업 중입니다."; -"home_on_toggle" = "영업 종료하기!"; -"home_show_other" = "다른 푸드트럭 보기"; +"home_off_title" = "지금 계신 위치에서 영업을 시작할까요?"; +"home_off_description" = "영업을 시작하면 위치가 손님들에게 공개됩니다."; +"home_off_toggle" = "오늘의 영업 시작하기"; +"home_on_title" = "오늘은"; +"home_on_description" = "동안 영업중이시네요! 오늘도 대박나세요!"; +"home_on_toggle" = "셔텨 내리기"; +"home_show_other" = "다른 푸드트럭 보기"; // Waiting "waiting_title" = "승인 대기 중입니다."; From 92303a87d2e3faa6917f06c310a90646c60c35c6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 9 Jun 2022 15:44:49 +0900 Subject: [PATCH 103/166] =?UTF-8?q?fix:=20=EA=B0=80=EA=B2=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=99=94=EB=A9=B4=EC=97=90=EC=84=9C=20=EA=B0=80?= =?UTF-8?q?=EA=B2=8C=20=EC=9D=B4=EB=A6=84=20trim=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my-store-info/edit-store-info/EditStoreInfoReactor.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift index 64c7217..0d1ff75 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift @@ -173,7 +173,8 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { let storeName = storeName ?? self.currentState.store.name let phoneNumber = phoneNumber ?? self.currentState.store.phoneNumber - return !storeName.isEmpty && !(phoneNumber ?? "").isEmpty + return !storeName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + && !(phoneNumber ?? "").isEmpty } private func updateStore(store: Store, image: UIImage?) -> Observable { From 589819157b26c9edca522e31ce6ca5bd47fd7bfe Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 9 Jun 2022 16:05:20 +0900 Subject: [PATCH 104/166] =?UTF-8?q?fix:=20InputField,=20PhotoUploadView=20?= =?UTF-8?q?=EB=93=B1=20shared=20=EB=8F=84=EB=A9=94=EC=9D=B8=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 32 +++++++++--------- .../membership/signup/SignupView.swift | 12 +++---- .../cells/EditScheduleTableViewCell.swift | 6 ++-- .../edit-store-info/EditStoreInfoView.swift | 10 +++--- .../CategorySelectView.swift} | 4 +-- .../InputField.swift} | 8 ++--- .../PhotoUploadView.swift} | 33 +++++++++++++++++-- .../TextField.swift} | 8 ++--- .../strings/en.lproj/Localizations.strings | 4 ++- 9 files changed, 74 insertions(+), 43 deletions(-) rename 3dollar-in-my-pocket-manager/domains/{membership/signup/subviews/SignupCategorySelectView.swift => shared/CategorySelectView.swift} (97%) rename 3dollar-in-my-pocket-manager/domains/{membership/signup/subviews/SignupInputField.swift => shared/InputField.swift} (92%) rename 3dollar-in-my-pocket-manager/domains/{membership/signup/subviews/SignupPhotoView.swift => shared/PhotoUploadView.swift} (79%) rename 3dollar-in-my-pocket-manager/domains/{membership/signup/subviews/SignupTextField.swift => shared/TextField.swift} (96%) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index abd39df..afc750c 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -46,14 +46,14 @@ 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */; }; 6E408D4027EF2A8D00322365 /* HomeReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */; }; 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4455B627F3E69E00A8DECF /* ShowOtherStoreButton.swift */; }; - 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* SignupInputField.swift */; }; + 6E473B9427D85D1C00232139 /* InputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9327D85D1C00232139 /* InputField.swift */; }; 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9527D861B800232139 /* SignupViewController.swift */; }; 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; - 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9927D86D9B00232139 /* SignupCategorySelectView.swift */; }; + 6E473B9A27D86D9B00232139 /* CategorySelectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9927D86D9B00232139 /* CategorySelectView.swift */; }; 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */; }; 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */; }; 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */; }; - 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* SignupPhotoView.swift */; }; + 6E473BA427D874C500232139 /* PhotoUploadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* PhotoUploadView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E479461280AE42000A3D96C /* PaddingLabel.swift */; }; 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */; }; @@ -100,7 +100,7 @@ 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */; }; 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */; }; 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */; }; - 6E64B28427D836920055354B /* SignupTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* SignupTextField.swift */; }; + 6E64B28427D836920055354B /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* TextField.swift */; }; 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */; }; 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */; }; 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */; }; @@ -276,14 +276,14 @@ 6E37AF7927E71F11004FBE25 /* 3dollar-in-my-pocket-manager.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "3dollar-in-my-pocket-manager.entitlements"; sourceTree = ""; }; 6E408D3F27EF2A8D00322365 /* HomeReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeReactor.swift; sourceTree = ""; }; 6E4455B627F3E69E00A8DECF /* ShowOtherStoreButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowOtherStoreButton.swift; sourceTree = ""; }; - 6E473B9327D85D1C00232139 /* SignupInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupInputField.swift; sourceTree = ""; }; + 6E473B9327D85D1C00232139 /* InputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputField.swift; sourceTree = ""; }; 6E473B9527D861B800232139 /* SignupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupViewController.swift; sourceTree = ""; }; 6E473B9727D8624300232139 /* BaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCoordinator.swift; sourceTree = ""; }; - 6E473B9927D86D9B00232139 /* SignupCategorySelectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCategorySelectView.swift; sourceTree = ""; }; + 6E473B9927D86D9B00232139 /* CategorySelectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategorySelectView.swift; sourceTree = ""; }; 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCategoryCollectionViewCell.swift; sourceTree = ""; }; 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCollectionViewCell.swift; sourceTree = ""; }; 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftAlignedCollectionViewFlowLayout.swift; sourceTree = ""; }; - 6E473BA327D874C500232139 /* SignupPhotoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupPhotoView.swift; sourceTree = ""; }; + 6E473BA327D874C500232139 /* PhotoUploadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoUploadView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E479461280AE42000A3D96C /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; @@ -323,7 +323,7 @@ 6E63FF6B281C19DE00EC49DE /* EditStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoView.swift; sourceTree = ""; }; 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoViewController.swift; sourceTree = ""; }; 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoCoordinator.swift; sourceTree = ""; }; - 6E64B28327D836920055354B /* SignupTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupTextField.swift; sourceTree = ""; }; + 6E64B28327D836920055354B /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageViewController.swift; sourceTree = ""; }; 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageView.swift; sourceTree = ""; }; 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoView.swift; sourceTree = ""; }; @@ -641,6 +641,10 @@ 6E473BA027D872E000232139 /* shared */ = { isa = PBXGroup; children = ( + 6E64B28327D836920055354B /* TextField.swift */, + 6E473B9327D85D1C00232139 /* InputField.swift */, + 6E473B9927D86D9B00232139 /* CategorySelectView.swift */, + 6E473BA327D874C500232139 /* PhotoUploadView.swift */, 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */, 6E479461280AE42000A3D96C /* PaddingLabel.swift */, 6E5F3DD1281D2200002282B6 /* GlobalState.swift */, @@ -697,10 +701,6 @@ isa = PBXGroup; children = ( 6E473B9B27D870AC00232139 /* cells */, - 6E64B28327D836920055354B /* SignupTextField.swift */, - 6E473B9327D85D1C00232139 /* SignupInputField.swift */, - 6E473B9927D86D9B00232139 /* SignupCategorySelectView.swift */, - 6E473BA327D874C500232139 /* SignupPhotoView.swift */, ); path = subviews; sourceTree = ""; @@ -1440,7 +1440,7 @@ 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E07F9B9284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift in Sources */, - 6E473B9427D85D1C00232139 /* SignupInputField.swift in Sources */, + 6E473B9427D85D1C00232139 /* InputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */, 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, @@ -1455,16 +1455,16 @@ 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */, 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, - 6E64B28427D836920055354B /* SignupTextField.swift in Sources */, + 6E64B28427D836920055354B /* TextField.swift in Sources */, 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */, - 6E473B9A27D86D9B00232139 /* SignupCategorySelectView.swift in Sources */, + 6E473B9A27D86D9B00232139 /* CategorySelectView.swift in Sources */, 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, 6E91A9912841E09C0090361F /* DailyStatisticsDayView.swift in Sources */, 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */, - 6E473BA427D874C500232139 /* SignupPhotoView.swift in Sources */, + 6E473BA427D874C500232139 /* PhotoUploadView.swift in Sources */, 6EC5E430282BD7E200AD571C /* ReviewCountLabel.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, ); diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index 90e7d1f..c1d50c8 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -35,13 +35,13 @@ final class SignupView: BaseView { $0.layer.shadowOpacity = 0.04 } - let ownerNameField = SignupInputField( + let ownerNameField = InputField( title: "signup_owner_name".localized, isRequired: true, placeholder: "signup_owner_name_placeholder".localized ) - let storeNameField = SignupInputField( + let storeNameField = InputField( title: "signup_store_name".localized, isRequired: true, description: "signup_store_name_description".localized, @@ -50,7 +50,7 @@ final class SignupView: BaseView { $0.maxLength = 20 } - let registerationNumberField = SignupInputField( + let registerationNumberField = InputField( title: "signup_registeration_number_title".localized, isRequired: true, description: "signup_registeration_number_description".localized, @@ -60,7 +60,7 @@ final class SignupView: BaseView { $0.format = "XXX-XX-XXXXX" } - let phoneNumberField = SignupInputField( + let phoneNumberField = InputField( title: "signup_phone_number_title".localized, isRequired: true, description: "signup_phone_number_description".localized, @@ -70,9 +70,9 @@ final class SignupView: BaseView { $0.format = "XXX-XXXX-XXXX" } - let categoryCollectionView = SignupCategorySelectView() + let categoryCollectionView = CategorySelectView() - let photoView = SignupPhotoView() + let photoView = PhotoUploadView(type: .signup) let signupButton = UIButton().then { $0.setTitle("signup_button".localized, for: .normal) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift index 654d72d..4f66e90 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift @@ -38,7 +38,7 @@ final class EditScheduleTableViewCell: UITableViewCell { $0.text = "edit_schedule_work_time".localized } - let startTimeField = SignupTextField().then { + let startTimeField = TextField().then { $0.setDatePicker() } @@ -49,7 +49,7 @@ final class EditScheduleTableViewCell: UITableViewCell { $0.textColor = .black } - let endTimeField = SignupTextField().then { + let endTimeField = TextField().then { $0.setDatePicker() } @@ -67,7 +67,7 @@ final class EditScheduleTableViewCell: UITableViewCell { $0.text = "edit_schedule_location".localized } - let locationField = SignupTextField() + let locationField = TextField() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift index b9e35ec..dfc536a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -27,7 +27,7 @@ final class EditStoreInfoView: BaseView { $0.layer.shadowOpacity = 0.04 } - let storeNameField = SignupInputField( + let storeNameField = InputField( title: "signup_store_name".localized, isRequired: true, description: "signup_store_name_description".localized, @@ -36,7 +36,7 @@ final class EditStoreInfoView: BaseView { $0.maxLength = 20 } - let phoneNumberField = SignupInputField( + let phoneNumberField = InputField( title: "signup_phone_number_title".localized, isRequired: true, description: "signup_phone_number_description".localized, @@ -46,11 +46,11 @@ final class EditStoreInfoView: BaseView { $0.format = "XXX-XXXX-XXXX" } - let categoryCollectionView = SignupCategorySelectView() + let categoryCollectionView = CategorySelectView() - let photoView = SignupPhotoView() + let photoView = PhotoUploadView(type: .edit) - let snsField = SignupInputField( + let snsField = InputField( title: "edit_store_info_sns".localized, isRequired: false ) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift b/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift similarity index 97% rename from 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift rename to 3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift index 607540f..b5bafac 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupCategorySelectView.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift @@ -3,7 +3,7 @@ import UIKit import RxSwift import RxCocoa -final class SignupCategorySelectView: BaseView { +final class CategorySelectView: BaseView { private let titleLabel = UILabel().then { $0.font = .bold(size: 14) $0.textColor = .gray100 @@ -105,7 +105,7 @@ final class SignupCategorySelectView: BaseView { } } -extension SignupCategorySelectView: UICollectionViewDelegate { +extension CategorySelectView: UICollectionViewDelegate { func collectionView( _ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift b/3dollar-in-my-pocket-manager/domains/shared/InputField.swift similarity index 92% rename from 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift rename to 3dollar-in-my-pocket-manager/domains/shared/InputField.swift index 98fd409..c11c2ca 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupInputField.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/InputField.swift @@ -3,7 +3,7 @@ import UIKit import RxSwift import RxCocoa -final class SignupInputField: BaseView { +final class InputField: BaseView { var maxLength: Int? { willSet(newValue) { self.textField.maxLength = newValue @@ -37,7 +37,7 @@ final class SignupInputField: BaseView { $0.font = .bold(size: 12) } - fileprivate let textField: SignupTextField + fileprivate let textField: TextField init( title: String, @@ -45,7 +45,7 @@ final class SignupInputField: BaseView { description: String? = nil, placeholder: String? = nil ) { - self.textField = SignupTextField(placeholder: placeholder) + self.textField = TextField(placeholder: placeholder) super.init(frame: .zero) self.titleLabel.text = title @@ -99,7 +99,7 @@ final class SignupInputField: BaseView { } } -extension Reactive where Base: SignupInputField { +extension Reactive where Base: InputField { var text: ControlProperty { return base.textField.rx.text } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift b/3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift similarity index 79% rename from 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift rename to 3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift index 2256131..41be263 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupPhotoView.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift @@ -3,7 +3,12 @@ import UIKit import RxSwift import RxCocoa -final class SignupPhotoView: BaseView { +final class PhotoUploadView: BaseView { + enum ViewType { + case signup + case edit + } + private let titleLabel = UILabel().then { $0.font = .bold(size: 14) $0.textColor = .gray100 @@ -44,6 +49,16 @@ final class SignupPhotoView: BaseView { $0.layer.shadowOpacity = 0.1 } + init(type: ViewType) { + super.init(frame: .zero) + + self.setType(type: type) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override func setup() { self.addSubViews([ self.titleLabel, @@ -102,9 +117,23 @@ final class SignupPhotoView: BaseView { func setImage(imageUrl: String?) { self.imageView.setImage(urlString: imageUrl) } + + private func setType(type: ViewType) { + switch type { + case .signup: + self.titleLabel.text = "signup_photo_title".localized + self.descriptionLabel.text = "signup_photo_description".localized + self.uploadButton.setTitle("signup_upload_photo".localized, for: .normal) + + case .edit: + self.titleLabel.text = "edit_store_info_photo_title".localized + self.descriptionLabel.text = nil + self.uploadButton.setTitle("edit_store_info_upload_photo".localized, for: .normal) + } + } } -extension Reactive where Base: SignupPhotoView { +extension Reactive where Base: PhotoUploadView { var tapUploadButton: ControlEvent { return base.uploadButton.rx.tap } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift b/3dollar-in-my-pocket-manager/domains/shared/TextField.swift similarity index 96% rename from 3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift rename to 3dollar-in-my-pocket-manager/domains/shared/TextField.swift index b21f4e1..c35a1c4 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/SignupTextField.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/TextField.swift @@ -4,7 +4,7 @@ import RxSwift import RxCocoa import Base -final class SignupTextField: BaseView { +final class TextField: BaseView { var maxLength: Int? var keyboardType: UIKeyboardType? { @@ -113,7 +113,7 @@ final class SignupTextField: BaseView { } } -extension SignupTextField: UITextFieldDelegate { +extension TextField: UITextFieldDelegate { func textField( _ textField: UITextField, shouldChangeCharactersIn range: NSRange, @@ -135,7 +135,7 @@ extension SignupTextField: UITextFieldDelegate { } } -extension Reactive where Base: SignupTextField { +extension Reactive where Base: TextField { var text: ControlProperty { return base.textField.rx.text.orEmpty } @@ -151,7 +151,7 @@ extension Reactive where Base: SignupTextField { } } -extension SignupTextField { +extension TextField { func setDatePicker() { let toolbar = UIToolbar() let doneButton = UIBarButtonItem().then { diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 90bdbf9..6a02560 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -41,7 +41,7 @@ "signup_owner_name" = "사장님 성함"; "signup_owner_name_placeholder" = "사장님 성함을 입력해주세요."; "signup_store_name" = "가게이름"; -"signup_store_name_description" = "공백 포함 최대 20자"; +"signup_store_name_description" = "최대 20자"; "signup_store_name_placeholder" = "가게 이름을 입력해 주세요."; "signup_registeration_number_title" = "사업자 등록 번호"; "signup_registeration_number_description" = "“-”를 제외한 숫자만 입력"; @@ -92,6 +92,8 @@ // Edit Store Info "edit_store_info_title" = "대표 정보 수정"; +"edit_store_info_photo_title" = "대표 사진"; +"edit_store_info_upload_photo" = "이미지 수정"; "edit_store_info_sns" = "SNS"; "edit_store_info_save" = "저장하기"; From 9723d2b8a17cd3acbfdf3788ba87571096d377d6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 14 Jun 2022 20:08:27 +0900 Subject: [PATCH 105/166] =?UTF-8?q?wip:=20=EB=82=B4=20=EA=B0=80=EA=B2=8C?= =?UTF-8?q?=20=EC=A0=95=EB=B3=B4=20=EB=95=A1=EA=B2=A8=EC=84=9C=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EA=B3=A0=EC=B9=A8=20=EC=A0=81=EC=9A=A9=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/my-store-info/MyStoreInfoReactor.swift | 15 +++++++++++ .../my/my-store-info/MyStoreInfoView.swift | 20 +++++++++++++++ .../MyStoreInfoViewController.swift | 25 +++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index 2eb67fa..640ad99 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -5,6 +5,7 @@ import RxCocoa final class MyStoreInfoReactor: BaseReactor, Reactor { enum Action { case viewDidLoad + case refresh case tapEditStoreInfo case tapEditIntroduction case tapEditMenus @@ -13,6 +14,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { enum Mutation { case setStore(Store) + case endRefreshiing case updateIntorudction(String) case pushEditStoreInfo(store: Store) case pushEditIntroduction(store: Store) @@ -30,6 +32,7 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { let pushEditIntroductionPublisher = PublishRelay() let pushEditMenuPublisher = PublishRelay() let pushEditSchedulePublisher = PublishRelay() + let endRefreshingPublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState @@ -46,6 +49,15 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .viewDidLoad: return self.fetchMyStore() + case .refresh: + return self.fetchMyStore() + .flatMap { mutation -> Observable in + return .concat([ + .just(.endRefreshiing), + .just(mutation) + ]) + } + case .tapEditStoreInfo: return .just(.pushEditStoreInfo(store: self.currentState.store)) @@ -75,6 +87,9 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .setStore(let store): newState.store = store + case .endRefreshiing: + self.endRefreshingPublisher.accept(()) + case .updateIntorudction(let introduction): newState.store.introduction = introduction diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index db810b4..7e27005 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -1,6 +1,11 @@ import UIKit +import RxSwift +import RxCocoa + final class MyStoreInfoView: BaseView { + fileprivate let refreshControl = UIRefreshControl() + let collectionView = UICollectionView( frame: .zero, collectionViewLayout: UICollectionViewLayout() @@ -115,6 +120,7 @@ final class MyStoreInfoView: BaseView { } override func setup() { + self.collectionView.refreshControl = self.refreshControl self.addSubViews([ self.collectionView ]) @@ -129,3 +135,17 @@ final class MyStoreInfoView: BaseView { } } } + +extension Reactive where Base: MyStoreInfoView { + var pullToRefresh: ControlEvent { + return ControlEvent(events: base.refreshControl.rx.controlEvent(.valueChanged) + .map { _ in () }) + + } + + var endRefreshing: Binder { + return Binder(self.base) { view, _ in + view.refreshControl.endRefreshing() + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 0ab1975..eae0d81 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -20,6 +20,7 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor $0.setNavigationBarHidden(true, animated: false) } } + private var isRefreshing = false override func loadView() { self.view = self.myStoreInfoView @@ -30,11 +31,18 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor self.setupDataSource() self.coordinator = self + self.myStoreInfoView.collectionView.delegate = self self.reactor = self.myStoreInfoReactor self.myStoreInfoReactor.action.onNext(.viewDidLoad) } override func bindEvent() { + self.myStoreInfoView.rx.pullToRefresh + .bind(onNext: { [weak self] _ in + self?.isRefreshing = true + }) + .disposed(by: self.eventDisposeBag) + self.myStoreInfoReactor.pushEditStoreInfoPublisher .asDriver(onErrorJustReturn: Store()) .drive(onNext: { [weak self] store in @@ -62,6 +70,11 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor self?.coordinator?.pushEditSchedule(store: store) }) .disposed(by: self.eventDisposeBag) + +// self.myStoreInfoReactor.endRefreshingPublisher +// .asDriver(onErrorJustReturn: ()) +// .drive(self.myStoreInfoView.rx.endRefreshing) +// .disposed(by: self.eventDisposeBag) } func bind(reactor: MyStoreInfoReactor) { @@ -74,6 +87,9 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor MyStoreInfoSectionModel(appearanceDays: $0.store.appearanceDays) ] } .distinctUntilChanged() + .do(onNext: { [weak self] _ in + self?.myStoreInfoView.rx.endRefreshing.onNext(()) + }) .asDriver(onErrorJustReturn: []) .drive(self.myStoreInfoView.collectionView.rx.items( dataSource: self.myStoreInfoCollectionViewDataSource @@ -188,3 +204,12 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor } } } + +extension MyStoreInfoViewController: UICollectionViewDelegate { + func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { + if self.isRefreshing { + self.myStoreInfoReactor.action.onNext(.refresh) + self.isRefreshing = false + } + } +} From ab452b5bfb82f72a2fbc45e1c2bee06c4f774d9d Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Tue, 14 Jun 2022 22:16:00 +0900 Subject: [PATCH 106/166] =?UTF-8?q?feat:=20=EA=B0=80=EA=B2=8C=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=ED=99=94=EB=A9=B4=20=EB=8B=B9=EA=B2=A8=EC=84=9C=20?= =?UTF-8?q?=EC=83=88=EB=A1=9C=EA=B3=A0=EC=B9=A8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/my/my-store-info/MyStoreInfoReactor.swift | 11 ----------- .../domains/my/my-store-info/MyStoreInfoView.swift | 1 - .../my/my-store-info/MyStoreInfoViewController.swift | 8 ++------ 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index 640ad99..b4918ac 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -14,7 +14,6 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { enum Mutation { case setStore(Store) - case endRefreshiing case updateIntorudction(String) case pushEditStoreInfo(store: Store) case pushEditIntroduction(store: Store) @@ -32,7 +31,6 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { let pushEditIntroductionPublisher = PublishRelay() let pushEditMenuPublisher = PublishRelay() let pushEditSchedulePublisher = PublishRelay() - let endRefreshingPublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState @@ -51,12 +49,6 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .refresh: return self.fetchMyStore() - .flatMap { mutation -> Observable in - return .concat([ - .just(.endRefreshiing), - .just(mutation) - ]) - } case .tapEditStoreInfo: return .just(.pushEditStoreInfo(store: self.currentState.store)) @@ -87,9 +79,6 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { case .setStore(let store): newState.store = store - case .endRefreshiing: - self.endRefreshingPublisher.accept(()) - case .updateIntorudction(let introduction): newState.store.introduction = introduction diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index 7e27005..243d9e2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -140,7 +140,6 @@ extension Reactive where Base: MyStoreInfoView { var pullToRefresh: ControlEvent { return ControlEvent(events: base.refreshControl.rx.controlEvent(.valueChanged) .map { _ in () }) - } var endRefreshing: Binder { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index eae0d81..ab471ca 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -69,12 +69,7 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor .drive(onNext: { [weak self] store in self?.coordinator?.pushEditSchedule(store: store) }) - .disposed(by: self.eventDisposeBag) - -// self.myStoreInfoReactor.endRefreshingPublisher -// .asDriver(onErrorJustReturn: ()) -// .drive(self.myStoreInfoView.rx.endRefreshing) -// .disposed(by: self.eventDisposeBag) + .disposed(by: self.eventDisposeBag) } func bind(reactor: MyStoreInfoReactor) { @@ -91,6 +86,7 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor self?.myStoreInfoView.rx.endRefreshing.onNext(()) }) .asDriver(onErrorJustReturn: []) + .delay(.milliseconds(500)) .drive(self.myStoreInfoView.collectionView.rx.items( dataSource: self.myStoreInfoCollectionViewDataSource )) From 8e82743ad391850753a2f13f98a9310b64c43299 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 15 Jun 2022 22:15:55 +0900 Subject: [PATCH 107/166] =?UTF-8?q?fix:=20Context=20=EA=B5=AC=ED=98=84.=20?= =?UTF-8?q?=ED=94=BC=EB=93=9C=EB=B0=B1=20=EC=A0=95=EB=B3=B4=20=EA=B0=80?= =?UTF-8?q?=EC=A7=80=EA=B3=A0=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 ++++ .../DailyStatisticsStackItemView.swift | 2 +- .../cells/TotalStatisticsTableViewCell.swift | 2 +- .../domains/shared/Context.swift | 22 ++++++++++ .../domains/splash/SplashReactor.swift | 33 +++++++++++++-- .../domains/splash/SplashViewController.swift | 4 +- .../BossStoreFeedbackCountResponse.swift | 7 +--- .../BossStoreFeedbackTypeResponse.swift | 19 +++++++++ .../models/presentation/FeedbackType.swift | 41 +++++++------------ .../models/presentation/Statistic.swift | 2 +- .../strings/en.lproj/Localizations.strings | 6 --- .../services/FeedbackService.swift | 25 +++++++++++ 12 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/shared/Context.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackTypeResponse.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index afc750c..8c28241 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -207,6 +207,8 @@ 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B927EECF5400D43E99 /* SplashCoordinator.swift */; }; 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676BC27EEE57A00D43E99 /* HomeView.swift */; }; 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */; }; + 6EFB2F08285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFB2F07285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift */; }; + 6EFB2F0B285A0BFC006E37F9 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EFB2F0A285A0BFC006E37F9 /* Context.swift */; }; CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */; }; /* End PBXBuildFile section */ @@ -416,6 +418,8 @@ 6EF676BC27EEE57A00D43E99 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 6EF8D107280AA993004D27C9 /* BossStoreAroundInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreAroundInfoResponse.swift; sourceTree = ""; }; 6EFA3A0E27F3E1E000C13906 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cintsqyfrfisoodqdbyniuyngmnr/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; + 6EFB2F07285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossStoreFeedbackTypeResponse.swift; sourceTree = ""; }; + 6EFB2F0A285A0BFC006E37F9 /* Context.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = ""; }; 90AB2FCCDB6AA6ABA4B64642 /* Pods-3dollar-in-my-pocket-manager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; path = "Target Support Files/Pods-3dollar-in-my-pocket-manager/Pods-3dollar-in-my-pocket-manager.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -594,6 +598,7 @@ 6E91A9922841ED370090361F /* BossStoreFeedbackGroupingDateResponse.swift */, 6E91A9942841EE620090361F /* CursorResponse.swift */, 6E91A9962841EF090090361F /* BossStoreFeedbackCursorResponse.swift */, + 6EFB2F07285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift */, ); path = response; sourceTree = ""; @@ -648,6 +653,7 @@ 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */, 6E479461280AE42000A3D96C /* PaddingLabel.swift */, 6E5F3DD1281D2200002282B6 /* GlobalState.swift */, + 6EFB2F0A285A0BFC006E37F9 /* Context.swift */, ); path = shared; sourceTree = ""; @@ -1403,6 +1409,7 @@ 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, 6EA53BA0284DD766007A3839 /* SettingReactor.swift in Sources */, 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */, + 6EFB2F08285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift in Sources */, 6E1F54AC27CB94EB0050BBBA /* Requestable.swift in Sources */, 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */, 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, @@ -1451,6 +1458,7 @@ 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */, 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */, 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */, + 6EFB2F0B285A0BFC006E37F9 /* Context.swift in Sources */, 6E5E14A42830F6E900B1F450 /* FeedbackType.swift in Sources */, 6E5DCE6927FDB0B900CA58EE /* Addition.swift in Sources */, 6E37AF7827E715C1004FBE25 /* UIViewControllerExtensions.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift index 11ae4b8..889adf8 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift @@ -49,7 +49,7 @@ final class DailyStatisticsStackItemView: BaseView { } func bind(statistic: Statistic) { - self.titleLabel.text = statistic.type.title + self.titleLabel.text = "\(statistic.type.emoji) \(statistic.type.description)" self.countLabel.text = "\(statistic.count)개" } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift index 8f2c8f5..131af9f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift @@ -72,7 +72,7 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { } func bind(statistics: Statistic, isTopRate: Bool) { - self.titleLabel.text = statistics.type.title + self.titleLabel.text = "\(statistics.type.emoji) \(statistics.type.description)" self.countLabel.text = "\(statistics.count)개" self.progressView.progress = Float(statistics.ratio) self.setProgressBar(isTopRate: isTopRate) diff --git a/3dollar-in-my-pocket-manager/domains/shared/Context.swift b/3dollar-in-my-pocket-manager/domains/shared/Context.swift new file mode 100644 index 0000000..77f3f19 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/shared/Context.swift @@ -0,0 +1,22 @@ +// +// Context.swift +// 3dollar-in-my-pocket-manager +// +// Created by Hyun Sik Yoo on 2022/06/15. +// + +import Foundation + +final class Context { + static let shared = Context() + + var feedbackTypes: [FeedbackType] = [] + + func getFeedbackType(by type: String) -> FeedbackType { + if let feedbackType = self.feedbackTypes.first(where: { $0.feedbackType == type }) { + return feedbackType + } else { + return FeedbackType() + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift index 8060027..b68e841 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift @@ -11,6 +11,7 @@ final class SplashReactor: BaseReactor, Reactor { case goToSignin case goToMain case goToWaiting + case setFeedbackTypes([FeedbackType]) case showErrorAlert(Error) } @@ -23,21 +24,37 @@ final class SplashReactor: BaseReactor, Reactor { let goToMainPublisher = PublishRelay() let goToWaitingPublisher = PublishRelay() private let authService: AuthServiceType + private let feedbackService: FeedbackServiceType private let userDefaultsUtils: UserDefaultsUtils + private let context: Context - init(authService: AuthServiceType, userDefaultsUtils: UserDefaultsUtils) { + init( + authService: AuthServiceType, + feedbackService: FeedbackServiceType, + userDefaultsUtils: UserDefaultsUtils, + context: Context + ) { self.authService = authService + self.feedbackService = feedbackService self.userDefaultsUtils = userDefaultsUtils + self.context = context } func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: if self.userDefaultsUtils.userToken.isEmpty { - return .just(.goToSignin) + return .merge([ + self.fetchFeedbackTypes(), + .just(.goToSignin) + ]) + } else { - return self.fetchUserInfo() + return .merge([ + self.fetchFeedbackTypes(), + self.fetchUserInfo() + ]) } } } @@ -53,6 +70,9 @@ final class SplashReactor: BaseReactor, Reactor { case .goToWaiting: self.goToWaitingPublisher.accept(()) + case .setFeedbackTypes(let feedbackTypes): + self.context.feedbackTypes = feedbackTypes + case .showErrorAlert(let error): self.showErrorAlert.accept(error) } @@ -83,4 +103,11 @@ final class SplashReactor: BaseReactor, Reactor { } } } + + private func fetchFeedbackTypes() -> Observable { + return self.feedbackService.fetchFeedbackTypes() + .map { $0.map(FeedbackType.init(response:)) } + .map { .setFeedbackTypes($0) } + .catch { .just(.showErrorAlert($0)) } + } } diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift index c49be2c..8c92b9c 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift @@ -6,7 +6,9 @@ final class SplashViewController: BaseViewController, View, SplashCoordinator { private let splashView = SplashView() private let splashReactor = SplashReactor( authService: AuthService(), - userDefaultsUtils: UserDefaultsUtils() + feedbackService: FeedbackService(), + userDefaultsUtils: UserDefaultsUtils(), + context: Context.shared ) private weak var coordinator: SplashCoordinator? diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift index e5fad38..7d979a1 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackCountResponse.swift @@ -1,6 +1,6 @@ struct BossStoreFeedbackCountResponse: Decodable { let count: Int - let feedbackType: FeedbackType + let feedbackType: String let ratio: Double enum CodingKeys: String, CodingKey { @@ -13,10 +13,7 @@ struct BossStoreFeedbackCountResponse: Decodable { let values = try decoder.container(keyedBy: CodingKeys.self) self.count = try values.decodeIfPresent(Int.self, forKey: .count) ?? 0 - self.feedbackType = try values.decodeIfPresent( - FeedbackType.self, - forKey: .feedbackType - ) ?? .bossIsKind + self.feedbackType = try values.decodeIfPresent(String.self, forKey: .feedbackType) ?? "" self.ratio = try values.decodeIfPresent(Double.self, forKey: .ratio) ?? 0 } } diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackTypeResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackTypeResponse.swift new file mode 100644 index 0000000..e0a42d8 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreFeedbackTypeResponse.swift @@ -0,0 +1,19 @@ +struct BossStoreFeedbackTypeResponse: Decodable { + let description: String + let emoji: String + let feedbackType: String + + enum CodingKeys: String, CodingKey { + case description + case emoji + case feedbackType + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.description = try values.decodeIfPresent(String.self, forKey: .description) ?? "" + self.emoji = try values.decodeIfPresent(String.self, forKey: .emoji) ?? "" + self.feedbackType = try values.decodeIfPresent(String.self, forKey: .feedbackType) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift b/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift index 9768bc7..87b2c84 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/FeedbackType.swift @@ -1,32 +1,19 @@ import Foundation -enum FeedbackType: String, Decodable { - case bossIsKind = "BOSS_IS_KIND" - case easyToEat = "EASY_TO_EAT" - case foodIsDelecious = "FOOD_IS_DELICIOUS" - case platingIsBeautiful = "PLATING_IS_BEAUTIFUL" - case priceIsCheap = "PRICE_IS_CHEAP" - case thereArePlacesToEatAround = "THERE_ARE_PLACES_TO_EAT_AROUND" +struct FeedbackType: Equatable { + let description: String + let emoji: String + let feedbackType: String - var title: String { - switch self { - case .bossIsKind: - return "statistics_boss_is_kind".localized - - case .easyToEat: - return "statistics_easy_to_eat".localized - - case .foodIsDelecious: - return "statistics_food_is_delecious".localized - - case .platingIsBeautiful: - return "statistics_plating_is_beautiful".localized - - case .priceIsCheap: - return "statistics_price_is_cheap".localized - - case .thereArePlacesToEatAround: - return "statistics_there_are_places_to_eat_around".localized - } + init(response: BossStoreFeedbackTypeResponse) { + self.description = response.description + self.emoji = response.emoji + self.feedbackType = response.feedbackType + } + + init() { + self.description = "" + self.emoji = "" + self.feedbackType = "" } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift index fc96ba6..a4c6aa1 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift @@ -4,7 +4,7 @@ struct Statistic: Equatable { let ratio: Double init(response: BossStoreFeedbackCountResponse) { - self.type = response.feedbackType + self.type = Context.shared.getFeedbackType(by: response.feedbackType) self.count = response.count self.ratio = response.ratio } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 6a02560..ed96f05 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -122,12 +122,6 @@ "statistics_filter_total" = "전체"; "statistics_filter_day" = "일별"; "statistics_review_count" = "리뷰가 사장님께 도착했어요 :)"; -"statistics_boss_is_kind" = "🙏 사장님이 친절해요"; -"statistics_easy_to_eat" = "🚀 먹기 간편해요"; -"statistics_food_is_delecious" = "🍕 음식이 맛있어요"; -"statistics_plating_is_beautiful" = "🎀 플레이팅이 예뻐요"; -"statistics_price_is_cheap" = "🌈 가격이 저렴해요"; -"statistics_there_are_places_to_eat_around" = "🛋 주변에 먹을 곳이 있어요"; // Seting "setting_title" = "설정"; diff --git a/3dollar-in-my-pocket-manager/services/FeedbackService.swift b/3dollar-in-my-pocket-manager/services/FeedbackService.swift index dbb06b8..5f8ad2a 100644 --- a/3dollar-in-my-pocket-manager/services/FeedbackService.swift +++ b/3dollar-in-my-pocket-manager/services/FeedbackService.swift @@ -5,6 +5,8 @@ import Alamofire import Base protocol FeedbackServiceType { + func fetchFeedbackTypes() -> Observable<[BossStoreFeedbackTypeResponse]> + func fetchTotalStatistics(storeId: String) -> Observable<[BossStoreFeedbackCountResponse]> func fetchDailyStatistics( @@ -15,6 +17,29 @@ protocol FeedbackServiceType { } struct FeedbackService: FeedbackServiceType { + func fetchFeedbackTypes() -> Observable<[BossStoreFeedbackTypeResponse]> { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/feedback/types" + let headers = HTTPUtils.jsonHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + headers: headers + ).responseDecodable( + of: ResponseContainer<[BossStoreFeedbackTypeResponse]>.self + ) { response in + if response.isSuccess() { + observer.processValue(response: response) + } else { + observer.processHTTPError(response: response) + } + } + + return Disposables.create() + } + } + func fetchTotalStatistics(storeId: String) -> Observable<[BossStoreFeedbackCountResponse]> { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(storeId)/feedbacks/full" From d18f30001f5b77c8ababab1698814560942abf6c Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 15 Jun 2022 22:40:43 +0900 Subject: [PATCH 108/166] =?UTF-8?q?fix:=20=ED=86=B5=EA=B3=84=20=ED=83=AD?= =?UTF-8?q?=20=EB=95=A1=EA=B2=A8=EC=84=9C=20=EC=83=88=EB=A1=9C=EA=B3=A0?= =?UTF-8?q?=EC=B9=A8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MyStoreInfoViewController.swift | 2 +- .../my/statistics/StatisticsReactor.swift | 11 +++++- .../my/statistics/StatisticsView.swift | 21 ++++++++++- .../statistics/StatisticsViewController.swift | 37 +++++++++++++++++-- .../DailyStatisticsReactor.swift | 11 ++++++ .../DailyStatisticsViewController.swift | 5 +++ .../TotalStatisticsReactor.swift | 4 ++ .../TotalStatisticsViewController.swift | 5 +++ 8 files changed, 89 insertions(+), 7 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index ab471ca..a77d4ed 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -12,6 +12,7 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor private weak var coordinator: MyStoreInfoCoordinator? private var myStoreInfoCollectionViewDataSource : RxCollectionViewSectionedReloadDataSource! + private var isRefreshing = false static func instance() -> UINavigationController { let viewController = MyStoreInfoViewController(nibName: nil, bundle: nil) @@ -20,7 +21,6 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor $0.setNavigationBarHidden(true, animated: false) } } - private var isRefreshing = false override func loadView() { self.view = self.myStoreInfoView diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift index 44f9704..384903c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift @@ -1,23 +1,26 @@ import ReactorKit +import RxRelay final class StatisticsReactor: Reactor { enum Action { case updateTotalReviewCount(Int) + case refresh case tapFilterButton(StatisticsFilterButton.FilterType) } enum Mutation { case setTotalReviewCount(Int) case setTab(StatisticsFilterButton.FilterType) + case refresh(StatisticsFilterButton.FilterType) } struct State { var totalReviewCount: Int var selectedFilter: StatisticsFilterButton.FilterType - } let initialState: State + let refreshPublisher = PublishRelay() init(state: State = State( totalReviewCount: 0, @@ -33,6 +36,9 @@ final class StatisticsReactor: Reactor { case .tapFilterButton(let filterType): return .just(.setTab(filterType)) + + case .refresh: + return .just(.refresh(self.currentState.selectedFilter)) } } @@ -45,6 +51,9 @@ final class StatisticsReactor: Reactor { case .setTab(let filterType): newState.selectedFilter = filterType + + case .refresh(let filterType): + self.refreshPublisher.accept(filterType) } return newState diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift index 2dd6e6e..7180aac 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift @@ -1,7 +1,12 @@ import UIKit +import RxSwift +import RxCocoa + final class StatisticsView: BaseView { - private let scrollView = UIScrollView().then { + fileprivate let refreshControl = UIRefreshControl() + + let scrollView = UIScrollView().then { $0.backgroundColor = .gray0 } @@ -14,6 +19,7 @@ final class StatisticsView: BaseView { let containerView = UIView() override func setup() { + self.scrollView.refreshControl = self.refreshControl self.scrollViewContainerView.addSubViews([ self.reviewCountLabel, self.filterButton, @@ -64,3 +70,16 @@ final class StatisticsView: BaseView { } } } + +extension Reactive where Base: StatisticsView { + var pullToRefresh: ControlEvent { + return ControlEvent(events: base.refreshControl.rx.controlEvent(.valueChanged) + .map { _ in () }) + } + + var endRefreshing: Binder { + return Binder(self.base) { view, _ in + view.refreshControl.endRefreshing() + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift index 0258238..bb8d8aa 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -5,20 +5,17 @@ import ReactorKit final class StatisticsViewController: BaseViewController, View { private let statisticsView = StatisticsView() private let statisticsReactor = StatisticsReactor() - private let pageViewController = UIPageViewController( transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil ) - private let totalStatisticsViewController = TotalStatisticsViewController.instance() - private let dailyStatisticsViewController = DailyStatisticsViewController.instance() - private var pageViewControllers: [UIViewController] = [] + private var isRefreshing = false override var preferredStatusBarStyle: UIStatusBarStyle { return .darkContent @@ -36,9 +33,32 @@ final class StatisticsViewController: BaseViewController, View { super.viewDidLoad() self.setupPageViewController() + self.statisticsView.scrollView.delegate = self self.reactor = self.statisticsReactor } + override func bindEvent() { + self.statisticsView.rx.pullToRefresh + .bind(onNext: { [weak self] in + self?.isRefreshing = true + }) + .disposed(by: self.eventDisposeBag) + + self.statisticsReactor.refreshPublisher + .asDriver(onErrorJustReturn: .total) + .drive(onNext: { [weak self] filterType in + switch filterType { + case .total: + self?.totalStatisticsViewController.refreshData() + + case .day: + self?.dailyStatisticsViewController.refreshData() + } + self?.statisticsView.rx.endRefreshing.onNext(()) + }) + .disposed(by: self.eventDisposeBag) + } + func bind(reactor: StatisticsReactor) { // BindAction self.statisticsView.filterButton.rx.tap @@ -133,3 +153,12 @@ extension StatisticsViewController: TotalStatisticsDelegate { self.statisticsReactor.action.onNext(.updateTotalReviewCount(count)) } } + +extension StatisticsViewController: UIScrollViewDelegate { + func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { + if self.isRefreshing { + self.statisticsReactor.action.onNext(.refresh) + self.isRefreshing = false + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift index 6ab7ed5..b2289bf 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift @@ -7,11 +7,13 @@ import RxRelay final class DailyStatisticsReactor: BaseReactor, Reactor { enum Action { case viewDidLoad + case refresh case viewWillAppear case willDisplayCell(index: Int) } enum Mutation { + case clearStatisticGroups case appendStatisticGroups([StatisticGroup]) case updateTableViewHeight([StatisticGroup]) case showErrorAlert(Error) @@ -43,6 +45,12 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { case .viewDidLoad: return self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) + case .refresh: + return .concat([ + .just(.clearStatisticGroups), + self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) + ]) + case .viewWillAppear: return .just(.updateTableViewHeight(self.currentState.statisticGroups)) @@ -57,6 +65,9 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { var newState = state switch mutation { + case .clearStatisticGroups: + newState.statisticGroups = [] + case .appendStatisticGroups(let statisticGroup): newState.statisticGroups.append(contentsOf: statisticGroup) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift index 70a2889..5d69238 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift @@ -75,6 +75,7 @@ final class DailyStatisticsViewController: BaseViewController, View, DailyStatis ) } }) + .delay(.milliseconds(500)) .drive(self.dailyStatisticsView.tableView.rx.items( cellIdentifier: DailyStatisticsTableViewCell.registerId, cellType: DailyStatisticsTableViewCell.self @@ -83,4 +84,8 @@ final class DailyStatisticsViewController: BaseViewController, View, DailyStatis } .disposed(by: self.disposeBag) } + + func refreshData() { + self.dailyStatisticsReactor.action.onNext(.refresh) + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index cb21a51..4148144 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -5,6 +5,7 @@ import RxCocoa final class TotalStatisticsReactor: BaseReactor, Reactor { enum Action { case viewDidLoad + case refresh case viewWillAppear } @@ -38,6 +39,9 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { case .viewDidLoad: return self.fetchStatistics() + case .refresh: + return self.fetchStatistics() + case .viewWillAppear: return .just(.updateTableViewHeight(self.currentState.statistics)) } diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index ee92802..1100fa9 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -76,6 +76,7 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis ) } }) + .delay(.milliseconds(500)) .drive(self.totalStatisticsView.tableView.rx.items( cellIdentifier: TotalStatisticsTableViewCell.registerId, cellType: TotalStatisticsTableViewCell.self @@ -93,4 +94,8 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis }) .disposed(by: self.disposeBag) } + + func refreshData() { + self.totalStatisticsReactor.action.onNext(.refresh) + } } From 2a55ea7d113bf6dcb1683b8c21a273b16747fb54 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 15 Jun 2022 22:53:10 +0900 Subject: [PATCH 109/166] =?UTF-8?q?fix:=20=EC=84=A4=EC=A0=95=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=95=A0=ED=94=8C=20=EB=A1=9C=EA=B3=A0=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 --- .../ic_apple_logo.imageset/Contents.json | 12 ++++++++++++ .../ic_apple_logo.imageset/ic_logo_apple.pdf | Bin 0 -> 48861 bytes .../models/presentation/SocialType.swift | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/ic_logo_apple.pdf diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/Contents.json new file mode 100644 index 0000000..4159733 --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_logo_apple.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/ic_logo_apple.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple_logo.imageset/ic_logo_apple.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fae2fac9b6eb20e07c991500551ade719725a6c2 GIT binary patch literal 48861 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 Date: Wed, 15 Jun 2022 23:19:36 +0900 Subject: [PATCH 110/166] =?UTF-8?q?feat:=20=EC=8A=B9=EC=9D=B8=20=EB=8C=80?= =?UTF-8?q?=EA=B8=B0=EC=A4=91=20=ED=99=94=EB=A9=B4=EC=97=90=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=95=84=EC=9B=83=20=EA=B8=B0=EB=8A=A5=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 --- .../waiting/WaitingCoordinator.swift | 15 +++++- .../membership/waiting/WaitingReactor.swift | 47 ++++++++++++++++++- .../membership/waiting/WaitingView.swift | 16 ++++++- .../waiting/WaitingViewController.swift | 32 ++++++++++++- .../strings/en.lproj/Localizations.strings | 1 + 5 files changed, 105 insertions(+), 6 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift index 0829887..81f38be 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingCoordinator.swift @@ -3,13 +3,15 @@ import MessageUI protocol WaitingCoordinator: AnyObject, BaseCoordinator { func showMailComposer(message: String) + + func goToSignin() } extension WaitingCoordinator where Self: WaitingViewController { func showMailComposer(message: String) { guard MFMailComposeViewController.canSendMail() else { return} let composer = MFMailComposeViewController().then { - $0.mailComposeDelegate = self as? MFMailComposeViewControllerDelegate + $0.mailComposeDelegate = self $0.setToRecipients(["3dollarinmypocket@gmail.com"]) $0.setSubject("가슴속 3천원 사장님 문의") $0.setMessageBody(message, isHTML: false) @@ -18,5 +20,14 @@ extension WaitingCoordinator where Self: WaitingViewController { self.present(composer, animated: true, completion: nil) } - + func goToSignin() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + + sceneDelegate.goToSignin() + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift index f1393ad..7ec2618 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift @@ -5,13 +5,17 @@ import ReactorKit import RxSwift import RxCocoa -final class WaitingReactor: Reactor { +final class WaitingReactor: BaseReactor, Reactor { enum Action { case tapQuestionButton + case tapLogout } enum Mutation { case presentMailComposer(message: String) + case goToSignin + case showLoading(isShow: Bool) + case showErrorAlert(Error) } struct State { @@ -20,6 +24,17 @@ final class WaitingReactor: Reactor { let initialState = State() let presentMailComposerPublisher = PublishRelay() + let goToSigninPublisher = PublishRelay() + private let authService: AuthServiceType + private let userDefaults: UserDefaultsUtils + + init( + authService: AuthServiceType, + userDefaults: UserDefaultsUtils + ) { + self.authService = authService + self.userDefaults = userDefaults + } func mutate(action: Action) -> Observable { switch action { @@ -27,6 +42,13 @@ final class WaitingReactor: Reactor { let message = "\n\n\n\n----------\n앱 버전: \(self.getAppVersion())\nOS: ios \(self.getiOSVersion())\n" return .just(.presentMailComposer(message: message)) + + case .tapLogout: + return .concat([ + .just(.showLoading(isShow: true)), + self.logout(), + .just(.showLoading(isShow: false)) + ]) } } @@ -34,6 +56,15 @@ final class WaitingReactor: Reactor { switch mutation { case .presentMailComposer(let message): self.presentMailComposerPublisher.accept(message) + + case .goToSignin: + self.goToSigninPublisher.accept(()) + + case .showLoading(let isShow): + self.showLoadginPublisher.accept(isShow) + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) } return state } @@ -45,4 +76,18 @@ final class WaitingReactor: Reactor { private func getAppVersion() -> String { return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "" } + + private func logout() -> Observable { + return self.authService.logout() + .do(onNext: { [weak self] _ in + self?.userDefaults.clear() + }) + .map { _ in .goToSignin } + .catch { + .merge([ + .just(.showErrorAlert($0)), + .just(.showLoading(isShow: false)) + ]) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift index 1eb04b2..4123bae 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift @@ -22,12 +22,19 @@ final class WaitingView: BaseView { $0.layer.cornerRadius = 8 } + let logoutButton = UIButton().then { + $0.setTitle("waiting_logout".localized, for: .normal) + $0.setTitleColor(.red, for: .normal) + $0.titleLabel?.font = .regular(size: 12) + } + override func setup() { self.backgroundColor = .white self.addSubViews([ self.titleLabel, self.descriptionLabel, - self.questionButton + self.questionButton, + self.logoutButton ]) } @@ -45,8 +52,13 @@ final class WaitingView: BaseView { self.questionButton.snp.makeConstraints { make in make.left.equalToSuperview().offset(24) make.right.equalToSuperview().offset(-24) - make.bottom.equalTo(self.safeAreaLayoutGuide).offset(-50) + make.bottom.equalTo(self.logoutButton.snp.top).offset(-20) make.height.equalTo(48) } + + self.logoutButton.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.bottom.equalTo(self.safeAreaLayoutGuide).offset(-16) + } } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift index 680d381..9f57c2e 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift @@ -5,7 +5,10 @@ import ReactorKit final class WaitingViewController: BaseViewController, View, WaitingCoordinator { private let waitingView = WaitingView() - private let waitingReactor = WaitingReactor() + private let waitingReactor = WaitingReactor( + authService: AuthService(), + userDefaults: UserDefaultsUtils() + ) private weak var coordinator: WaitingCoordinator? static func instance() -> WaitingViewController { @@ -30,6 +33,27 @@ final class WaitingViewController: BaseViewController, View, WaitingCoordinator self?.coordinator?.showMailComposer(message: message) }) .disposed(by: self.eventDisposeBag) + + self.waitingReactor.goToSigninPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToSignin() + }) + .disposed(by: self.eventDisposeBag) + + self.waitingReactor.showLoadginPublisher + .asDriver(onErrorJustReturn: false) + .drive(onNext: { [weak self] isShow in + self?.coordinator?.showLoading(isShow: isShow) + }) + .disposed(by: self.eventDisposeBag) + + self.waitingReactor.showErrorAlert + .asDriver(onErrorJustReturn: BaseError.unknown) + .drive(onNext: { [weak self] error in + self?.coordinator?.showErrorAlert(error: error) + }) + .disposed(by: self.eventDisposeBag) } func bind(reactor: WaitingReactor) { @@ -38,6 +62,12 @@ final class WaitingViewController: BaseViewController, View, WaitingCoordinator .map { Reactor.Action.tapQuestionButton } .bind(to: reactor.action) .disposed(by: self.disposeBag) + + self.waitingView.logoutButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapLogout } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index ed96f05..f88532b 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -69,6 +69,7 @@ "waiting_title" = "승인 대기 중입니다."; "waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; "waiting_question_button" = "이메일로 문의하기"; +"waiting_logout" = "로그아웃"; // My Page "my_page_store_info" = "가게정보"; From b19dfa7c8f00561d86fac40a43ba5b23089ea603 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Thu, 16 Jun 2022 16:29:01 +0900 Subject: [PATCH 111/166] =?UTF-8?q?fix:=20=EC=95=A0=ED=94=8C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=ED=83=80=EC=9E=84=EC=95=84=EC=9B=83=207?= =?UTF-8?q?=EC=B4=88=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 --- 3dollar-in-my-pocket-manager/utils/HTTPUtils.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift index 0026836..eb140f2 100644 --- a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -14,7 +14,7 @@ struct HTTPUtils { static let loginSession: Session = { let configuration = URLSessionConfiguration.default - configuration.timeoutIntervalForRequest = 6 + configuration.timeoutIntervalForRequest = 7 return Session(configuration: configuration) }() From e82933fe1d98ac2074735f7b9a9d3038891bbe99 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Thu, 16 Jun 2022 17:37:43 +0900 Subject: [PATCH 112/166] =?UTF-8?q?fix:=20signup=20API=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=20=EC=8B=9C,=20=EC=84=9C=EB=B2=84=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=96=A8=EA=B6=88=EC=A3=BC=EB=8A=94=20error=20message=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/ObserverExtensions.swift | 24 ++++++++++++++++--- .../services/AuthService.swift | 9 +++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift index 6f729d2..a4695d0 100644 --- a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift @@ -4,9 +4,7 @@ import Base extension AnyObserver { func processHTTPError(response: AFDataResponse) { - if let errorResponse = response.value as? ResponseContainer { - self.onError(BaseError.custom(errorResponse.message)) - } else if let statusCode = response.response?.statusCode { + if let statusCode = response.response?.statusCode { if let httpError = HTTPError(rawValue: statusCode) { self.onError(httpError) } else { @@ -32,4 +30,24 @@ extension AnyObserver { self.onError(BaseError.nilValue) } } + + func processValue(type: T.Type, response: AFDataResponse) { + if let data = response.value { + if let responseContainer: ResponseContainer = JsonUtils.decode(data: data) { + self.onNext(responseContainer.data as! Element) + self.onCompleted() + } else { + self.onError(BaseError.nilValue) + } + } + } + + func processAPIError(response: AFDataResponse) { + if let value = response.value, + let errorContainer: ResponseContainer = JsonUtils.decode(data: value) { + self.onError(BaseError.custom(errorContainer.message)) + } else { + self.processHTTPError(response: response) + } + } } diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 6ba4456..2d7b1ae 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -99,13 +99,14 @@ struct AuthService: AuthServiceType { parameters: parameters, encoding: JSONEncoding.default, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: LoginResponse.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } From 743abcc97619076b736be7fe0f16e05ab6f589d9 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Thu, 16 Jun 2022 18:52:10 +0900 Subject: [PATCH 113/166] =?UTF-8?q?fix:=20=EC=9D=BC=EB=B3=84=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0,=20=EB=8B=A4=EC=9D=8C=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=ED=98=B8=EC=B6=9C=ED=95=98=EB=8F=84=EB=A1=9D=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 --- .../DailyStatisticsReactor.swift | 20 ++++++++++++++++++- .../services/FeedbackService.swift | 13 ++++++------ .../services/StoreService.swift | 8 ++++---- .../utils/HTTPUtils.swift | 2 +- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift index b2289bf..cf7fb16 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift @@ -46,6 +46,7 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { return self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) case .refresh: + self.resetDate() return .concat([ .just(.clearStatisticGroups), self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) @@ -104,7 +105,24 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { self.endDate = nil } }) - .map { .appendStatisticGroups($0.contents.map(StatisticGroup.init(response:))) } + .flatMap { [weak self] response -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + if response.contents.isEmpty { + return self.fetchStatistics( + startDate: self.startDate, + endDate: self.endDate + ) + } else { + let statisticGroup = response.contents.map(StatisticGroup.init(response:)) + + return .just(.appendStatisticGroups(statisticGroup)) + } + } .catch { .just(.showErrorAlert($0)) } } + + private func resetDate() { + self.endDate = Date() + self.startDate = Date().addWeek(week: -1) + } } diff --git a/3dollar-in-my-pocket-manager/services/FeedbackService.swift b/3dollar-in-my-pocket-manager/services/FeedbackService.swift index 5f8ad2a..9731961 100644 --- a/3dollar-in-my-pocket-manager/services/FeedbackService.swift +++ b/3dollar-in-my-pocket-manager/services/FeedbackService.swift @@ -81,15 +81,16 @@ struct FeedbackService: FeedbackServiceType { method: .get, parameters: paramerters, headers: headers - ).responseDecodable( - of: ResponseContainer.self - ) { response in + ).responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue( + type: BossStoreFeedbackCursorResponse.self, + response: response + ) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 207e41f..6d385ad 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -128,13 +128,13 @@ struct StoreService: StoreServiceType { parameters: parameters, encoder: JSONParameterEncoder.default, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ).responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: String.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift index eb140f2..0026836 100644 --- a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -14,7 +14,7 @@ struct HTTPUtils { static let loginSession: Session = { let configuration = URLSessionConfiguration.default - configuration.timeoutIntervalForRequest = 7 + configuration.timeoutIntervalForRequest = 6 return Session(configuration: configuration) }() From fd0f1ae3510109fc1b2247f69eb8c84a234cf4ae Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Thu, 16 Jun 2022 18:58:38 +0900 Subject: [PATCH 114/166] =?UTF-8?q?fix:=20=EB=8C=80=ED=91=9C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=88=98=EC=A0=95=20->=20sns=20placeholder=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/my-store-info/edit-store-info/EditStoreInfoView.swift | 3 ++- .../resources/strings/en.lproj/Localizations.strings | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift index dfc536a..9efcfc8 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -52,7 +52,8 @@ final class EditStoreInfoView: BaseView { let snsField = InputField( title: "edit_store_info_sns".localized, - isRequired: false + isRequired: false, + placeholder: "edit_introduction_sns".localized ) let saveButton = UIButton().then { diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index f88532b..5c95a9c 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -89,6 +89,7 @@ "edit_introduction_title" = "사장님 한마디 수정"; "edit_introduction_main_description" = "손님들에게 하고 싶은 말을\n적어주세요!"; "edit_introduction_sub_description" = "ex) 오전에 오시면 서비스가 있습니다 😋"; +"edit_introduction_sns" = "SNS주소를 적어주세요."; "edit_introdution_edit_button" = "저장하기"; // Edit Store Info From f2500b0cfacc25072bc5a994c6acea26356d0499 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 11:19:24 +0900 Subject: [PATCH 115/166] =?UTF-8?q?fix:=20Statistic=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../total-statistics/TotalStatisticsReactor.swift | 2 +- .../models/presentation/Statistic.swift | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index 4148144..0050dd7 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -71,7 +71,7 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { let storeId = self.userDefaults.storeId return self.feedbackService.fetchTotalStatistics(storeId: storeId) - .map { $0.map(Statistic.init(response:)) } + .map { $0.map(Statistic.init(response:)).sorted() } .flatMap { statistics -> Observable in let reviewTotalCount = statistics.map { $0.count }.reduce(0, +) diff --git a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift index a4c6aa1..43717e6 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Statistic.swift @@ -1,4 +1,6 @@ -struct Statistic: Equatable { +struct Statistic: Equatable, Comparable { + + let type: FeedbackType let count: Int let ratio: Double @@ -8,4 +10,8 @@ struct Statistic: Equatable { self.count = response.count self.ratio = response.ratio } + + static func < (lhs: Statistic, rhs: Statistic) -> Bool { + return lhs.count > rhs.count + } } From cccc1ef56a1c52ece7ce4bbbe2015bb67b9ca819 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 18 Jun 2022 13:44:10 +0900 Subject: [PATCH 116/166] =?UTF-8?q?feat:=20=EB=A9=94=EB=89=B4=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20empty=20cell=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../img_empty_menu.imageset/Contents.json | 12 +++++ .../img_empty_menu.imageset/Group 787.pdf | Bin 0 -> 41124 bytes .../my/my-store-info/MyStoreInfoView.swift | 10 +++- .../MyStoreInfoViewController.swift | 8 +++ .../cells/MyStoreInfoMenuEmptyCell.swift | 50 ++++++++++++++++++ .../MyStoreInfoSectionModel.swift | 5 +- .../strings/en.lproj/Localizations.strings | 1 + 8 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Group 787.pdf create mode 100644 3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8c28241..66d247d 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -62,6 +62,7 @@ 6E4C8BD228351E33005D9D9B /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */; }; 6E4C8BD428351E33005D9D9B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */; }; 6E4C8BD628351E33005D9D9B /* FirebaseRemoteConfigSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */; }; + 6E5678C1285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */; }; @@ -289,6 +290,7 @@ 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E479461280AE42000A3D96C /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoMenuEmptyCell.swift; sourceTree = ""; }; 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapService.swift; sourceTree = ""; }; 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaverMapResponse.swift; sourceTree = ""; }; 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReverseGeoLocation.swift; sourceTree = ""; }; @@ -755,6 +757,7 @@ 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */, 6E7DFAF6284C2ECE006F0078 /* MyStoreInfoMenuCell.swift */, 6E07F9B8284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift */, + 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */, ); path = cells; sourceTree = ""; @@ -1414,6 +1417,7 @@ 6E5E14A62830F89D00B1F450 /* BossStoreFeedbackCountResponse.swift in Sources */, 6E5DCE6C27FDC91100CA58EE /* BossStoreInfoResponse.swift in Sources */, 6E8D013E284341CB00FAB49E /* EditMenuTableFooterView.swift in Sources */, + 6E5678C1285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift in Sources */, 6E5F3DD2281D2200002282B6 /* GlobalState.swift in Sources */, 6E7A49D227D891AA00E6653C /* SignupReactor.swift in Sources */, 6E5DCE7827FDCD7800CA58EE /* BossStoreMenuResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Contents.json new file mode 100644 index 0000000..575647e --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Group 787.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Group 787.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/img_empty_menu.imageset/Group 787.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e99b136556f54a1c75ae915a9e1bc192c390af8b GIT binary patch literal 41124 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index 243d9e2..88c7b8d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -52,10 +52,14 @@ final class MyStoreInfoView: BaseView { widthDimension: .fractionalWidth(1), heightDimension: .absolute(MyStoreInfoMenuMoreCell.height) )) + let emptyItem = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(MyStoreInfoMenuEmptyCell.height) + )) let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init( widthDimension: .fractionalWidth(1), heightDimension: .estimated(MyStoreInfoMenuCell.height) - ), subitems: [menuItem, moreItem]) + ), subitems: [menuItem, moreItem, emptyItem]) let section = NSCollectionLayoutSection(group: group) section.boundarySupplementaryItems = [.init( @@ -108,6 +112,10 @@ final class MyStoreInfoView: BaseView { MyStoreInfoMenuMoreCell.self, forCellWithReuseIdentifier: MyStoreInfoMenuMoreCell.registerId ) + $0.register( + MyStoreInfoMenuEmptyCell.self, + forCellWithReuseIdentifier: MyStoreInfoMenuEmptyCell.registerId + ) $0.register( MyStoreInfoWorkDayCell.self, forCellWithReuseIdentifier: MyStoreInfoWorkDayCell.registerId diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index a77d4ed..f2c29a2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -138,6 +138,14 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor cell.bind(menus: menus) return cell + case .emptyMenu: + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: MyStoreInfoMenuEmptyCell.registerId, + for: indexPath + ) as? MyStoreInfoMenuEmptyCell else { return BaseCollectionViewCell() } + + return cell + case .appearanceDay(let appearanceDay): guard let cell = collectionView.dequeueReusableCell( withReuseIdentifier: MyStoreInfoWorkDayCell.registerId, diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift new file mode 100644 index 0000000..38de3c4 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift @@ -0,0 +1,50 @@ +import UIKit + +final class MyStoreInfoMenuEmptyCell: BaseCollectionViewCell { + static let registerId = "\(MyStoreInfoMenuEmptyCell.self)" + static let height: CGFloat = 52 + + private let containerView = UIView().then { + $0.backgroundColor = .white + $0.layer.cornerRadius = 12 + } + + private let titleLabel = UILabel().then { + $0.textColor = .gray40 + $0.font = .regular(size: 14) + $0.text = "my_store_info_menu_empty".localized + } + + private let imageView = UIImageView().then { + $0.image = UIImage(named: "img_empty_menu") + } + + override func setup() { + self.addSubViews([ + self.containerView, + self.titleLabel, + self.imageView + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview() + make.height.equalTo(Self.height) + } + + self.titleLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.centerY.equalTo(self.containerView) + } + + self.imageView.snp.makeConstraints { make in + make.right.equalTo(self.containerView).offset(-16) + make.centerY.equalTo(self.containerView) + make.width.equalTo(32) + make.width.equalTo(32) + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift index c88c6af..52d2ba8 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift @@ -12,6 +12,7 @@ extension MyStoreInfoSectionModel: SectionModelType { case introduction(String?) case menu(Menu) case menuMore([Menu]) + case emptyMenu case appearanceDay(AppearanceDay) } @@ -29,7 +30,9 @@ extension MyStoreInfoSectionModel: SectionModelType { } init(menus: [Menu]) { - if menus.count < 4 { + if menus.isEmpty { + self.items = [.emptyMenu] + } else if menus.count < 4 { let menus = menus.map { SectionItemType.menu($0) } self.items = menus diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 5c95a9c..7a6871f 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -80,6 +80,7 @@ "my_store_info_header_introduction" = "사장님 한마디"; "my_store_info_header_introduction_button" = "정보 수정"; "my_store_info_header_menus" = "메뉴 정보"; +"my_store_info_menu_empty" = "가게의 메뉴를 등록해 주세요!"; "my_store_info_menu_more_format" = "%d개의 메뉴가 더 있습니다."; "my_store_info_header_menus_button" = "메뉴 수정"; "my_store_info_header_appearance_day" = "영업 일정"; From 42ec112fe4f77db01b083ed08bf2e3e317f14da7 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 18 Jun 2022 14:10:54 +0900 Subject: [PATCH 117/166] =?UTF-8?q?feat:=20=EA=B0=80=EA=B2=8C=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20->=20=EC=98=81=EC=97=85=EC=9D=BC=EC=A0=95=20?= =?UTF-8?q?=ED=9C=B4=EB=AC=B4=EC=9D=BC=20=ED=91=9C=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cells/MyStoreInfoWorkDayCell.swift | 21 +++++++++++++------ .../models/presentation/AppearanceDay.swift | 5 ++++- .../MyStoreInfoSectionModel.swift | 16 +++++++++++++- .../strings/en.lproj/Localizations.strings | 1 + 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift index c4e378a..f62c71a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift @@ -12,20 +12,17 @@ final class MyStoreInfoWorkDayCell: BaseCollectionViewCell { private let weekDayLabel = UILabel().then { $0.font = .medium(size: 14) $0.textColor = .gray95 - $0.text = "월요일" } private let timeLabel = UILabel().then { $0.font = .bold(size: 14) $0.textColor = .gray70 - $0.text = "15:00 - 20:00" $0.textAlignment = .right } private let locationLabel = UILabel().then { $0.font = .regular(size: 14) $0.textColor = .gray70 - $0.text = "서울특별시 강남역 0번 출구" $0.textAlignment = .right } @@ -64,8 +61,20 @@ final class MyStoreInfoWorkDayCell: BaseCollectionViewCell { func bind(appearanceDay: AppearanceDay) { self.weekDayLabel.text = appearanceDay.dayOfTheWeek.fullText - self.timeLabel.text - = "\(appearanceDay.openingHours.startTime) - \(appearanceDay.openingHours.endTime)" - self.locationLabel.text = appearanceDay.locationDescription + if appearanceDay.dayOfTheWeek == .saturday || appearanceDay.dayOfTheWeek == .sunday { + self.weekDayLabel.textColor = .red + } else { + self.weekDayLabel.textColor = .gray95 + } + if appearanceDay.isClosedDay { + self.timeLabel.text = "my_store_info_appearance_closed_day".localized + self.timeLabel.textColor = .red + self.locationLabel.text = "-" + } else { + self.timeLabel.text + = "\(appearanceDay.openingHours.startTime) - \(appearanceDay.openingHours.endTime)" + self.timeLabel.textColor = .gray70 + self.locationLabel.text = appearanceDay.locationDescription + } } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift index e8299ae..e0d9bff 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/AppearanceDay.swift @@ -10,17 +10,20 @@ struct AppearanceDay: Equatable, Comparable { var dayOfTheWeek: DayOfTheWeek var locationDescription: String var openingHours: TimeInterval + var isClosedDay: Bool init(response: BossStoreAppearanceDayResponse) { self.dayOfTheWeek = response.dayOfTheWeek self.locationDescription = response.locationDescription self.openingHours = response.openingHours + self.isClosedDay = false } - init(dayOfTheWeek: DayOfTheWeek) { + init(dayOfTheWeek: DayOfTheWeek, isClosed: Bool = false) { self.dayOfTheWeek = dayOfTheWeek self.locationDescription = "" self.openingHours = TimeInterval() + self.isClosedDay = isClosed } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift index 52d2ba8..71bd09f 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/MyStoreInfoSectionModel.swift @@ -46,7 +46,21 @@ extension MyStoreInfoSectionModel: SectionModelType { } init(appearanceDays: [AppearanceDay]) { - let appearanceDays = appearanceDays.map { SectionItemType.appearanceDay($0) } + var initialAppearanceDays = [ + AppearanceDay(dayOfTheWeek: .monday, isClosed: true), + AppearanceDay(dayOfTheWeek: .tuesday, isClosed: true), + AppearanceDay(dayOfTheWeek: .wednesday, isClosed: true), + AppearanceDay(dayOfTheWeek: .thursday, isClosed: true), + AppearanceDay(dayOfTheWeek: .friday, isClosed: true), + AppearanceDay(dayOfTheWeek: .saturday, isClosed: true), + AppearanceDay(dayOfTheWeek: .sunday, isClosed: true) + ] + + for appearanceDay in appearanceDays { + initialAppearanceDays[appearanceDay.index] = appearanceDay + } + + let appearanceDays = initialAppearanceDays.map { SectionItemType.appearanceDay($0) } self.items = appearanceDays } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 7a6871f..61d98a4 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -84,6 +84,7 @@ "my_store_info_menu_more_format" = "%d개의 메뉴가 더 있습니다."; "my_store_info_header_menus_button" = "메뉴 수정"; "my_store_info_header_appearance_day" = "영업 일정"; +"my_store_info_appearance_closed_day" = "휴무일"; "my_store_info_header_appearance_day_button" = "일정 관리"; // Edit Introduction From 542d84207b209ad049944e448945e396f99fa52b Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 18 Jun 2022 14:15:01 +0900 Subject: [PATCH 118/166] =?UTF-8?q?fix:=20=ED=99=88=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic_badge.imageset/Contents.json | 12 ------------ .../Assets.xcassets/ic_badge.imageset/bedge.pdf | Bin 4130 -> 0 bytes .../domains/home/subviews/SalesToggleView.swift | 10 ---------- 3 files changed, 22 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/bedge.pdf diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json deleted file mode 100644 index 87100d5..0000000 --- a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "bedge.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/bedge.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_badge.imageset/bedge.pdf deleted file mode 100644 index baf91e4a6d25e4c03f592a3f000ef2cc549cabf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4130 zcmb7{Pj4JW5XJBFDf$vAIb^o0|F;xHA`U?a5W(SwIGFV&F|v2T>!84==T|+mJ!6Lh z-qY-x?&_|pS5EZvAh29R3_+wC!i?>EU^Q>hGkCCD&5CkulbkiZ$Dt z^;Vx;iUAugxoE99Zuf(v(U&AK89!R*Y81mBH>O%_PR5O;<`|2)R?t_G6csEX2Qfgl z#!_`%&MCNLM8*<*s17KWoI^F+p^PL*NQz>k8n@Y(9N3u0;Mtn=K+iG4D(6Z{ z6@++*cOW*_niUB)l&f&C9cv1efNX~)K~>#g zrv{O1IiI+Y^P>+o5@XOjW}G4hVXTGJ$P8v8=m2vnF&D!+BId|Z7^Ba@1%(JQ0Ri%s z>_?7PFhr6GXp8e44V02kEzc!|#5zc!Q@dj%t#PK?YBy}S1iQ{!lg$#ui$Lm<7X!_VVaa@$gWv-VK$pLXP3q9w=a-f*t z=8EP(*-_Vejm~qxg5$W?iQd>+3YFNI4kT1oxkq*78v*ptY{hjg6TBt5E2^vCo;bnG z&UCGmEEIktx~snVE!jEcexz7kt7MT1ff~=PDC5`|M7(mJ@^`IKi1U^r@MB5d!(Odz z@sy^L+^Hqq=W~sXsG-mUv~!SZdK9a;9etvCY@_Ht3E#6 z{3b9U4|(=zdIwU+r5tS~R$2~6-z@EfRAgF&-jI{@q4n{I!!&ZuvW^NW@@8;hOx`8Y z#yf+aQAJMRZXU(b2PpIo$z+7&ZifY(tx!6Pz3Hu2fBV4;rp;E3lfMO=uE2E{dmUOI z+`)dqZmfH;9NM8rN0|Xc6~ja*?P4mh_x`vnOvT1?x}m4RwlK5S>Zm)FCjEhVnQ0n; zc7-}O24SFSw}7qMm={QoR5MD(723@#23K$U(F?X6X5+N0eqImYVr79=2Y0Yvup2w6 z3)h14(BVgiT3gGkOtckvD@^ix(j;49U?@!~KA&5x>qtpQM&)!-i5h8YBUZ|I0g*jg zu?P+A0>1EWfhHRaZ^lz!HydF}FXraAB(@*BK-*z5otQY271s6eE#^A3I<{l|cHLI@ zs~_2s$A_3URgp+I&seuMAWzmIUR2^qK`Nb@#aNBC_+M1-qGtb>Opl8 z3I(~bg3vKl#b)2CLNB8v01H!%!8!>&lES!FHK!HjctB$5^dXiA1zHdR2tgG_8JPox z`AEJHp_b)=(-98EMHNMKUS>9p1utvxu^J%B-jieP6HQyOwIJFkIV1@KVG>0;8XZas zo}gJ!wQ7&?z|5DqgjCr`qYlW1Hr67};W-%cT1u0#p5ci|(5{I-MPV^Syj4YrMLfV9k6;z;*u-Xa zsMIwQ(H?sDXGVwMbC0G@PllL|?K$W=Mp4U=5j1B?u7*NtkcO~P@R8{(4RKs*x&8;oT#6jC-CjXEtnyw4O)GiD%3w( zH{V@da#f=qoSV}*XNOPhl`rmp1X)=^5w0w$gU5d0;`rIc-Np6c!~LzFZ+Gtp(mJR} znSO?nrzU{spGq?QnSF;K_kGAm{dBvx$|olD0|@=}5Gst1)2h4Mi>vG1?Z8+3=G)hV yA4#irACr`fq@y)*s+&;(v diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index 7519825..1a9c180 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -52,9 +52,6 @@ final class SalesToggleView: BaseView { $0.isHidden = true } - private let badgeImageView = UIImageView().then { - $0.image = UIImage(named: "ic_badge") - } fileprivate let toggleButton = UIButton().then { $0.titleLabel?.font = .bold(size: 16) @@ -70,7 +67,6 @@ final class SalesToggleView: BaseView { self.onTitleLabel, self.timerView, self.onDescriptionLabel, - self.badgeImageView, self.toggleButton ]) } @@ -115,12 +111,6 @@ final class SalesToggleView: BaseView { make.centerY.equalTo(self.onTitleLabel) } - self.badgeImageView.snp.makeConstraints { make in - make.top.equalTo(self.backgroundView).offset(24) - make.right.equalTo(self.backgroundView).offset(-24) - make.width.height.equalTo(40) - } - self.snp.makeConstraints { make in make.edges.equalTo(self.backgroundView).priority(.high) } From f403c43ef00cfa76ce16d7dc35c7b2ce3d0b9b69 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 18 Jun 2022 14:43:40 +0900 Subject: [PATCH 119/166] =?UTF-8?q?feat:=20=EB=A9=94=EB=89=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=99=94=EB=A9=B4=20invalid=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuReactor.swift | 27 +++++++++--- .../edit-menu/EditMenuView.swift | 2 +- .../edit-menu/EditMenuViewController.swift | 4 +- .../cells/EditMenuTableViewCell.swift | 44 +++++++++++++++++-- .../strings/en.lproj/Localizations.strings | 1 + 5 files changed, 64 insertions(+), 14 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index aea4e9e..ea5b51a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -21,6 +21,7 @@ final class EditMenuReactor: BaseReactor, Reactor { case showDeleteAllAlert case setStore(store: Store) case setMenus(menus: [Menu]) + case setInvalidMenuIndex(Int) case setPhoto(index: Int, photo: UIImage) case setMenuName(index: Int, name: String) case setMenuPrice(index: Int, price: Int) @@ -41,6 +42,7 @@ final class EditMenuReactor: BaseReactor, Reactor { var isAddMenuButtonHidden: Bool var isEnableSaveButton: Bool var isDeleteMode: Bool + var invalidIndex: Int? } let initialState: State @@ -144,13 +146,17 @@ final class EditMenuReactor: BaseReactor, Reactor { return .just(.toggleDeleteMode) } } else { - let validStore = self.getValidStore(store: self.currentState.store) - - return .concat([ - .just(.showLoading(isShow: true)), - self.updateStore(store: validStore), - .just(.showLoading(isShow: false)) - ]) + if let invalidIndex = self.getInvalidStoreIndex( + store: self.currentState.store + ) { + return .just(.setInvalidMenuIndex(invalidIndex)) + } else { + return .concat([ + .just(.showLoading(isShow: true)), + self.updateStore(store: self.currentState.store), + .just(.showLoading(isShow: false)) + ]) + } } } } @@ -171,6 +177,9 @@ final class EditMenuReactor: BaseReactor, Reactor { case .setMenus(let menus): newState.store.menus = menus + case .setInvalidMenuIndex(let index): + newState.invalidIndex = index + case .setPhoto(let index, let photo): newState.store.menus[index].photo = photo @@ -259,6 +268,10 @@ final class EditMenuReactor: BaseReactor, Reactor { } } + private func getInvalidStoreIndex(store: Store) -> Int? { + return store.menus.map { $0.isValid }.firstIndex(of: false) + } + private func getValidStore(store: Store) -> Store { var newStore = store diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift index 31e92be..024c110 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift @@ -30,7 +30,7 @@ final class EditMenuView: BaseView { let menuTableView = UITableView().then { $0.backgroundColor = .clear $0.separatorStyle = .none - $0.rowHeight = EditMenuTableViewCell.height + $0.estimatedRowHeight = EditMenuTableViewCell.height $0.register( EditMenuTableViewCell.self, forCellReuseIdentifier: EditMenuTableViewCell.registerId diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index 64d358e..a1ce5fb 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -109,14 +109,14 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato // Bind State reactor.state .map { state in - return state.store.menus.map { ($0, state.isDeleteMode) } + return state.store.menus.map { ($0, state.isDeleteMode, state.invalidIndex) } } .asDriver(onErrorJustReturn: []) .drive(self.editMenuView.menuTableView.rx.items( cellIdentifier: EditMenuTableViewCell.registerId, cellType: EditMenuTableViewCell.self )) { row, menu, cell in - cell.bind(menu: menu.0, isDeleteMode: menu.1) + cell.bind(menu: menu.0, isDeleteMode: menu.1, isInvalid: row == menu.2) cell.menuNameTextField.rx.controlEvent(.editingDidEnd) .map { cell.menuNameTextField.text ?? "" } .map { Reactor.Action.inputMenuName(index: row, name: $0) } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index 0d39321..ee6f385 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -51,6 +51,13 @@ final class EditMenuTableViewCell: BaseTableViewCell { $0.setImage(UIImage(named: "ic_delete"), for: .normal) } + private let warningLabel = UILabel().then { + $0.font = .regular(size: 12) + $0.textColor = .red + $0.text = "edit_menu_warning".localized + $0.isHidden = true + } + override func prepareForReuse() { super.prepareForReuse() @@ -66,7 +73,8 @@ final class EditMenuTableViewCell: BaseTableViewCell { self.menuNameTextFieldBackground, self.menuNameTextField, self.menuPriceTextFieldBackground, - self.menuPriceTextField + self.menuPriceTextField, + self.warningLabel ]) self.addSubViews([ self.containerView, @@ -80,13 +88,14 @@ final class EditMenuTableViewCell: BaseTableViewCell { make.right.equalToSuperview().offset(-24) make.top.equalToSuperview().offset(16) make.bottom.equalToSuperview() - make.bottom.equalTo(self.cameraButton).offset(12) + make.bottom.equalTo(self.warningLabel).offset(12).priority(.high) } self.cameraButton.snp.makeConstraints { make in make.left.equalToSuperview().offset(12) make.top.equalToSuperview().offset(12) - make.width.equalTo(self.cameraButton.snp.height) + make.width.equalTo(104) + make.height.equalTo(104) } self.menuNameTextFieldBackground.snp.makeConstraints { make in @@ -117,6 +126,12 @@ final class EditMenuTableViewCell: BaseTableViewCell { make.right.equalTo(self.menuPriceTextFieldBackground).offset(-12) } + self.warningLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(12) + make.top.equalTo(self.cameraButton.snp.bottom).offset(8) + make.height.equalTo(0) + } + self.deleteButon.snp.makeConstraints { make in make.centerY.equalTo(self.containerView) make.width.equalTo(32) @@ -125,7 +140,7 @@ final class EditMenuTableViewCell: BaseTableViewCell { } } - func bind(menu: Menu, isDeleteMode: Bool) { + func bind(menu: Menu, isDeleteMode: Bool, isInvalid: Bool) { if !menu.imageUrl.isEmpty { self.cameraButton.setImage(urlString: menu.imageUrl) } @@ -137,6 +152,7 @@ final class EditMenuTableViewCell: BaseTableViewCell { self.menuNameTextField.text = menu.name self.menuPriceTextField.text = menu.price == 0 ? "" : "\(menu.price)" self.containerView.isUserInteractionEnabled = !isDeleteMode + self.setInvalidLayout(isInvalid: isInvalid) UIView.transition(with: self, duration: 0.3) { [weak self] in self?.containerView.transform @@ -145,5 +161,25 @@ final class EditMenuTableViewCell: BaseTableViewCell { = isDeleteMode ? .init(translationX: -56, y: 0) : .identity } } + + private func setInvalidLayout(isInvalid: Bool) { + if isInvalid { + self.containerView.layer.borderColor = UIColor.red.cgColor + self.containerView.layer.borderWidth = 1 + self.containerView.backgroundColor = .clear + self.warningLabel.isHidden = false + self.warningLabel.snp.updateConstraints { make in + make.height.equalTo(14) + } + } else { + self.containerView.layer.borderWidth = 0 + self.containerView.backgroundColor = .white + self.warningLabel.isHidden = true + self.warningLabel.snp.updateConstraints { make in + make.height.equalTo(0) + } + } + + } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 61d98a4..332abe6 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -119,6 +119,7 @@ "edit_menu_add" = "메뉴 추가하기"; "edit_menu_name_placeholder" = "메뉴를 입력해주세요."; "edit_menu_price_placeholder" = "가격을 입력해 주세요."; +"edit_menu_warning" = "* 메뉴명, 가격, 사진을 모두 등록해주세요."; "edit_menu_save_alert_message" = "수정된 내용을 저장하지 않고 나갈까요?"; "edit_menu_save_alert_ok" = "나가기"; From 06a53d9d379b6961437e2c42fd3f33577f72df87 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 16:20:53 +0900 Subject: [PATCH 120/166] =?UTF-8?q?feat:=20=EC=84=A4=EC=A0=95=20>=20?= =?UTF-8?q?=EB=AC=B8=EC=9D=98=ED=95=98=EA=B8=B0=EC=97=90=20=EC=B9=B4?= =?UTF-8?q?=EC=B9=B4=EC=98=A4=ED=86=A1=20=EC=B1=84=EB=84=90=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 2 ++ 3dollar-in-my-pocket-manager/Info.plist | 2 ++ .../domains/setting/SettingCoordinator.swift | 18 +++++++++++++----- .../domains/setting/SettingReactor.swift | 9 +++++++++ .../setting/SettingViewController.swift | 14 ++++++++++++++ .../extensions/BundleExtensions.swift | 8 ++++++++ .../strings/en.lproj/Localizations.strings | 3 +++ 7 files changed, 51 insertions(+), 5 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 66d247d..c00a14f 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1646,6 +1646,7 @@ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; KAKAO_APP_KEY = b623fd2160694c4c2cb08e64df491d1c; + KAKAO_CHANNEL_URL = "http://pf.kakao.com/_RxghUb/chat"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1685,6 +1686,7 @@ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; KAKAO_APP_KEY = a009e78756eb528bc0e9897b8409a2e4; + KAKAO_CHANNEL_URL = "http://pf.kakao.com/_RxghUb/chat"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index fd69e7e..4590737 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -32,6 +32,8 @@ AppleSDGothicNeoEB00.ttf + KAKAO_CHANNEL_URL + $(KAKAO_CHANNEL_URL) UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift index f1846ab..554a594 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift @@ -8,6 +8,8 @@ protocol SettingCoordinator: BaseCoordinator, AnyObject { func showSignoutAlert() func goToSignin() + + func goToKakaoTalkChannel() } extension SettingCoordinator where Self: SettingViewController { @@ -15,8 +17,8 @@ extension SettingCoordinator where Self: SettingViewController { AlertUtils.showWithCancel( viewController: self, title: nil, - message: "로그아웃하시겠습니까?", - okButtonTitle: "로그아웃" + message: "setting_logout_message".localized, + okButtonTitle: "setting_logout".localized ) { self.settingReactor.action.onNext(.tapLogout) } @@ -25,9 +27,9 @@ extension SettingCoordinator where Self: SettingViewController { func showSignoutAlert() { AlertUtils.showWithCancel( viewController: self, - title: "회원탈퇴", - message: "회원 탈퇴 시, 그동안의 데이터가 모두 삭제됩니다.\n회원탈퇴하시겠습니까?", - okButtonTitle: "탈퇴" + title: "setting_signout".localized, + message: "setting_signout_title".localized, + okButtonTitle: "setting_signout_button".localized ) { self.settingReactor.action.onNext(.tapSignout) } @@ -43,4 +45,10 @@ extension SettingCoordinator where Self: SettingViewController { sceneDelegate.goToSignin() } + + func goToKakaoTalkChannel() { + guard let url = URL(string: Bundle.kakaoChannelUrl) else { return } + + UIApplication.shared.open(url) + } } diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift index 9fde49b..01db5b0 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift @@ -5,6 +5,7 @@ import RxCocoa final class SettingReactor: BaseReactor, Reactor { enum Action { case viewDidLoad + case tapInquiry case tapLogout case tapSignout } @@ -12,6 +13,7 @@ final class SettingReactor: BaseReactor, Reactor { enum Mutation { case setUser(user: User) case goToSignin + case goToKakaotalkChannel case showLoading(isShow: Bool) case showErrorAlert(Error) } @@ -22,6 +24,7 @@ final class SettingReactor: BaseReactor, Reactor { let initialState: State let goToSigninPublisher = PublishRelay() + let goToKakaotalkChannel = PublishRelay() private let authService: AuthServiceType private let userDefaults: UserDefaultsUtils @@ -40,6 +43,9 @@ final class SettingReactor: BaseReactor, Reactor { case .viewDidLoad: return self.fetchMyInfo() + case .tapInquiry: + return .just(.goToKakaotalkChannel) + case .tapLogout: return .concat([ .just(.showLoading(isShow: true)), @@ -66,6 +72,9 @@ final class SettingReactor: BaseReactor, Reactor { case .goToSignin: self.goToSigninPublisher.accept(()) + case .goToKakaotalkChannel: + self.goToKakaotalkChannel.accept(()) + case .showLoading(let isShow): self.showLoadginPublisher.accept(isShow) diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 17c5511..5c41f41 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -49,6 +49,13 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator }) .disposed(by: self.eventDisposeBag) + self.settingReactor.goToKakaotalkChannel + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToKakaoTalkChannel() + }) + .disposed(by: self.eventDisposeBag) + self.settingReactor.showLoadginPublisher .asDriver(onErrorJustReturn: false) .drive(onNext: { [weak self] isShow in @@ -73,6 +80,13 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator } func bind(reactor: SettingReactor) { + // Bind Action + self.settingView.tableView.rx.itemSelected + .filter { $0.row == 1 } + .map { _ in Reactor.Action.tapInquiry } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + // Bind State reactor.state .map { $0.user } diff --git a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift index 85a7d93..d47d9fd 100644 --- a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift @@ -16,4 +16,12 @@ extension Bundle { return kakaoAppKey } + + static var kakaoChannelUrl: String { + guard let kakaoChannelUrl = Bundle.main.infoDictionary?["KAKAO_CHANNEL_URL"] as? String else { + fatalError("KAKAO_CHANNEL_URL가 정의되지 않았습니다.") + } + + return kakaoChannelUrl + } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 332abe6..5eef49e 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -136,4 +136,7 @@ "setting_faq" = "FAQ"; "setting_privacy" = "개인정보 처리방침"; "setting_logout" = "로그아웃"; +"setting_logout_message" = "로그아웃하시겠습니까?"; "setting_signout" = "회원탈퇴"; +"setting_signout_title" = "회원 탈퇴 시, 그동안의 데이터가 모두 삭제됩니다.\n회원탈퇴하시겠습니까?"; +"setting_signout_button" = "탈퇴"; From 61cf72b1c92b3516d718b1537853c5deae589d3f Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 17:06:33 +0900 Subject: [PATCH 121/166] =?UTF-8?q?feat:=20FAQ=20=EB=B7=B0=20=EA=B7=B8?= =?UTF-8?q?=EB=A6=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 44 +++++++++ .../domains/setting/SettingCoordinator.swift | 8 ++ .../domains/setting/SettingReactor.swift | 9 -- .../setting/SettingViewController.swift | 28 +++--- .../domains/setting/faq/FAQCoordinator.swift | 3 + .../domains/setting/faq/FAQView.swift | 96 +++++++++++++++++++ .../setting/faq/FAQViewController.swift | 38 ++++++++ .../setting/faq/subviews/FAQHeaderView.swift | 57 +++++++++++ .../cells/FAQCollectionViewCell.swift | 66 +++++++++++++ .../extensions/UIColorExtensions.swift | 3 + .../strings/en.lproj/Localizations.strings | 4 + 11 files changed, 336 insertions(+), 20 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/domains/setting/faq/FAQCoordinator.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift create mode 100644 3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index c00a14f..7eacf8c 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -102,6 +102,11 @@ 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */; }; 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */; }; 6E64B28427D836920055354B /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* TextField.swift */; }; + 6E6B4317285DB49C00AD84A5 /* FAQView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B4316285DB49C00AD84A5 /* FAQView.swift */; }; + 6E6B4319285DB66800AD84A5 /* FAQViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B4318285DB66800AD84A5 /* FAQViewController.swift */; }; + 6E6B431B285DB6B900AD84A5 /* FAQCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B431A285DB6B900AD84A5 /* FAQCoordinator.swift */; }; + 6E6B431F285DB9B300AD84A5 /* FAQCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B431E285DB9B300AD84A5 /* FAQCollectionViewCell.swift */; }; + 6E6B4321285DBB5900AD84A5 /* FAQHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B4320285DBB5900AD84A5 /* FAQHeaderView.swift */; }; 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */; }; 6E6C9C6B280BD702009AFAE8 /* MyPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */; }; 6E6C9C6E280BD943009AFAE8 /* MyStoreInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */; }; @@ -328,6 +333,11 @@ 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoViewController.swift; sourceTree = ""; }; 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoCoordinator.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; + 6E6B4316285DB49C00AD84A5 /* FAQView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQView.swift; sourceTree = ""; }; + 6E6B4318285DB66800AD84A5 /* FAQViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQViewController.swift; sourceTree = ""; }; + 6E6B431A285DB6B900AD84A5 /* FAQCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQCoordinator.swift; sourceTree = ""; }; + 6E6B431E285DB9B300AD84A5 /* FAQCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQCollectionViewCell.swift; sourceTree = ""; }; + 6E6B4320285DBB5900AD84A5 /* FAQHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQHeaderView.swift; sourceTree = ""; }; 6E6C9C68280BD513009AFAE8 /* MyPageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageViewController.swift; sourceTree = ""; }; 6E6C9C6A280BD702009AFAE8 /* MyPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPageView.swift; sourceTree = ""; }; 6E6C9C6D280BD943009AFAE8 /* MyStoreInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoView.swift; sourceTree = ""; }; @@ -528,6 +538,7 @@ 6E1E5BA62827EB29003A1B51 /* setting */ = { isa = PBXGroup; children = ( + 6E6B4315285DB49500AD84A5 /* faq */, 6E1E5BAB2827EE42003A1B51 /* subviews */, 6E1E5BA72827EB33003A1B51 /* SettingView.swift */, 6E1E5BA92827EBE5003A1B51 /* SettingViewController.swift */, @@ -713,6 +724,34 @@ path = subviews; sourceTree = ""; }; + 6E6B4315285DB49500AD84A5 /* faq */ = { + isa = PBXGroup; + children = ( + 6E6B431C285DB9A800AD84A5 /* subviews */, + 6E6B4316285DB49C00AD84A5 /* FAQView.swift */, + 6E6B4318285DB66800AD84A5 /* FAQViewController.swift */, + 6E6B431A285DB6B900AD84A5 /* FAQCoordinator.swift */, + ); + path = faq; + sourceTree = ""; + }; + 6E6B431C285DB9A800AD84A5 /* subviews */ = { + isa = PBXGroup; + children = ( + 6E6B431D285DB9AC00AD84A5 /* cells */, + 6E6B4320285DBB5900AD84A5 /* FAQHeaderView.swift */, + ); + path = subviews; + sourceTree = ""; + }; + 6E6B431D285DB9AC00AD84A5 /* cells */ = { + isa = PBXGroup; + children = ( + 6E6B431E285DB9B300AD84A5 /* FAQCollectionViewCell.swift */, + ); + path = cells; + sourceTree = ""; + }; 6E6C9C66280BD467009AFAE8 /* my */ = { isa = PBXGroup; children = ( @@ -1320,6 +1359,7 @@ 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, 6EA53B9C284DD18A007A3839 /* SettingTableFooterView.swift in Sources */, + 6E6B4319285DB66800AD84A5 /* FAQViewController.swift in Sources */, 6E1AB7A7280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift in Sources */, 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */, 6E37AF7627E714D6004FBE25 /* LoadingView.swift in Sources */, @@ -1340,9 +1380,11 @@ 6E7DFAF7284C2ECE006F0078 /* MyStoreInfoMenuCell.swift in Sources */, 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E91A9952841EE620090361F /* CursorResponse.swift in Sources */, + 6E6B431B285DB6B900AD84A5 /* FAQCoordinator.swift in Sources */, 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, 6E91A9892841DC110090361F /* DailyStatisticsView.swift in Sources */, + 6E6B4317285DB49C00AD84A5 /* FAQView.swift in Sources */, 6EC5E432282BDB3000AD571C /* StatisticsViewController.swift in Sources */, 6E5F3DDE281D6435002282B6 /* AppearanceDay.swift in Sources */, 6EA53BA2284DD8DB007A3839 /* User.swift in Sources */, @@ -1432,6 +1474,7 @@ 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, + 6E6B431F285DB9B300AD84A5 /* FAQCollectionViewCell.swift in Sources */, 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, @@ -1474,6 +1517,7 @@ 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, 6E7A49DE27D8D0A600E6653C /* StoreCategoryResponse.swift in Sources */, 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, + 6E6B4321285DBB5900AD84A5 /* FAQHeaderView.swift in Sources */, 6E91A9912841E09C0090361F /* DailyStatisticsDayView.swift in Sources */, 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */, 6E473BA427D874C500232139 /* PhotoUploadView.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift index 554a594..6cf0275 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift @@ -10,6 +10,8 @@ protocol SettingCoordinator: BaseCoordinator, AnyObject { func goToSignin() func goToKakaoTalkChannel() + + func pushFAQ() } extension SettingCoordinator where Self: SettingViewController { @@ -51,4 +53,10 @@ extension SettingCoordinator where Self: SettingViewController { UIApplication.shared.open(url) } + + func pushFAQ() { + let viewController = FAQViewController.instance() + + self.presenter.navigationController?.pushViewController(viewController, animated: true) + } } diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift index 01db5b0..9fde49b 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift @@ -5,7 +5,6 @@ import RxCocoa final class SettingReactor: BaseReactor, Reactor { enum Action { case viewDidLoad - case tapInquiry case tapLogout case tapSignout } @@ -13,7 +12,6 @@ final class SettingReactor: BaseReactor, Reactor { enum Mutation { case setUser(user: User) case goToSignin - case goToKakaotalkChannel case showLoading(isShow: Bool) case showErrorAlert(Error) } @@ -24,7 +22,6 @@ final class SettingReactor: BaseReactor, Reactor { let initialState: State let goToSigninPublisher = PublishRelay() - let goToKakaotalkChannel = PublishRelay() private let authService: AuthServiceType private let userDefaults: UserDefaultsUtils @@ -43,9 +40,6 @@ final class SettingReactor: BaseReactor, Reactor { case .viewDidLoad: return self.fetchMyInfo() - case .tapInquiry: - return .just(.goToKakaotalkChannel) - case .tapLogout: return .concat([ .just(.showLoading(isShow: true)), @@ -72,9 +66,6 @@ final class SettingReactor: BaseReactor, Reactor { case .goToSignin: self.goToSigninPublisher.accept(()) - case .goToKakaotalkChannel: - self.goToKakaotalkChannel.accept(()) - case .showLoading(let isShow): self.showLoadginPublisher.accept(isShow) diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 5c41f41..3cfe885 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -42,17 +42,30 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator } override func bindEvent() { - self.settingReactor.goToSigninPublisher + self.settingView.tableView.rx.itemSelected + .filter { $0.row == 1 } + .map { _ in () } + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in - self?.coordinator?.goToSignin() + self?.coordinator?.goToKakaoTalkChannel() }) .disposed(by: self.eventDisposeBag) - self.settingReactor.goToKakaotalkChannel + self.settingView.tableView.rx.itemSelected + .filter { $0.row == 2 } + .map { _ in () } + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in - self?.coordinator?.goToKakaoTalkChannel() + self?.coordinator?.pushFAQ() + }) + .disposed(by: self.eventDisposeBag) + + self.settingReactor.goToSigninPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToSignin() }) .disposed(by: self.eventDisposeBag) @@ -80,13 +93,6 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator } func bind(reactor: SettingReactor) { - // Bind Action - self.settingView.tableView.rx.itemSelected - .filter { $0.row == 1 } - .map { _ in Reactor.Action.tapInquiry } - .bind(to: reactor.action) - .disposed(by: self.disposeBag) - // Bind State reactor.state .map { $0.user } diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQCoordinator.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQCoordinator.swift new file mode 100644 index 0000000..58e4223 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQCoordinator.swift @@ -0,0 +1,3 @@ +protocol FAQCoordinator: AnyObject, BaseCoordinator { + +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift new file mode 100644 index 0000000..d9e0172 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift @@ -0,0 +1,96 @@ +import UIKit + +final class FAQView: BaseView { + let backButton = UIButton().then { + $0.setImage(UIImage(named: "ic_back")?.withRenderingMode(.alwaysTemplate), for: .normal) + $0.tintColor = .white + } + + private let titleLabel = UILabel().then { + $0.font = .semiBold(size: 16) + $0.textColor = .white + $0.text = "faq_title".localized + } + + private let descriptionLabel = UILabel().then { + $0.font = .medium(size: 24) + $0.textColor = .white + $0.text = "faq_description".localized + } + + private let collectionView = UICollectionView( + frame: .zero, + collectionViewLayout: UICollectionViewLayout() + ).then { + let layout = UICollectionViewCompositionalLayout { sectionIndex, _ in + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(FAQCollectionViewCell.height) + )) + let group = NSCollectionLayoutGroup.vertical(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .estimated(FAQCollectionViewCell.height) + ), subitems: [item]) + let section = NSCollectionLayoutSection(group: group) + + section.boundarySupplementaryItems = [.init( + layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(FAQHeaderView.height) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + )] + + return section + } + + $0.collectionViewLayout = layout + $0.backgroundColor = .clear + $0.register( + FAQCollectionViewCell.self, + forCellWithReuseIdentifier: FAQCollectionViewCell.registerId + ) + $0.register( + FAQHeaderView.self, + forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, + withReuseIdentifier: FAQHeaderView.registerId + ) + } + + override func setup() { + self.backgroundColor = .gray100 + self.addSubViews([ + self.backButton, + self.titleLabel, + self.descriptionLabel, + self.collectionView + ]) + } + + override func bindConstraints() { + self.backButton.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.top.equalTo(self.safeAreaLayoutGuide).offset(14) + make.width.equalTo(24) + make.height.equalTo(24) + } + + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalTo(self.backButton) + } + + self.descriptionLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(self.backButton.snp.bottom).offset(61) + } + + self.collectionView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.right.equalToSuperview() + make.bottom.equalToSuperview() + make.top.equalTo(self.descriptionLabel.snp.bottom).offset(4) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift new file mode 100644 index 0000000..17467ed --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift @@ -0,0 +1,38 @@ +import UIKit + +import RxSwift + +final class FAQViewController: BaseViewController, FAQCoordinator { + private let faqView = FAQView() + private weak var coordinator: FAQCoordinator? + + static func instance() -> FAQViewController { + return FAQViewController(nibName: nil, bundle: nil).then { + $0.hidesBottomBarWhenPushed = true + } + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + + override func loadView() { + self.view = self.faqView + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.coordinator = self + } + + override func bindEvent() { + self.faqView.backButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.popViewController(animated: true) + }) + .disposed(by: self.eventDisposeBag) + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift new file mode 100644 index 0000000..8a718af --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift @@ -0,0 +1,57 @@ +import UIKit + +import RxSwift + +final class FAQHeaderView: UICollectionReusableView { + static let registerId = "\(FAQHeaderView.self)" + static let height: CGFloat = 51 + + var disposeBag = DisposeBag() + + private let titleLabel = UILabel().then { + $0.font = .bold(size: 16) + $0.textColor = .white + } + + private let strokeView = UIView().then { + $0.backgroundColor = .green + } + + override func prepareForReuse() { + super.prepareForReuse() + + self.disposeBag = DisposeBag() + } + + override init(frame: CGRect) { + super.init(frame: frame) + + self.setup() + self.bindConstraints() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setup() { + self.addSubViews([ + self.strokeView, + self.titleLabel + ]) + } + + private func bindConstraints() { + self.titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(28) + } + + self.strokeView.snp.makeConstraints { make in + make.bottom.equalTo(self.titleLabel) + make.left.equalTo(self.titleLabel) + make.right.equalTo(self.titleLabel).offset(1) + make.height.equalTo(8) + } + } +} diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift new file mode 100644 index 0000000..9b96b21 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift @@ -0,0 +1,66 @@ +import UIKit + +final class FAQCollectionViewCell: BaseCollectionViewCell { + static let registerId = "\(FAQCollectionViewCell.self)" + static let height: CGFloat = 149 + + private let containerView = UIView().then { + $0.backgroundColor = .gray95 + $0.layer.cornerRadius = 16 + } + + private let questionMarkLabel = UILabel().then { + $0.textColor = .green + $0.font = .bold(size: 14) + $0.numberOfLines = 0 + $0.text = "Q" + } + + private let questionLabel = UILabel().then { + $0.textColor = .green + $0.font = .bold(size: 14) + $0.numberOfLines = 0 + } + + private let answerLabel = UILabel().then { + $0.textColor = .gray6 + $0.font = .bold(size: 14) + $0.numberOfLines = 0 + } + + override func setup() { + self.backgroundColor = .clear + self.addSubViews([ + self.containerView, + self.questionMarkLabel, + self.questionLabel, + self.answerLabel + ]) + } + + override func bindConstraints() { + self.containerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(24) + make.right.equalToSuperview().offset(-24) + make.top.equalToSuperview() + make.bottom.equalToSuperview() + make.bottom.equalTo(self.answerLabel).offset(16) + } + + self.questionMarkLabel.snp.makeConstraints { make in + make.left.equalTo(self.containerView).offset(16) + make.top.equalTo(self.containerView).offset(16) + } + + self.questionLabel.snp.makeConstraints { make in + make.left.equalTo(self.questionMarkLabel.snp.right).offset(8) + make.right.equalTo(self.containerView).offset(-20) + } + + self.answerLabel.snp.makeConstraints { make in + make.left.equalTo(self.questionLabel) + make.right.equalTo(self.questionLabel) + make.top.equalTo(self.questionLabel.snp.bottom).offset(12) + } + } +} diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index 449f7c1..ccf7697 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -7,6 +7,9 @@ extension UIColor { /// r: 244, g: 244, b: 244 static let gray5 = UIColor(r: 244, g: 244, b: 244) + /// r:242, g: 242, b: 242 + static let gray6 = UIColor(r: 242, g: 242, b: 242) + /// r: 226, g: 226, b: 226 static let gray10 = UIColor(r: 226, g: 226, b: 226) diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 5eef49e..26ea06f 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -140,3 +140,7 @@ "setting_signout" = "회원탈퇴"; "setting_signout_title" = "회원 탈퇴 시, 그동안의 데이터가 모두 삭제됩니다.\n회원탈퇴하시겠습니까?"; "setting_signout_button" = "탈퇴"; + +// FAQ +"faq_title" = "FAQ"; +"faq_description" = "어떤 점이 궁금하셨나요?"; From 7a1712f4a71b369c8a0144cf4940b17b4cd98401 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 18:57:44 +0900 Subject: [PATCH 122/166] =?UTF-8?q?feat:=20FAQ=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 +++++++ .../domains/setting/faq/FAQReactor.swift | 2 ++ .../models/dto/response/FAQResponse.swift | 22 +++++++++++++ .../services/FAQService.swift | 31 +++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift create mode 100644 3dollar-in-my-pocket-manager/services/FAQService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 7eacf8c..b43efe3 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -33,6 +33,9 @@ 6E1F54B027CB97FC0050BBBA /* ObserverExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */; }; 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B127CB98540050BBBA /* HTTPError.swift */; }; 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */; }; + 6E211844285DD6A700220E5A /* FAQReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211843285DD6A700220E5A /* FAQReactor.swift */; }; + 6E211847285DD6F600220E5A /* FAQService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211846285DD6F600220E5A /* FAQService.swift */; }; + 6E211849285DD76F00220E5A /* FAQResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211848285DD76F00220E5A /* FAQResponse.swift */; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; @@ -272,6 +275,9 @@ 6E1F54AF27CB97FC0050BBBA /* ObserverExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObserverExtensions.swift; sourceTree = ""; }; 6E1F54B127CB98540050BBBA /* HTTPError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPError.swift; sourceTree = ""; }; 6E1F54B327CB99100050BBBA /* ResponseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseContainer.swift; sourceTree = ""; }; + 6E211843285DD6A700220E5A /* FAQReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQReactor.swift; sourceTree = ""; }; + 6E211846285DD6F600220E5A /* FAQService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQService.swift; sourceTree = ""; }; + 6E211848285DD76F00220E5A /* FAQResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQResponse.swift; sourceTree = ""; }; 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarTag.swift; sourceTree = ""; }; 6E25FED227F535F100BE2941 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; 6E25FED527F5363600BE2941 /* LocationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationError.swift; sourceTree = ""; }; @@ -584,6 +590,7 @@ 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */, 6EBF1AE627FE65950011268B /* StoreService.swift */, 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */, + 6E211846285DD6F600220E5A /* FAQService.swift */, ); path = services; sourceTree = ""; @@ -612,6 +619,7 @@ 6E91A9942841EE620090361F /* CursorResponse.swift */, 6E91A9962841EF090090361F /* BossStoreFeedbackCursorResponse.swift */, 6EFB2F07285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift */, + 6E211848285DD76F00220E5A /* FAQResponse.swift */, ); path = response; sourceTree = ""; @@ -731,6 +739,7 @@ 6E6B4316285DB49C00AD84A5 /* FAQView.swift */, 6E6B4318285DB66800AD84A5 /* FAQViewController.swift */, 6E6B431A285DB6B900AD84A5 /* FAQCoordinator.swift */, + 6E211843285DD6A700220E5A /* FAQReactor.swift */, ); path = faq; sourceTree = ""; @@ -1351,6 +1360,7 @@ 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */, 6E5DCE7027FDC97200CA58EE /* DayOfTheWeek.swift in Sources */, 6E95E85B282FD3E40004C08D /* TotalStatisticsTableViewCell.swift in Sources */, + 6E211847285DD6F600220E5A /* FAQService.swift in Sources */, 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */, @@ -1392,6 +1402,7 @@ 6EC51D0627EEEC11009B5527 /* AddressView.swift in Sources */, 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */, 6EC5E42D282BD77A00AD571C /* StatisticsView.swift in Sources */, + 6E211844285DD6A700220E5A /* FAQReactor.swift in Sources */, 6E1F54AE27CB97D20050BBBA /* AFDataResponseExtensions.swift in Sources */, 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */, 6E1E5BAE2827EE5F003A1B51 /* SettingTableViewCell.swift in Sources */, @@ -1471,6 +1482,7 @@ 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */, + 6E211849285DD76F00220E5A /* FAQResponse.swift in Sources */, 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift new file mode 100644 index 0000000..303c018 --- /dev/null +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift @@ -0,0 +1,2 @@ +import ReactorKit + diff --git a/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift new file mode 100644 index 0000000..a7309a5 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift @@ -0,0 +1,22 @@ +struct FAQResponse: Decodable { + let answer: String + let category: String + let faqId: Int + let question: String + + enum CodingKeys: String, CodingKey { + case answer + case category + case faqId + case question + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.answer = try values.decodeIfPresent(String.self, forKey: .answer) ?? "" + self.category = try values.decodeIfPresent(String.self, forKey: .category) ?? "" + self.faqId = try values.decodeIfPresent(Int.self, forKey: .faqId) ?? 0 + self.question = try values.decodeIfPresent(String.self, forKey: .question) ?? "" + } +} diff --git a/3dollar-in-my-pocket-manager/services/FAQService.swift b/3dollar-in-my-pocket-manager/services/FAQService.swift new file mode 100644 index 0000000..b9a9f69 --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/FAQService.swift @@ -0,0 +1,31 @@ +import Foundation + +import RxSwift +import Alamofire + +protocol FAQServiceType { + func fetchFAQs() -> Observable<[FAQResponse]> +} + +struct FAQService: FAQServiceType { + func fetchFAQs() -> Observable<[FAQResponse]> { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/faqs" + let headers = HTTPUtils.jsonHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .get, + headers: headers + ).responseData { response in + if response.isSuccess() { + observer.processValue(type: [FAQResponse].self, response: response) + } else { + observer.processAPIError(response: response) + } + } + + return Disposables.create() + } + } +} From 1580d6ae2623a0abca4e3c07e5f38b1f1a55bb5d Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 19:18:07 +0900 Subject: [PATCH 123/166] =?UTF-8?q?feat:=20FAQReactor=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../domains/setting/faq/FAQReactor.swift | 53 +++++++++++++++++++ .../models/presentation/FAQ.swift | 13 +++++ 3 files changed, 70 insertions(+) create mode 100644 3dollar-in-my-pocket-manager/models/presentation/FAQ.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index b43efe3..638b535 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -36,6 +36,7 @@ 6E211844285DD6A700220E5A /* FAQReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211843285DD6A700220E5A /* FAQReactor.swift */; }; 6E211847285DD6F600220E5A /* FAQService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211846285DD6F600220E5A /* FAQService.swift */; }; 6E211849285DD76F00220E5A /* FAQResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211848285DD76F00220E5A /* FAQResponse.swift */; }; + 6E21184B285DD94C00220E5A /* FAQ.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21184A285DD94C00220E5A /* FAQ.swift */; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; @@ -278,6 +279,7 @@ 6E211843285DD6A700220E5A /* FAQReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQReactor.swift; sourceTree = ""; }; 6E211846285DD6F600220E5A /* FAQService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQService.swift; sourceTree = ""; }; 6E211848285DD76F00220E5A /* FAQResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQResponse.swift; sourceTree = ""; }; + 6E21184A285DD94C00220E5A /* FAQ.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQ.swift; sourceTree = ""; }; 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarTag.swift; sourceTree = ""; }; 6E25FED227F535F100BE2941 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; 6E25FED527F5363600BE2941 /* LocationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationError.swift; sourceTree = ""; }; @@ -1116,6 +1118,7 @@ 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */, 6EA53B98284DCDD5007A3839 /* SettingCellType.swift */, 6EA53BA1284DD8DB007A3839 /* User.swift */, + 6E21184A285DD94C00220E5A /* FAQ.swift */, ); path = presentation; sourceTree = ""; @@ -1364,6 +1367,7 @@ 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */, 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */, + 6E21184B285DD94C00220E5A /* FAQ.swift in Sources */, 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */, 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift index 303c018..0602772 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQReactor.swift @@ -1,2 +1,55 @@ import ReactorKit +final class FAQReactor: BaseReactor, Reactor { + enum Action { + case viewDidLoad + } + + enum Mutation { + case setFAQs([FAQ]) + case showErrorAlert(Error) + } + + struct State { + var faqs: [FAQ] + } + + let initialState: State + private let faqService: FAQServiceType + + init( + state: State = State(faqs: []), + faqService: FAQServiceType + ) { + self.faqService = faqService + self.initialState = state + } + + func mutate(action: Action) -> Observable { + switch action { + case .viewDidLoad: + return self.fetchFAQs() + } + } + + func reduce(state: State, mutation: Mutation) -> State { + var newState = state + + switch mutation { + case .setFAQs(let faqs): + newState.faqs = faqs + + case .showErrorAlert(let error): + self.showErrorAlert.accept(error) + } + + return newState + } + + private func fetchFAQs() -> Observable { + return self.faqService.fetchFAQs() + .map { $0.map(FAQ.init(response:)) } + .map { .setFAQs($0) } + .catch { .just(.showErrorAlert($0)) } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift b/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift new file mode 100644 index 0000000..f79a632 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift @@ -0,0 +1,13 @@ +struct FAQ { + let answer: String + let category: String + let faqId: Int + let question: String + + init(response: FAQResponse) { + self.answer = response.answer + self.category = response.category + self.faqId = response.faqId + self.question = response.question + } +} From 2dffec1a49d1747b8ba50be98d00e3f02b65c039 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 20:01:12 +0900 Subject: [PATCH 124/166] =?UTF-8?q?feat:=20FAQ=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EB=B0=94=EC=9D=B8=EB=94=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++ .../domains/setting/faq/FAQView.swift | 3 +- .../setting/faq/FAQViewController.swift | 54 ++++++++++++++++++- .../setting/faq/subviews/FAQHeaderView.swift | 6 ++- .../cells/FAQCollectionViewCell.swift | 11 +++- .../models/presentation/FAQ.swift | 6 +++ .../models/presentation/FAQSectionModel.swift | 20 +++++++ 7 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/presentation/FAQSectionModel.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 638b535..aacbf19 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -37,6 +37,7 @@ 6E211847285DD6F600220E5A /* FAQService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211846285DD6F600220E5A /* FAQService.swift */; }; 6E211849285DD76F00220E5A /* FAQResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211848285DD76F00220E5A /* FAQResponse.swift */; }; 6E21184B285DD94C00220E5A /* FAQ.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21184A285DD94C00220E5A /* FAQ.swift */; }; + 6E21184D285DE0A800220E5A /* FAQSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21184C285DE0A800220E5A /* FAQSectionModel.swift */; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; @@ -280,6 +281,7 @@ 6E211846285DD6F600220E5A /* FAQService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQService.swift; sourceTree = ""; }; 6E211848285DD76F00220E5A /* FAQResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQResponse.swift; sourceTree = ""; }; 6E21184A285DD94C00220E5A /* FAQ.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQ.swift; sourceTree = ""; }; + 6E21184C285DE0A800220E5A /* FAQSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQSectionModel.swift; sourceTree = ""; }; 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarTag.swift; sourceTree = ""; }; 6E25FED227F535F100BE2941 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; 6E25FED527F5363600BE2941 /* LocationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationError.swift; sourceTree = ""; }; @@ -1119,6 +1121,7 @@ 6EA53B98284DCDD5007A3839 /* SettingCellType.swift */, 6EA53BA1284DD8DB007A3839 /* User.swift */, 6E21184A285DD94C00220E5A /* FAQ.swift */, + 6E21184C285DE0A800220E5A /* FAQSectionModel.swift */, ); path = presentation; sourceTree = ""; @@ -1494,6 +1497,7 @@ 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, + 6E21184D285DE0A800220E5A /* FAQSectionModel.swift in Sources */, 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, 6E37AF7427E71455004FBE25 /* LoadingManager.swift in Sources */, 6E5F3DDA281D6150002282B6 /* EditScheduleViewController.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift index d9e0172..7cacdc3 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift @@ -18,7 +18,7 @@ final class FAQView: BaseView { $0.text = "faq_description".localized } - private let collectionView = UICollectionView( + let collectionView = UICollectionView( frame: .zero, collectionViewLayout: UICollectionViewLayout() ).then { @@ -47,6 +47,7 @@ final class FAQView: BaseView { $0.collectionViewLayout = layout $0.backgroundColor = .clear + $0.showsVerticalScrollIndicator = false $0.register( FAQCollectionViewCell.self, forCellWithReuseIdentifier: FAQCollectionViewCell.registerId diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift index 17467ed..407f68b 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift @@ -1,10 +1,15 @@ import UIKit +import ReactorKit import RxSwift +import RxDataSources -final class FAQViewController: BaseViewController, FAQCoordinator { +final class FAQViewController: BaseViewController, View, FAQCoordinator { private let faqView = FAQView() + private let faqReactor = FAQReactor(faqService: FAQService()) private weak var coordinator: FAQCoordinator? + private var faqCollectionViewDataSource + : RxCollectionViewSectionedReloadDataSource! static func instance() -> FAQViewController { return FAQViewController(nibName: nil, bundle: nil).then { @@ -23,7 +28,10 @@ final class FAQViewController: BaseViewController, FAQCoordinator { override func viewDidLoad() { super.viewDidLoad() + self.setupDataSource() + self.reactor = self.faqReactor self.coordinator = self + self.faqReactor.action.onNext(.viewDidLoad) } override func bindEvent() { @@ -35,4 +43,48 @@ final class FAQViewController: BaseViewController, FAQCoordinator { }) .disposed(by: self.eventDisposeBag) } + + func bind(reactor: FAQReactor) { + // Bind State + reactor.state + .map { Dictionary(grouping: $0.faqs, by: { $0.category }) } + .map { $0.values.map(FAQSectionModel.init(faqs:)) } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: []) + .drive(self.faqView.collectionView.rx.items(dataSource: self.faqCollectionViewDataSource)) + .disposed(by: self.disposeBag) + } + + private func setupDataSource() { + self.faqCollectionViewDataSource + = RxCollectionViewSectionedReloadDataSource( + configureCell: { dataSource, collectionView, indexPath, item in + guard let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: FAQCollectionViewCell.registerId, + for: indexPath + ) as? FAQCollectionViewCell else { return BaseCollectionViewCell() } + + cell.bind(faq: item) + return cell + }) + + self.faqCollectionViewDataSource.configureSupplementaryView + = { dataSource, collectionView, kind, indexPath -> UICollectionReusableView in + switch kind { + case UICollectionView.elementKindSectionHeader: + guard let headerView = collectionView.dequeueReusableSupplementaryView( + ofKind: UICollectionView.elementKindSectionHeader, + withReuseIdentifier: FAQHeaderView.registerId, + for: indexPath + ) as? FAQHeaderView else { return UICollectionReusableView() } + + headerView.bind(title: dataSource[indexPath.section].categoryName) + + return headerView + + default: + return UICollectionReusableView() + } + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift index 8a718af..7809c51 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/FAQHeaderView.swift @@ -4,7 +4,7 @@ import RxSwift final class FAQHeaderView: UICollectionReusableView { static let registerId = "\(FAQHeaderView.self)" - static let height: CGFloat = 51 + static let height: CGFloat = 63 var disposeBag = DisposeBag() @@ -34,6 +34,10 @@ final class FAQHeaderView: UICollectionReusableView { fatalError("init(coder:) has not been implemented") } + func bind(title: String) { + self.titleLabel.text = title + } + private func setup() { self.addSubViews([ self.strokeView, diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift index 9b96b21..301406d 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift @@ -43,17 +43,19 @@ final class FAQCollectionViewCell: BaseCollectionViewCell { make.left.equalToSuperview().offset(24) make.right.equalToSuperview().offset(-24) make.top.equalToSuperview() - make.bottom.equalToSuperview() - make.bottom.equalTo(self.answerLabel).offset(16) + make.bottom.equalToSuperview().offset(-12) + make.bottom.equalTo(self.answerLabel).offset(16).priority(.high) } self.questionMarkLabel.snp.makeConstraints { make in make.left.equalTo(self.containerView).offset(16) make.top.equalTo(self.containerView).offset(16) + make.width.equalTo(12) } self.questionLabel.snp.makeConstraints { make in make.left.equalTo(self.questionMarkLabel.snp.right).offset(8) + make.top.equalTo(self.questionMarkLabel) make.right.equalTo(self.containerView).offset(-20) } @@ -63,4 +65,9 @@ final class FAQCollectionViewCell: BaseCollectionViewCell { make.top.equalTo(self.questionLabel.snp.bottom).offset(12) } } + + func bind(faq: FAQ) { + self.questionLabel.text = faq.question + self.answerLabel.text = faq.answer + } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift b/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift index f79a632..66d527d 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift @@ -11,3 +11,9 @@ struct FAQ { self.question = response.question } } + +extension FAQ: Comparable { + static func < (lhs: FAQ, rhs: FAQ) -> Bool { + return lhs.faqId == rhs.faqId + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/FAQSectionModel.swift b/3dollar-in-my-pocket-manager/models/presentation/FAQSectionModel.swift new file mode 100644 index 0000000..1880ed1 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/FAQSectionModel.swift @@ -0,0 +1,20 @@ +import RxDataSources + +struct FAQSectionModel: Equatable { + var categoryName: String + var items: [Item] +} + +extension FAQSectionModel: SectionModelType { + typealias Item = FAQ + + init(original: FAQSectionModel, items: [FAQ]) { + self = original + self.items = items + } + + init(faqs: [FAQ]) { + self.categoryName = faqs.first?.category ?? "" + self.items = faqs + } +} From c4f44cf728757fce86654e39dcf3eee92e78a2fd Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 20:10:54 +0900 Subject: [PATCH 125/166] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4?= =?UTF-8?q?=ED=86=A1=20=EC=B1=84=EB=84=90=20Info.plist=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 4590737..003b526 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -21,6 +21,8 @@ KAKAO_APP_KEY $(KAKAO_APP_KEY) + KAKAO_CHANNEL_URL + $(KAKAO_CHANNEL_URL) LSApplicationQueriesSchemes kakaokompassauth @@ -32,8 +34,6 @@ AppleSDGothicNeoEB00.ttf - KAKAO_CHANNEL_URL - $(KAKAO_CHANNEL_URL) UIApplicationSceneManifest UIApplicationSupportsMultipleScenes From 1c39cdced6fc89abbbb145ed07446b1f4c9c2ebe Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 22:28:58 +0900 Subject: [PATCH 126/166] =?UTF-8?q?fix:=20=EC=9D=BC=EC=A0=95=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=ED=99=94=EB=A9=B4=20=EA=B8=B0=EB=B3=B8=EA=B0=92?= =?UTF-8?q?=EC=9D=B4=20=EC=A7=80=EA=B8=88=20=EC=8B=9C=EA=B0=84=20=EB=93=A4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=EC=A7=80=EB=A7=8C=20UI=EC=97=90=20=ED=91=9C?= =?UTF-8?q?=ED=98=84=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-schedule/EditScheduleView.swift | 64 ++++++++++++++++++- .../cells/EditScheduleTableViewCell.swift | 3 + .../domains/shared/TextField.swift | 2 +- .../extensions/UIColorExtensions.swift | 3 + .../models/dto/response/TimeInterval.swift | 11 ++-- 5 files changed, 74 insertions(+), 9 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift index 0612acd..365fe88 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift @@ -1,6 +1,8 @@ import UIKit final class EditScheduleView: BaseView { + private let tapBackgroundGesture = UITapGestureRecognizer() + let backButton = UIButton().then { $0.setImage(UIImage(named: "ic_back"), for: .normal) } @@ -29,7 +31,21 @@ final class EditScheduleView: BaseView { private let subDescriptionLabel = UILabel().then { $0.font = .regular(size: 14) $0.textColor = .black - $0.text = "edit_schedule_sub_description".localized + + let text = "edit_schedule_sub_description".localized + let attributedString = NSMutableAttributedString(string: text) + + attributedString.addAttribute( + .font, + value: UIFont.bold(size: 14) as Any, + range: (text as NSString).range(of: "휴무") + ) + attributedString.addAttribute( + .foregroundColor, + value: UIColor.red, + range: (text as NSString).range(of: "휴무") + ) + $0.attributedText = attributedString } let weekDayStackView = WeekDayStackView() @@ -53,8 +69,14 @@ final class EditScheduleView: BaseView { $0.setBackgroundColor(color: .gray30, forState: .disabled) } + deinit { + NotificationCenter.default.removeObserver(self) + } + override func setup() { + self.addGestureRecognizer(self.tapBackgroundGesture) self.backgroundColor = .gray0 + self.setupKeyboardEvent() self.addSubViews([ self.backButton, self.titleLabel, @@ -64,6 +86,14 @@ final class EditScheduleView: BaseView { self.tableView, self.saveButton ]) + + self.tapBackgroundGesture.rx.event + .asDriver() + .throttle(.milliseconds(500)) + .drive(onNext: { [weak self] _ in + self?.endEditing(true) + }) + .disposed(by: self.disposeBag) } override func bindConstraints() { @@ -109,4 +139,36 @@ final class EditScheduleView: BaseView { make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom).offset(-64) } } + + private func setupKeyboardEvent() { + NotificationCenter.default.addObserver( + self, + selector: #selector(onShowKeyboard(notification:)), + name: UIResponder.keyboardWillShowNotification, + object: nil + ) + NotificationCenter.default.addObserver( + self, + selector: #selector(onHideKeyboard(notification:)), + name: UIResponder.keyboardWillHideNotification, + object: nil + ) + } + + @objc func onShowKeyboard(notification: NSNotification) { + let userInfo = notification.userInfo! + var keyboardFrame + = (userInfo[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue + keyboardFrame = self.convert(keyboardFrame, from: nil) + + var contentInset = self.tableView.contentInset + contentInset.bottom = keyboardFrame.size.height + 10 + self.tableView.contentInset = contentInset + } + + @objc func onHideKeyboard(notification: NSNotification) { + let contentInset:UIEdgeInsets = UIEdgeInsets.zero + + self.tableView.contentInset = contentInset + } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift index 4f66e90..d1659d3 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/cells/EditScheduleTableViewCell.swift @@ -83,6 +83,9 @@ final class EditScheduleTableViewCell: UITableViewCell { override func prepareForReuse() { super.prepareForReuse() + self.startTimeField.setText(text: nil) + self.endTimeField.setText(text: nil) + self.locationField.setText(text: nil) self.disposeBag = DisposeBag() } diff --git a/3dollar-in-my-pocket-manager/domains/shared/TextField.swift b/3dollar-in-my-pocket-manager/domains/shared/TextField.swift index c35a1c4..dc60167 100644 --- a/3dollar-in-my-pocket-manager/domains/shared/TextField.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/TextField.swift @@ -141,7 +141,7 @@ extension Reactive where Base: TextField { } var date: Observable { - return base.datePicker.rx.date + return base.datePicker.rx.date.changed .map { date -> String in let dateFormatter = DateFormatter() diff --git a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift index ccf7697..0db4900 100644 --- a/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/UIColorExtensions.swift @@ -46,6 +46,9 @@ extension UIColor { /// r: 0, g: 198, b: 103 static let green = UIColor(r: 0, g: 198, b: 103) + /// r:255 g: 92, b: 67 + static let red = UIColor(r: 255, g: 92, b: 67) + /// r:5, g: 5, b: 5 static let black = UIColor(r: 5, g: 5, b: 5) } diff --git a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift index 053ceb1..0693716 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/TimeInterval.swift @@ -1,3 +1,5 @@ +import Base + struct TimeInterval: Decodable { var endTime: String var startTime: String @@ -7,14 +9,9 @@ struct TimeInterval: Decodable { case startTime } - init() { - self.startTime = "" - self.endTime = "" - } - init( - endTime: String = "", - startTime: String = "" + endTime: String = DateUtils.toString(date: Date(), format: "HH:mm"), + startTime: String = DateUtils.toString(date: Date(), format: "HH:mm") ) { self.endTime = endTime self.startTime = startTime From 79882436d47f1470eff9b060a86ac197d225a6df Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 18 Jun 2022 22:46:18 +0900 Subject: [PATCH 127/166] =?UTF-8?q?fix:=20=ED=99=88=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=98=81=EC=97=85=20=EC=8B=9C=EC=9E=91=20->=20=EC=A2=85?= =?UTF-8?q?=EB=A3=8C=20->=20=EC=8B=9C=EC=9E=91=EC=8B=9C=20=ED=83=80?= =?UTF-8?q?=EC=9D=B4=EB=A8=B8=20=EA=B2=B9=EC=B9=98=EB=8A=94=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/home/subviews/SalesToggleView.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index 1a9c180..6eecab5 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -4,6 +4,8 @@ import RxSwift import RxCocoa final class SalesToggleView: BaseView { + private var timerDisposeBag = DisposeBag() + private let backgroundView = UIView().then { $0.backgroundColor = .white $0.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] @@ -135,6 +137,7 @@ final class SalesToggleView: BaseView { } fileprivate func setTimer(startDate: Date) { + self.resetTimer() Observable.interval(.seconds(1), scheduler: MainScheduler.instance) .bind { [weak self] time in let dateFormatter = DateComponentsFormatter() @@ -148,7 +151,12 @@ final class SalesToggleView: BaseView { self?.timerView.text = dateFormatter.string(from: timeDiff) } - .disposed(by: self.disposeBag) + .disposed(by: self.timerDisposeBag) + } + + private func resetTimer() { + self.timerDisposeBag = DisposeBag() + self.timerView.text = nil } } From 4e42bb7d54c03dc59cc0f83c6c44c9d2f7cdec82 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 25 Jun 2022 22:41:55 +0900 Subject: [PATCH 128/166] =?UTF-8?q?feat:=20=EC=95=B1=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20FCM=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 64 ++++++++----------- .../xcshareddata/swiftpm/Package.resolved | 12 ++-- .../AppDelegate.swift | 25 ++++++++ 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index aacbf19..29d5c61 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -43,6 +43,10 @@ 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; 6E2CD76C284101B9007506FB /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; platformFilter = ios; }; 6E2CD76D284101B9007506FB /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6E37A2E42860AFE4008C046F /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */; }; + 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */; }; + 6E37A2E82860AFE4008C046F /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E72860AFE4008C046F /* FirebaseMessaging */; }; + 6E37A2EA2860AFE4008C046F /* FirebaseRemoteConfig in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E92860AFE4008C046F /* FirebaseRemoteConfig */; }; 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */; }; 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */; }; 6E37AF7127E707FC004FBE25 /* WaitingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */; }; @@ -62,11 +66,6 @@ 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E479461280AE42000A3D96C /* PaddingLabel.swift */; }; 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */; }; - 6E4C8BCE28351E33005D9D9B /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BCD28351E33005D9D9B /* FirebaseAnalytics */; }; - 6E4C8BD028351E33005D9D9B /* FirebaseAppDistribution-Beta in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BCF28351E33005D9D9B /* FirebaseAppDistribution-Beta */; }; - 6E4C8BD228351E33005D9D9B /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */; }; - 6E4C8BD428351E33005D9D9B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */; }; - 6E4C8BD628351E33005D9D9B /* FirebaseRemoteConfigSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */; }; 6E5678C1285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; @@ -457,12 +456,12 @@ 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, - 6E4C8BD428351E33005D9D9B /* FirebaseMessaging in Frameworks */, + 6E37A2E82860AFE4008C046F /* FirebaseMessaging in Frameworks */, 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, - 6E4C8BCE28351E33005D9D9B /* FirebaseAnalytics in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, + 6E37A2E42860AFE4008C046F /* FirebaseAnalytics in Frameworks */, 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, @@ -470,13 +469,12 @@ 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, - 6E4C8BD628351E33005D9D9B /* FirebaseRemoteConfigSwift in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, + 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */, + 6E37A2EA2860AFE4008C046F /* FirebaseRemoteConfig in Frameworks */, 6E2CD76C284101B9007506FB /* Base.framework in Frameworks */, CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */, - 6E4C8BD228351E33005D9D9B /* FirebaseFirestore in Frameworks */, - 6E4C8BD028351E33005D9D9B /* FirebaseAppDistribution-Beta in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1228,11 +1226,10 @@ 6E6C9C76280BEE26009AFAE8 /* Kingfisher */, 6E5F212C281976B200922A99 /* Differentiator */, 6E5F212E281976B200922A99 /* RxDataSources */, - 6E4C8BCD28351E33005D9D9B /* FirebaseAnalytics */, - 6E4C8BCF28351E33005D9D9B /* FirebaseAppDistribution-Beta */, - 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */, - 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */, - 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */, + 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */, + 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */, + 6E37A2E72860AFE4008C046F /* FirebaseMessaging */, + 6E37A2E92860AFE4008C046F /* FirebaseRemoteConfig */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -1273,7 +1270,7 @@ 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */, 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */, 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */, - 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -1697,7 +1694,7 @@ DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "가3사장님-Dev"; + INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; @@ -1737,7 +1734,7 @@ DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "가3사장님"; + INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; @@ -1788,12 +1785,12 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; requirement = { - kind = upToNextMajorVersion; - minimumVersion = 9.0.0; + branch = master; + kind = branch; }; }; 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { @@ -1879,30 +1876,25 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 6E4C8BCD28351E33005D9D9B /* FirebaseAnalytics */ = { + 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */ = { isa = XCSwiftPackageProductDependency; - package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + package = 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; productName = FirebaseAnalytics; }; - 6E4C8BCF28351E33005D9D9B /* FirebaseAppDistribution-Beta */ = { - isa = XCSwiftPackageProductDependency; - package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = "FirebaseAppDistribution-Beta"; - }; - 6E4C8BD128351E33005D9D9B /* FirebaseFirestore */ = { + 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */ = { isa = XCSwiftPackageProductDependency; - package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseFirestore; + package = 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseCrashlytics; }; - 6E4C8BD328351E33005D9D9B /* FirebaseMessaging */ = { + 6E37A2E72860AFE4008C046F /* FirebaseMessaging */ = { isa = XCSwiftPackageProductDependency; - package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + package = 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; productName = FirebaseMessaging; }; - 6E4C8BD528351E33005D9D9B /* FirebaseRemoteConfigSwift */ = { + 6E37A2E92860AFE4008C046F /* FirebaseRemoteConfig */ = { isa = XCSwiftPackageProductDependency; - package = 6E4C8BCC28351E33005D9D9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseRemoteConfigSwift; + package = 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseRemoteConfig; }; 6E5F212C281976B200922A99 /* Differentiator */ = { isa = XCSwiftPackageProductDependency; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 98ac7df..f29992e 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { - "revision" : "cfa854c9c1073c4d1b83b20dfcb1ef7ceb85388b", - "version" : "9.0.0" + "branch" : "master", + "revision" : "b6acec92a7bfc6f7077502e734f7270b27a9c037" } }, { @@ -41,8 +41,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { - "revision" : "6a3123fab90f3884167990bee9bb30097d99c98c", - "version" : "9.0.0" + "revision" : "192cce3e0486aecfdb61102a9c694c78dc89dc48", + "version" : "9.1.0" } }, { @@ -113,8 +113,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/nanopb.git", "state" : { - "revision" : "7ee9ef9f627d85cbe1b8c4f49a3ed26eed216c77", - "version" : "2.30908.0" + "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692", + "version" : "2.30909.0" } }, { diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 6fa2013..fb5d7fe 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -1,8 +1,10 @@ import UIKit import BackgroundTasks +import Base import KakaoSDKCommon import FirebaseCore +import FirebaseMessaging @main class AppDelegate: UIResponder, UIApplicationDelegate { @@ -13,6 +15,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.initializeKakaoSDK() self.initializeNetworkLogger() self.initializeFirebase() + self.initializeNotification() BackgroundTaskManager.shared.registerBackgroundTask() return true } @@ -50,5 +53,27 @@ class AppDelegate: UIResponder, UIApplicationDelegate { private func initializeFirebase() { FirebaseApp.configure() } + + private func initializeNotification() { + UNUserNotificationCenter.current().delegate = self + + let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] + + UNUserNotificationCenter.current().requestAuthorization( + options: authOptions, + completionHandler: { isSuccess, _ in + // TODO: 토큰 저장해두기 + } + ) + + Messaging.messaging().delegate = self + } } +extension AppDelegate: UNUserNotificationCenterDelegate { + +} + +extension AppDelegate: MessagingDelegate { + +} From 512d99a7c1cc24553d447ae6bdeae37bf5070c5f Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 25 Jun 2022 22:50:27 +0900 Subject: [PATCH 129/166] =?UTF-8?q?fix:=20=EA=B0=80=EA=B2=8C=20=EC=98=81?= =?UTF-8?q?=EC=97=85=20=EC=8B=9C=EC=9E=91,=20=EC=A2=85=EB=A3=8C,=20?= =?UTF-8?q?=EA=B0=B1=EC=8B=A0=20API=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/StoreService.swift | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 6d385ad..7f71709 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -10,6 +10,8 @@ protocol StoreServiceType { func closeStore(storeId: String) -> Observable + func renewStore(storeId: String, location: CLLocation) -> Observable + func fetchAroundStores( location: CLLocation, distance: Int @@ -51,7 +53,7 @@ struct StoreService: StoreServiceType { HTTPUtils.defaultSession.request( urlString, - method: .put, + method: .post, parameters: parameters, headers: headers ).responseDecodable(of: ResponseContainer.self) { response in @@ -73,7 +75,7 @@ struct StoreService: StoreServiceType { HTTPUtils.defaultSession.request( urlString, - method: .put, + method: .delete, headers: headers ).responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { @@ -87,6 +89,33 @@ struct StoreService: StoreServiceType { } } + func renewStore(storeId: String, location: CLLocation) -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/boss/store/\(storeId)/renew" + let headers = HTTPUtils.defaultHeader() + let parameters: [String: Any] = [ + "mapLatitude": location.coordinate.latitude, + "mapLongitude": location.coordinate.longitude + ] + + HTTPUtils.defaultSession.request( + urlString, + method: .put, + parameters: parameters, + headers: headers + ).responseData(completionHandler: { response in + if response.isSuccess() { + observer.processValue(type: String.self, response: response) + } else { + observer.processAPIError(response: response) + } + + }) + + return Disposables.create() + } + } + func fetchAroundStores( location: CLLocation, distance: Int From f294b10b5d84413d4bffa8a21c90c6c1f3cedc54 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 25 Jun 2022 22:53:14 +0900 Subject: [PATCH 130/166] =?UTF-8?q?delete:=20=EB=B0=B1=EA=B7=B8=EB=9D=BC?= =?UTF-8?q?=EC=9A=B4=EB=93=9C=20=ED=85=8C=EC=8A=A4=ED=81=AC=20=EB=A7=A4?= =?UTF-8?q?=EB=8B=88=EC=A0=80=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 12 ---- .../AppDelegate.swift | 1 - 3dollar-in-my-pocket-manager/Info.plist | 1 - .../SceneDelegate.swift | 1 - .../domains/home/HomeReactor.swift | 5 -- .../domains/home/HomeViewController.swift | 1 - .../BackgroundTaskManager.swift | 71 ------------------- 7 files changed, 92 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 29d5c61..36e6243 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -14,7 +14,6 @@ 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */; }; 6E142D6227D785A40084480C /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6127D785A40084480C /* SignupView.swift */; }; 6E142D6427D785B50084480C /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6327D785B50084480C /* BaseView.swift */; }; - 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */; }; 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */; }; 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */; }; 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */; }; @@ -256,7 +255,6 @@ 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkActivityLogger.swift; sourceTree = ""; }; 6E142D6127D785A40084480C /* SignupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupView.swift; sourceTree = ""; }; 6E142D6327D785B50084480C /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; - 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundTaskManager.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoReactor.swift; sourceTree = ""; }; 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionView.swift; sourceTree = ""; }; @@ -506,14 +504,6 @@ path = signup; sourceTree = ""; }; - 6E1605832807032100F6649C /* background-task */ = { - isa = PBXGroup; - children = ( - 6E1605852807039E00F6649C /* BackgroundTaskManager.swift */, - ); - path = "background-task"; - sourceTree = ""; - }; 6E1AA1B327CB210800C96D92 /* Products */ = { isa = PBXGroup; children = ( @@ -1059,7 +1049,6 @@ 6EE0CF9B27CB54A70027A426 /* managers */ = { isa = PBXGroup; children = ( - 6E1605832807032100F6649C /* background-task */, 6E25FED427F5362A00BE2941 /* location */, 6E37AF7227E7144B004FBE25 /* loading */, 6EE0CF9C27CB54AE0027A426 /* social-sign-in */, @@ -1536,7 +1525,6 @@ 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */, 6E6B4321285DBB5900AD84A5 /* FAQHeaderView.swift in Sources */, 6E91A9912841E09C0090361F /* DailyStatisticsDayView.swift in Sources */, - 6E1605862807039E00F6649C /* BackgroundTaskManager.swift in Sources */, 6E473BA427D874C500232139 /* PhotoUploadView.swift in Sources */, 6EC5E430282BD7E200AD571C /* ReviewCountLabel.swift in Sources */, 6EE0CFA927CB5B6C0027A426 /* BaseError.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index fb5d7fe..d43c0c3 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -16,7 +16,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.initializeNetworkLogger() self.initializeFirebase() self.initializeNotification() - BackgroundTaskManager.shared.registerBackgroundTask() return true } diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 003b526..ee8e23a 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -53,7 +53,6 @@ UIBackgroundModes - fetch location diff --git a/3dollar-in-my-pocket-manager/SceneDelegate.swift b/3dollar-in-my-pocket-manager/SceneDelegate.swift index aa775af..88ce9de 100644 --- a/3dollar-in-my-pocket-manager/SceneDelegate.swift +++ b/3dollar-in-my-pocket-manager/SceneDelegate.swift @@ -50,7 +50,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } func sceneDidEnterBackground(_ scene: UIScene) { - BackgroundTaskManager.shared.scheduleBackgroundTask() // Called as the scene transitions from the foreground to the background. // Use this method to save data, release shared resources, and store enough scene-specific state information // to restore the scene back to its current state. diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 49efd20..789d433 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -37,20 +37,17 @@ final class HomeReactor: BaseReactor, Reactor { private let mapService: MapServiceProtocol private let storeSerivce: StoreServiceType private let locationManager: LocationManagerProtocol - private let backgroundTaskManager: BackgroundTaskManagerProtocol private var userDefaults: UserDefaultsUtils init( mapService: MapServiceProtocol, storeService: StoreServiceType, locationManager: LocationManagerProtocol, - backgroundTaskManager: BackgroundTaskManagerProtocol, userDefaults: UserDefaultsUtils ) { self.mapService = mapService self.storeSerivce = storeService self.locationManager = locationManager - self.backgroundTaskManager = backgroundTaskManager self.userDefaults = userDefaults } @@ -84,10 +81,8 @@ final class HomeReactor: BaseReactor, Reactor { case .tapSalesToggle: if self.currentState.store?.isOpen == true { - self.backgroundTaskManager.cancelBackgroundTask() return self.closeStore() } else { - self.backgroundTaskManager.scheduleBackgroundTask() return self.openStore() } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 4379592..ff7d18d 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -10,7 +10,6 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { mapService: MapService(), storeService: StoreService(), locationManager: LocationManager.shared, - backgroundTaskManager: BackgroundTaskManager.shared, userDefaults: UserDefaultsUtils() ) private weak var coordinator: HomeCoordinator? diff --git a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift b/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift deleted file mode 100644 index c204098..0000000 --- a/3dollar-in-my-pocket-manager/managers/background-task/BackgroundTaskManager.swift +++ /dev/null @@ -1,71 +0,0 @@ -import BackgroundTasks - -import RxSwift - -protocol BackgroundTaskManagerProtocol { - func registerBackgroundTask() - - func scheduleBackgroundTask() - - func cancelBackgroundTask() -} - -final class BackgroundTaskManager: BackgroundTaskManagerProtocol { - static let shared = BackgroundTaskManager() - private let locationManager = LocationManager.shared - private let storeService = StoreService() - private let disposeBag = DisposeBag() - - private let backgroundTaskId - = "com.macgongmon.-dollar-in-my-pocket-manager-dev.background" - - func registerBackgroundTask() { - BGTaskScheduler.shared.register( - forTaskWithIdentifier: self.backgroundTaskId, - using: nil - ) { task in - self.renewOpenState(task: task as! BGAppRefreshTask) - } - } - - func cancelBackgroundTask() { - BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: self.backgroundTaskId) - } - - func scheduleBackgroundTask() { - let request = BGAppRefreshTaskRequest(identifier: self.backgroundTaskId) - - request.earliestBeginDate = Date(timeInterval: 60 * 15, since: Date()) - do { - try BGTaskScheduler.shared.submit(request) - print("BGTaskScheduler.shared.submit") - } catch { - print("Could not schedule background task: \(error)") - } - } - - private func renewOpenState(task: BGAppRefreshTask) { - self.locationManager.getCurrentLocation() - .asSingle() - .flatMap { [weak self] location -> Single in - guard let self = self else { return .error(BaseError.unknown) } - - return self.storeService.openStore( - storeId: "", - location: location - ) - .asSingle() - } - .subscribe { isSuccess in - task.setTaskCompleted(success: true) - } onFailure: { error in - task.setTaskCompleted(success: false) - } - .disposed(by: self.disposeBag) - - task.expirationHandler = { - task.setTaskCompleted(success: false) - } - self.scheduleBackgroundTask() - } -} From db8ea827b834d6557084bb345d82c3c8df4c8da6 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 25 Jun 2022 23:03:22 +0900 Subject: [PATCH 131/166] =?UTF-8?q?fix:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20API=EC=97=90=20=ED=97=A4=EB=8D=94?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager/services/ImageService.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift index 8a072d6..9a19d80 100644 --- a/3dollar-in-my-pocket-manager/services/ImageService.swift +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -18,6 +18,7 @@ struct ImageService: ImageServiceType { return .create { observer in let urlString = HTTPUtils.url + "/boss/v1/upload/\(fileType.rawValue)" + let headers = HTTPUtils.defaultHeader() HTTPUtils.fileUploadSession.upload(multipartFormData: { multipartFormData in multipartFormData.append( @@ -26,7 +27,7 @@ struct ImageService: ImageServiceType { fileName: DateUtils.todayString(format: "yyyy-MM-dd'T'HH-mm-ss") + "_image.png", mimeType: "image/png" ) - }, to: urlString) + }, to: urlString, headers: headers) .responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { observer.processValue(response: response) @@ -41,6 +42,7 @@ struct ImageService: ImageServiceType { func uploadImages(images: [UIImage], fileType: FileType) -> Observable<[ImageUploadResponse]> { var datas: [Data] = [] + let headers = HTTPUtils.defaultHeader() for image in images { guard let data = image.jpegData(compressionQuality: 0.8) else { @@ -62,7 +64,7 @@ struct ImageService: ImageServiceType { mimeType: "image/png" ) } - }, to: urlString) + }, to: urlString, headers: headers) .responseDecodable(of: ResponseContainer<[ImageUploadResponse]>.self) { response in if response.isSuccess() { observer.processValue(response: response) From 6cce9f3e3e6719318c0c5876623584e326fa76db Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 4 Jul 2022 21:25:34 +0900 Subject: [PATCH 132/166] =?UTF-8?q?feat:=20Base=20framework=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 16 ---------------- 3dollar-in-my-pocket-manager/AppDelegate.swift | 2 ++ .../domains/base/BaseCollectionViewCell.swift | 14 -------------- .../domains/base/BaseTableViewCell.swift | 14 -------------- .../domains/base/BaseView.swift | 10 ---------- .../domains/base/BaseViewController.swift | 9 --------- .../domains/home/HomeView.swift | 1 + .../domains/home/HomeViewController.swift | 1 + .../domains/home/subviews/AddressView.swift | 1 + .../domains/home/subviews/SalesToggleView.swift | 1 + .../home/subviews/ShowOtherStoreButton.swift | 1 + .../membership/signin/SigninViewController.swift | 1 + .../membership/signup/SignupCoordinator.swift | 1 + .../domains/membership/signup/SignupView.swift | 2 ++ .../cells/SignupCategoryCollectionViewCell.swift | 2 ++ .../domains/membership/waiting/WaitingView.swift | 2 ++ .../waiting/WaitingViewController.swift | 1 + .../domains/my/MyPageView.swift | 1 + .../domains/my/MyPageViewController.swift | 2 ++ .../my/my-store-info/MyStoreInfoView.swift | 1 + .../MyStoreInfoViewController.swift | 1 + .../edit-introduction/EditIntroductionView.swift | 1 + .../EditIntroductionViewController.swift | 1 + .../my-store-info/edit-menu/EditMenuView.swift | 1 + .../subviews/EditMenuTableFooterView.swift | 2 ++ .../subviews/cells/EditMenuTableViewCell.swift | 2 ++ .../edit-schedule/EditScheduleView.swift | 2 ++ .../EditScheduleViewController.swift | 1 + .../subviews/WeekDayStackView.swift | 1 + .../EditStoreInfoCoordinator.swift | 1 + .../edit-store-info/EditStoreInfoView.swift | 2 ++ .../cells/MyStoreInfoIntroductionCell.swift | 2 ++ .../subviews/cells/MyStoreInfoMenuCell.swift | 2 ++ .../cells/MyStoreInfoMenuEmptyCell.swift | 2 ++ .../subviews/cells/MyStoreInfoMenuMoreCell.swift | 2 ++ .../subviews/cells/MyStoreInfoOverviewCell.swift | 1 + .../subviews/cells/MyStoreInfoWorkDayCell.swift | 2 ++ .../domains/my/statistics/StatisticsView.swift | 1 + .../my/statistics/StatisticsViewController.swift | 1 + .../daily-statistics/DailyStatisticsView.swift | 2 ++ .../DailyStatisticsViewController.swift | 1 + .../subviews/DailyStatisticsStackItemView.swift | 2 ++ .../cells/DailyStatisticsTableViewCell.swift | 2 ++ .../statistics/subviews/ReviewCountLabel.swift | 1 + .../subviews/StatisticsFilterButton.swift | 1 + .../total-statistics/TotalStatisticsView.swift | 2 ++ .../TotalStatisticsViewController.swift | 1 + .../cells/TotalStatisticsTableViewCell.swift | 2 ++ .../domains/setting/SettingView.swift | 2 ++ .../domains/setting/SettingViewController.swift | 1 + .../domains/setting/faq/FAQView.swift | 2 ++ .../domains/setting/faq/FAQViewController.swift | 1 + .../subviews/cells/FAQCollectionViewCell.swift | 2 ++ .../subviews/SettingTableFooterView.swift | 2 ++ .../subviews/SettingTableHeaderView.swift | 1 + .../subviews/cells/SettingTableViewCell.swift | 2 ++ .../domains/shared/CategorySelectView.swift | 1 + .../domains/shared/InputField.swift | 1 + .../domains/shared/PhotoUploadView.swift | 1 + .../domains/splash/SplashView.swift | 2 ++ .../domains/splash/SplashViewController.swift | 1 + .../managers/loading/LoadingView.swift | 2 ++ 62 files changed, 83 insertions(+), 63 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift delete mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift delete mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseView.swift delete mode 100644 3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 36e6243..07dc8c8 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -9,11 +9,9 @@ /* Begin PBXBuildFile section */ 6E07F9B9284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E07F9B8284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift */; }; 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5727D77AF50084480C /* BaseReactor.swift */; }; - 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5927D77B790084480C /* BaseViewController.swift */; }; 6E142D5C27D77CEE0084480C /* SigninCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */; }; 6E142D5F27D77EA50084480C /* NetworkActivityLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */; }; 6E142D6227D785A40084480C /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6127D785A40084480C /* SignupView.swift */; }; - 6E142D6427D785B50084480C /* BaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E142D6327D785B50084480C /* BaseView.swift */; }; 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */; }; 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */; }; 6E1AB7A3280D84D60059DCF4 /* EditIntroductionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1AB7A2280D84D60059DCF4 /* EditIntroductionViewController.swift */; }; @@ -59,7 +57,6 @@ 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9727D8624300232139 /* BaseCoordinator.swift */; }; 6E473B9A27D86D9B00232139 /* CategorySelectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9927D86D9B00232139 /* CategorySelectView.swift */; }; 6E473B9D27D870B900232139 /* SignupCategoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */; }; - 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */; }; 6E473BA227D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */; }; 6E473BA427D874C500232139 /* PhotoUploadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* PhotoUploadView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; @@ -133,7 +130,6 @@ 6E7DFAF7284C2ECE006F0078 /* MyStoreInfoMenuCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7DFAF6284C2ECE006F0078 /* MyStoreInfoMenuCell.swift */; }; 6E81503627EEEA110032C518 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E81503527EEEA110032C518 /* HomeViewController.swift */; }; 6E89A865281E5A3300B795EF /* EditScheduleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */; }; - 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */; }; 6E8D01322843333300FAB49E /* EditMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01312843333300FAB49E /* EditMenuView.swift */; }; 6E8D01342843361700FAB49E /* EditMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01332843361700FAB49E /* EditMenuViewController.swift */; }; 6E8D01362843365E00FAB49E /* EditMenuCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */; }; @@ -250,11 +246,9 @@ 2A1BF8BB4E06EB007E405B35 /* Pods_3dollar_in_my_pocket_manager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_3dollar_in_my_pocket_manager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6E07F9B8284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoMenuMoreCell.swift; sourceTree = ""; }; 6E142D5727D77AF50084480C /* BaseReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseReactor.swift; sourceTree = ""; }; - 6E142D5927D77B790084480C /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; }; 6E142D5B27D77CEE0084480C /* SigninCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigninCoordinator.swift; sourceTree = ""; }; 6E142D5E27D77EA50084480C /* NetworkActivityLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkActivityLogger.swift; sourceTree = ""; }; 6E142D6127D785A40084480C /* SignupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupView.swift; sourceTree = ""; }; - 6E142D6327D785B50084480C /* BaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseView.swift; sourceTree = ""; }; 6E1AA1B227CB210800C96D92 /* Base.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Base.xcodeproj; path = "../3dollars-in-my-pocket-ios-base/Base.xcodeproj"; sourceTree = ""; }; 6E1AB79C280D7ECF0059DCF4 /* MyStoreInfoReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoReactor.swift; sourceTree = ""; }; 6E1AB7A0280D7F390059DCF4 /* EditIntroductionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionView.swift; sourceTree = ""; }; @@ -296,7 +290,6 @@ 6E473B9727D8624300232139 /* BaseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCoordinator.swift; sourceTree = ""; }; 6E473B9927D86D9B00232139 /* CategorySelectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategorySelectView.swift; sourceTree = ""; }; 6E473B9C27D870B900232139 /* SignupCategoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCategoryCollectionViewCell.swift; sourceTree = ""; }; - 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCollectionViewCell.swift; sourceTree = ""; }; 6E473BA127D872E400232139 /* LeftAlignedCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftAlignedCollectionViewFlowLayout.swift; sourceTree = ""; }; 6E473BA327D874C500232139 /* PhotoUploadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoUploadView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; @@ -368,7 +361,6 @@ 6E808CAD27F016CF00C46459 /* Base.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Base.framework; path = "../../Library/Developer/Xcode/DerivedData/3dollar-in-my-pocket-manager-cpqyhqxhepkpbfajpzjhmdywgxbk/Build/Products/Debug-iphoneos/Base.framework"; sourceTree = ""; }; 6E81503527EEEA110032C518 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 6E89A864281E5A3300B795EF /* EditScheduleTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditScheduleTableViewCell.swift; sourceTree = ""; }; - 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewCell.swift; sourceTree = ""; }; 6E8D01312843333300FAB49E /* EditMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuView.swift; sourceTree = ""; }; 6E8D01332843361700FAB49E /* EditMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuViewController.swift; sourceTree = ""; }; 6E8D01352843365E00FAB49E /* EditMenuCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMenuCoordinator.swift; sourceTree = ""; }; @@ -483,11 +475,7 @@ isa = PBXGroup; children = ( 6E142D5727D77AF50084480C /* BaseReactor.swift */, - 6E142D5927D77B790084480C /* BaseViewController.swift */, - 6E142D6327D785B50084480C /* BaseView.swift */, 6E473B9727D8624300232139 /* BaseCoordinator.swift */, - 6E473B9E27D870D700232139 /* BaseCollectionViewCell.swift */, - 6E89A866281E5C4900B795EF /* BaseTableViewCell.swift */, ); path = base; sourceTree = ""; @@ -1357,7 +1345,6 @@ 6E7A49E227D8D3F800E6653C /* StoreCategory.swift in Sources */, 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */, 6E21184B285DD94C00220E5A /* FAQ.swift in Sources */, - 6E89A867281E5C4900B795EF /* BaseTableViewCell.swift in Sources */, 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, @@ -1384,7 +1371,6 @@ 6E1F54B227CB98540050BBBA /* HTTPError.swift in Sources */, 6E91A9952841EE620090361F /* CursorResponse.swift in Sources */, 6E6B431B285DB6B900AD84A5 /* FAQCoordinator.swift in Sources */, - 6E142D5A27D77B790084480C /* BaseViewController.swift in Sources */, 6EF8D108280AA993004D27C9 /* BossStoreAroundInfoResponse.swift in Sources */, 6E91A9892841DC110090361F /* DailyStatisticsView.swift in Sources */, 6E6B4317285DB49C00AD84A5 /* FAQView.swift in Sources */, @@ -1448,12 +1434,10 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6E8D013C2843415900FAB49E /* EditMenuReactor.swift in Sources */, 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */, - 6E473B9F27D870D700232139 /* BaseCollectionViewCell.swift in Sources */, 6E5DCE6527FDB06600CA58EE /* Area.swift in Sources */, 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */, 6E5F3DCF281CEF2A002282B6 /* EditStoreInfoReactor.swift in Sources */, 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */, - 6E142D6427D785B50084480C /* BaseView.swift in Sources */, 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */, 6EE2624727DDB9F2008B3531 /* SignupCoordinator.swift in Sources */, 6EA53BA0284DD766007A3839 /* SettingReactor.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index d43c0c3..56d282d 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -5,6 +5,8 @@ import Base import KakaoSDKCommon import FirebaseCore import FirebaseMessaging +import Then +import SnapKit @main class AppDelegate: UIResponder, UIApplicationDelegate { diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift deleted file mode 100644 index 0eaf620..0000000 --- a/3dollar-in-my-pocket-manager/domains/base/BaseCollectionViewCell.swift +++ /dev/null @@ -1,14 +0,0 @@ -import UIKit - -import Base -import RxSwift - -class BaseCollectionViewCell: Base.BaseCollectionViewCell { - var disposeBag = DisposeBag() - - override func prepareForReuse() { - super.prepareForReuse() - - self.disposeBag = DisposeBag() - } -} diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift deleted file mode 100644 index 1bb6b02..0000000 --- a/3dollar-in-my-pocket-manager/domains/base/BaseTableViewCell.swift +++ /dev/null @@ -1,14 +0,0 @@ -import UIKit - -import Base -import RxSwift - -class BaseTableViewCell: Base.BaseTableViewCell { - var disposeBag = DisposeBag() - - override func prepareForReuse() { - super.prepareForReuse() - - self.disposeBag = DisposeBag() - } -} diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseView.swift b/3dollar-in-my-pocket-manager/domains/base/BaseView.swift deleted file mode 100644 index 8b71a17..0000000 --- a/3dollar-in-my-pocket-manager/domains/base/BaseView.swift +++ /dev/null @@ -1,10 +0,0 @@ -import UIKit - -import Base -import RxSwift -import SnapKit -import Then - -class BaseView: Base.BaseView { - var disposeBag = DisposeBag() -} diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift b/3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift deleted file mode 100644 index 80ab690..0000000 --- a/3dollar-in-my-pocket-manager/domains/base/BaseViewController.swift +++ /dev/null @@ -1,9 +0,0 @@ -import UIKit - -import Base -import RxSwift - -class BaseViewController: Base.BaseViewController { - var disposeBag = DisposeBag() - var eventDisposeBag = DisposeBag() -} diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index 7b8043f..080e827 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import NMapsMap import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index ff7d18d..8efc214 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -1,6 +1,7 @@ import UIKit import CoreLocation +import Base import ReactorKit import NMapsMap diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift index 77cefcc..161faac 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/AddressView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift index 6eecab5..5dbfb88 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/SalesToggleView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift index c70d705..5ce202e 100644 --- a/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift +++ b/3dollar-in-my-pocket-manager/domains/home/subviews/ShowOtherStoreButton.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 558bfcb..5eeb461 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift index 57f196a..8e624da 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupCoordinator.swift @@ -1,6 +1,7 @@ import UIKit import PhotosUI +import Base import SPPermissions import SPPermissionsPhotoLibrary import SPPermissionsCamera diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index c1d50c8..a82d472 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class SignupView: BaseView { let tapBackground = UITapGestureRecognizer() diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift index 2823475..9e262e0 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/subviews/cells/SignupCategoryCollectionViewCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class SignupCategoryCollectionViewCell: BaseCollectionViewCell { static let registerID = "\(SignupCategoryCollectionViewCell.self)" static let estimatedSize = CGSize(width: 56, height: 40) diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift index 4123bae..90c37b8 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class WaitingView: BaseView { private let titleLabel = UILabel().then { $0.font = .bold(size: 30) diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift index 9f57c2e..35c60ff 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift @@ -1,6 +1,7 @@ import UIKit import MessageUI +import Base import ReactorKit final class WaitingViewController: BaseViewController, View, WaitingCoordinator { diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift index 637287e..43c3767 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index f83455d..e846ff0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class MyPageViewController: BaseViewController { private let myPageView = MyPageView() diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift index 88c7b8d..d3f96e1 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index f2c29a2..0e5e990 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit import RxDataSources diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift index 1128695..bb68f8c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift index 63bf698..5d387f5 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit final class EditIntroductionViewController: diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift index 024c110..4d00a7e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift index 5db3620..5cf7721 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/EditMenuTableFooterView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class EditMenuTableFooterView: BaseView { let addMenuButton = UIButton().then { $0.layer.borderColor = UIColor.green.cgColor diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift index ee6f385..72d3374 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/subviews/cells/EditMenuTableViewCell.swift @@ -1,4 +1,6 @@ import UIKit + +import Base import RxSwift final class EditMenuTableViewCell: BaseTableViewCell { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift index 365fe88..c9b3f71 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class EditScheduleView: BaseView { private let tapBackgroundGesture = UITapGestureRecognizer() diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift index 0d4982d..4d2991d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit final class EditScheduleViewController: diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift index af663fe..ad94447 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/subviews/WeekDayStackView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift index 50fdc8c..a7a39b1 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoCoordinator.swift @@ -1,6 +1,7 @@ import UIKit import PhotosUI +import Base import SPPermissions import SPPermissionsPhotoLibrary import SPPermissionsCamera diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift index 9efcfc8..9f8c029 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class EditStoreInfoView: BaseView { let tapBackground = UITapGestureRecognizer() diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift index 3d852df..ab0f8d0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoIntroductionCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class MyStoreInfoIntroductionCell: BaseCollectionViewCell { static let registerId = "\(MyStoreInfoIntroductionCell.self)" static let height: CGFloat = 72 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift index 6afc48f..d82215b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class MyStoreInfoMenuCell: BaseCollectionViewCell { static let registerId = "\(MyStoreInfoMenuCell.self)" static let height: CGFloat = 86 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift index 38de3c4..b35f234 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuEmptyCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class MyStoreInfoMenuEmptyCell: BaseCollectionViewCell { static let registerId = "\(MyStoreInfoMenuEmptyCell.self)" static let height: CGFloat = 52 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift index b7efa1d..db070f2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoMenuMoreCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class MyStoreInfoMenuMoreCell: BaseCollectionViewCell { static let registerId = "\(MyStoreInfoMenuMoreCell.self)" static let height: CGFloat = 48 diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift index 6436ee1..288f6ac 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift @@ -1,5 +1,6 @@ import UIKit +import Base import Kingfisher final class MyStoreInfoOverviewCell: BaseCollectionViewCell { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift index f62c71a..983e0ec 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoWorkDayCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class MyStoreInfoWorkDayCell: BaseCollectionViewCell { static let registerId = "\(MyStoreInfoWorkDayCell.self)" static let height: CGFloat = 86 diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift index 7180aac..9a1c7a0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift index bb8d8aa..6e6c1fd 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit final class StatisticsViewController: BaseViewController, View { diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift index e0bcd58..6615117 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class DailyStatisticsView: BaseView { let tableView = UITableView().then { $0.tableFooterView = UIView() diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift index 5d69238..9e777db 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit final class DailyStatisticsViewController: BaseViewController, View, DailyStatisticCoordinator { diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift index 889adf8..37d7d72 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/DailyStatisticsStackItemView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class DailyStatisticsStackItemView: BaseView { static let height: CGFloat = 22 diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift index 3d909a6..e2d8ef9 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/subviews/cells/DailyStatisticsTableViewCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class DailyStatisticsTableViewCell: BaseTableViewCell { static let registerId = "\(DailyStatisticsTableViewCell.self)" diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift index 572af3a..ffd518f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/ReviewCountLabel.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift index 9d10ea1..4ab4006 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift index def6efa..d3c914a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class TotalStatisticsView: BaseView { let tableView = UITableView().then { $0.tableFooterView = UIView() diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index 1100fa9..8feeb30 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa import ReactorKit diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift index 131af9f..95dfd47 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class TotalStatisticsTableViewCell: BaseTableViewCell { static let registerId = "\(TotalStatisticsTableViewCell.self)" static let height: CGFloat = 74 diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift index f33d081..ac3427d 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class SettingView: BaseView { private let titleLabel = UILabel().then { $0.font = .semiBold(size: 16) diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 3cfe885..8f1f29b 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit final class SettingViewController: BaseViewController, View, SettingCoordinator { diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift index 7cacdc3..48fad86 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class FAQView: BaseView { let backButton = UIButton().then { $0.setImage(UIImage(named: "ic_back")?.withRenderingMode(.alwaysTemplate), for: .normal) diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift index 407f68b..fac6b16 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/FAQViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit import RxSwift import RxDataSources diff --git a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift index 301406d..b87b9d6 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/faq/subviews/cells/FAQCollectionViewCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class FAQCollectionViewCell: BaseCollectionViewCell { static let registerId = "\(FAQCollectionViewCell.self)" static let height: CGFloat = 149 diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift index cc49877..1f9d1e1 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableFooterView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class SettingTableFooterView: BaseView { static let height: CGFloat = 40 diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift index d1751a0..42019d0 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/SettingTableHeaderView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift index b7e9327..5d805ef 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class SettingTableViewCell: BaseTableViewCell { static let registerId = "\(SettingTableViewCell.self)" static let height: CGFloat = 66 diff --git a/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift b/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift index b5bafac..ecee4b2 100644 --- a/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/shared/InputField.swift b/3dollar-in-my-pocket-manager/domains/shared/InputField.swift index c11c2ca..1cc47ae 100644 --- a/3dollar-in-my-pocket-manager/domains/shared/InputField.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/InputField.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift b/3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift index 41be263..31db89f 100644 --- a/3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/PhotoUploadView.swift @@ -1,5 +1,6 @@ import UIKit +import Base import RxSwift import RxCocoa diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift index 2992928..7548614 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class SplashView: BaseView { override func setup() { diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift index 8c92b9c..4f568ea 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift @@ -1,5 +1,6 @@ import UIKit +import Base import ReactorKit final class SplashViewController: BaseViewController, View, SplashCoordinator { diff --git a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift index f33a670..168f7a0 100644 --- a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift +++ b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift @@ -1,5 +1,7 @@ import UIKit +import Base + final class LoadingView: BaseView { let blurEffectView = UIVisualEffectView( effect: UIBlurEffect(style: UIBlurEffect.Style.systemUltraThinMaterialLight) From 89516ac36e74119a91f7da2b9f4e95e4e27ad952 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 4 Jul 2022 22:13:21 +0900 Subject: [PATCH 133/166] =?UTF-8?q?fix:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=82=B4=20=EC=9C=84=EC=B9=98=20=EC=A1=B0=EC=A0=88=20?= =?UTF-8?q?=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=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 --- .../domains/home/HomeCoordinator.swift | 16 ++++++- .../domains/home/HomeReactor.swift | 47 +++++++++++++++++-- .../domains/home/HomeView.swift | 20 ++++++-- .../domains/home/HomeViewController.swift | 17 +++++++ .../strings/en.lproj/Localizations.strings | 4 ++ 5 files changed, 95 insertions(+), 9 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift b/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift index 6727a56..08bb212 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeCoordinator.swift @@ -1,3 +1,17 @@ +import Base + protocol HomeCoordinator: AnyObject, BaseCoordinator { - + func showInvalidPositionAlert() +} + +extension HomeCoordinator { + func showInvalidPositionAlert() { + AlertUtils.showWithAction( + viewController: self.presenter, + title: nil, + message: "home_invalid_position".localized, + okbuttonTitle: "common_ok".localized, + onTapOk: nil + ) + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 789d433..7620738 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -18,22 +18,26 @@ final class HomeReactor: BaseReactor, Reactor { case setStore(Store) case setAroundStores([Store]) case setShowOtherStore(Bool) + case setInitialPosition(CLLocation) case setCameraPosition(CLLocation) case setStoreLocation(CLLocation) case setStoreOpenTime(Date) case toggleSalesStatus + case showInvalidPositionAlert case showErrorAlert(Error) } struct State { var address = "" var isShowOtherStore = false + var initialPosition: CLLocation? var cameraPosition: CLLocation? var store: Store? var aroundStores: [Store] = [] } let initialState = State() + let showInvalidPositionAlertPublisher = PublishRelay() private let mapService: MapServiceProtocol private let storeSerivce: StoreServiceType private let locationManager: LocationManagerProtocol @@ -55,12 +59,16 @@ final class HomeReactor: BaseReactor, Reactor { switch action { case .viewDidLoad: return .merge([ - self.fetchCurrentLocation(), + self.fetchCurrentLocationForInitilize(), self.fetchMyStoreInfo() ]) case .tapCurrentLocation: - return self.fetchCurrentLocation() + if self.currentState.store?.isOpen == true { + return self.fetchCurrentLocation() + } else { + return self.fetchCurrentLocationForInitilize() + } case .tapShowOtherStore: if self.currentState.isShowOtherStore { @@ -83,7 +91,11 @@ final class HomeReactor: BaseReactor, Reactor { if self.currentState.store?.isOpen == true { return self.closeStore() } else { - return self.openStore() + if self.isInRightPosition() { + return self.openStore() + } else { + return .just(.showInvalidPositionAlert) + } } case .moveCamera(let position): @@ -112,6 +124,9 @@ final class HomeReactor: BaseReactor, Reactor { case .setShowOtherStore(let isShow): newState.isShowOtherStore = isShow + case .setInitialPosition(let location): + newState.initialPosition = location + case .setAroundStores(let stores): newState.aroundStores = stores @@ -127,6 +142,9 @@ final class HomeReactor: BaseReactor, Reactor { case .toggleSalesStatus: newState.store?.isOpen.toggle() + case .showInvalidPositionAlert: + self.showInvalidPositionAlertPublisher.accept(()) + case .showErrorAlert(let error): self.showErrorAlert.accept(error) } @@ -147,6 +165,20 @@ final class HomeReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert($0)) } } + private func fetchCurrentLocationForInitilize() -> Observable { + return self.locationManager.getCurrentLocation() + .flatMap{ [weak self] currentLocation -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + + return .merge([ + .just(.setCameraPosition(currentLocation)), + .just(.setInitialPosition(currentLocation)), + self.searchAddress(location: currentLocation) + ]) + } + .catch { .just(.showErrorAlert($0)) } + } + private func searchAddress(location: CLLocation) -> Observable { return self.mapService.searchAddress( latitude: location.coordinate.latitude, @@ -181,6 +213,15 @@ final class HomeReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert($0)) } } + private func isInRightPosition() -> Bool { + guard let currentPosition = self.currentState.cameraPosition, + let initialPosition = self.currentState.initialPosition else { + return false + } + + return currentPosition.distance(from: initialPosition) <= 100 + } + private func closeStore() -> Observable { guard let storeId = self.currentState.store?.id else { return .empty() } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift index 080e827..706037b 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeView.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeView.swift @@ -111,7 +111,6 @@ final class HomeView: BaseView { } fileprivate func bind(store: Store) { - self.rangeOverlayView.mapView = nil self.marker.mapView = nil self.centerMarker.isHidden = store.isOpen if store.isOpen { @@ -123,14 +122,18 @@ final class HomeView: BaseView { self.marker.position = position self.marker.mapView = self.mapView - self.setupRangeOverlayView( - latitude: location.coordinate.latitude, - longitude: location.coordinate.longitude - ) } } } + fileprivate func bindInitialPosition(location: CLLocation) { + self.rangeOverlayView.mapView = nil + self.setupRangeOverlayView( + latitude: location.coordinate.latitude, + longitude: location.coordinate.longitude + ) + } + fileprivate func setOtherStores(stores: [Store]) { // 지도에 마커 추가 self.clearOtherStoreMarkers() @@ -183,4 +186,11 @@ extension Reactive where Base: HomeView { view.setOtherStores(stores: stores) } } + + var initialPosition: Binder { + return Binder(self.base) { view, position in + view.moveCameraPosition(position: position) + view.bindInitialPosition(location: position) + } + } } diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index 8efc214..f1fc1cd 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -44,6 +44,13 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { } override func bindEvent() { + self.homeReactor.showInvalidPositionAlertPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.showInvalidPositionAlert() + }) + .disposed(by: self.eventDisposeBag) + self.homeReactor.showErrorAlert .asDriver(onErrorJustReturn: BaseError.unknown) .drive(onNext: { [weak self] error in @@ -99,6 +106,16 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { .drive(self.homeView.showOtherButton.rx.isShowOtherStore) .disposed(by: self.disposeBag) + reactor.state + .compactMap { $0.initialPosition } + .distinctUntilChanged() + .asDriver(onErrorJustReturn: CLLocation( + latitude: 127.044155, + longitude: 37.547980 + )) + .drive(self.homeView.rx.initialPosition) + .disposed(by: self.disposeBag) + reactor.state .compactMap { $0.cameraPosition } .distinctUntilChanged() diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 26ea06f..876fb56 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -1,3 +1,6 @@ +// Common +"common_ok" = "확인"; + // Error "error_unknown" = "알 수 없는 에러입니다."; "error_time_out" = "알 수 없는 에러입니다.\n잠시후 다시 시도해주세요."; @@ -64,6 +67,7 @@ "home_on_description" = "동안 영업중이시네요! 오늘도 대박나세요!"; "home_on_toggle" = "셔텨 내리기"; "home_show_other" = "다른 푸드트럭 보기"; +"home_invalid_position" = "빨간 원(현재 위치의 반경 100m 이내) 안에서 장사를 시작해주세요."; // Waiting "waiting_title" = "승인 대기 중입니다."; From bd7e42d2c210da411a7edf0fe843585f4ca4de4b Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 4 Jul 2022 22:22:18 +0900 Subject: [PATCH 134/166] =?UTF-8?q?feat:=20=EB=A1=9C=EB=94=A9=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EB=A1=9C=EB=9D=A0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 29 +++++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 9 ++++++ .../managers/loading/LoadingManager.swift | 14 ++------- .../managers/loading/LoadingView.swift | 29 ++++++++++--------- .../resources/lottie/loading.json | 1 + 5 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/resources/lottie/loading.json diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 07dc8c8..22af32b 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -204,6 +204,8 @@ 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */; }; + 6EEBC7BC28731F2700CBA0F0 /* loading.json in Resources */ = {isa = PBXBuildFile; fileRef = 6EEBC7BB28731F2700CBA0F0 /* loading.json */; }; + 6EEBC7BF28731F7700CBA0F0 /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 6EEBC7BE28731F7700CBA0F0 /* Lottie */; }; 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */; }; 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */; }; 6EF676B427EECBED00D43E99 /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B327EECBED00D43E99 /* SplashView.swift */; }; @@ -420,6 +422,7 @@ 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCoordinator.swift; sourceTree = ""; }; 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabController.swift; sourceTree = ""; }; + 6EEBC7BB28731F2700CBA0F0 /* loading.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = loading.json; sourceTree = ""; }; 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsView.swift; sourceTree = ""; }; 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossAccountInfoResponse.swift; sourceTree = ""; }; 6EF676B327EECBED00D43E99 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; @@ -459,6 +462,7 @@ 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, + 6EEBC7BF28731F7700CBA0F0 /* Lottie in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */, @@ -1020,6 +1024,7 @@ 6ED883A027CB3C3A00278E14 /* resources */ = { isa = PBXGroup; children = ( + 6EEBC7BA28731F1C00CBA0F0 /* lottie */, 6EE0CFAA27CB5B970027A426 /* strings */, 6ED883A127CB3C5D00278E14 /* fonts */, ); @@ -1119,6 +1124,14 @@ path = main; sourceTree = ""; }; + 6EEBC7BA28731F1C00CBA0F0 /* lottie */ = { + isa = PBXGroup; + children = ( + 6EEBC7BB28731F2700CBA0F0 /* loading.json */, + ); + path = lottie; + sourceTree = ""; + }; 6EF1D496282D361100DA9D35 /* total-statistics */ = { isa = PBXGroup; children = ( @@ -1207,6 +1220,7 @@ 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */, 6E37A2E72860AFE4008C046F /* FirebaseMessaging */, 6E37A2E92860AFE4008C046F /* FirebaseRemoteConfig */, + 6EEBC7BE28731F7700CBA0F0 /* Lottie */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -1248,6 +1262,7 @@ 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */, 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */, 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + 6EEBC7BD28731F7700CBA0F0 /* XCRemoteSwiftPackageReference "lottie-ios" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -1281,6 +1296,7 @@ files = ( 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */, + 6EEBC7BC28731F2700CBA0F0 /* loading.json in Resources */, 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */, 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, @@ -1845,6 +1861,14 @@ minimumVersion = 7.0.0; }; }; + 6EEBC7BD28731F7700CBA0F0 /* XCRemoteSwiftPackageReference "lottie-ios" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/airbnb/lottie-ios.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -1968,6 +1992,11 @@ package = 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */; productName = SPPermissionsPhotoLibrary; }; + 6EEBC7BE28731F7700CBA0F0 /* Lottie */ = { + isa = XCSwiftPackageProductDependency; + package = 6EEBC7BD28731F7700CBA0F0 /* XCRemoteSwiftPackageReference "lottie-ios" */; + productName = Lottie; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 6EB94E9827CB208E00609E77 /* Project object */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index f29992e..8e9d2f6 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -108,6 +108,15 @@ "version" : "1.22.2" } }, + { + "identity" : "lottie-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/airbnb/lottie-ios.git", + "state" : { + "revision" : "4a6058cbbdfe4f74aeae92c8bd51ad3b0de2a1ee", + "version" : "3.3.0" + } + }, { "identity" : "nanopb", "kind" : "remoteSourceControl", diff --git a/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift b/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift index 4d9dbb8..f7c5058 100644 --- a/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift +++ b/3dollar-in-my-pocket-manager/managers/loading/LoadingManager.swift @@ -23,19 +23,11 @@ final class LoadingManager: LoadingManagerProtocol { } rootView.addSubview(self.loadingView) - UIView.animate(withDuration: 0.3) { [weak self] in - self?.loadingView.blurEffectView.alpha = 1.0 - } completion: { [weak self] _ in - self?.loadingView.activityIndicator.startAnimating() - } + self.loadingView.startLoading() } private func hideLoading() { - self.loadingView.activityIndicator.stopAnimating() - UIView.animate(withDuration: 0.3) { [weak self] in - self?.loadingView.blurEffectView.alpha = 0.0 - } completion: { [weak self] _ in - self?.loadingView.removeFromSuperview() - } + self.loadingView.stopLoading() + self.loadingView.removeFromSuperview() } } diff --git a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift index 168f7a0..f133348 100644 --- a/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift +++ b/3dollar-in-my-pocket-manager/managers/loading/LoadingView.swift @@ -1,31 +1,34 @@ import UIKit import Base +import Lottie final class LoadingView: BaseView { - let blurEffectView = UIVisualEffectView( - effect: UIBlurEffect(style: UIBlurEffect.Style.systemUltraThinMaterialLight) - ).then { - $0.alpha = 0 + let lottie = AnimationView(name: "loading").then { + $0.autoresizingMask = [.flexibleHeight, .flexibleWidth] + $0.contentMode = .scaleAspectFit + $0.loopMode = .loop } - let activityIndicator = UIActivityIndicatorView(style: .medium) - override func setup() { self.backgroundColor = .clear self.addSubViews([ - self.blurEffectView, - self.activityIndicator + self.lottie ]) } override func bindConstraints() { - self.blurEffectView.snp.makeConstraints { make in - make.edges.equalToSuperview() - } - - self.activityIndicator.snp.makeConstraints { make in + self.lottie.snp.makeConstraints { make in make.center.equalToSuperview() + make.width.height.equalTo(100) } } + + func startLoading() { + self.lottie.play() + } + + func stopLoading() { + self.lottie.stop() + } } diff --git a/3dollar-in-my-pocket-manager/resources/lottie/loading.json b/3dollar-in-my-pocket-manager/resources/lottie/loading.json new file mode 100644 index 0000000..6ef9811 --- /dev/null +++ b/3dollar-in-my-pocket-manager/resources/lottie/loading.json @@ -0,0 +1 @@ +{"v":"5.6.2","fr":29.9700012207031,"ip":0,"op":30.0000012219251,"w":2000,"h":2000,"nm":"붕어빵냠냠","ddd":0,"assets":[{"id":"image_0","w":1732,"h":1452,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABsQAAAWsCAYAAACejOa4AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdX4xk130n9u+5VdVdM9PDaY6HZMsc0+VwNGqqaHhiOzYNC3GvN1l5g02kwAbWuy/SmxHkYe2nPAV2kIcgQAD7ZYEAeQj5lgAO4t0nC8jDbFYG5PUiaMPb8Zgaeks0GbWoMdWkumequ+rek4eqJmnZkilrZvrPfD7ARU9VdXX/uqfr1rnnnN/vlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBZVE46AADOl/F4fDXJSpLMZrNe27YXSikrq6urKx/n+dPpdL/f77f9fv9BkqMkRzs7Ow+StI8uagAAAADgPOufdAAAnDsrbdsOk2QwGPRrrWv9fn94fN/fpmmaNE0zb9u2TqfTJOm2trbK7du3H2HIAAAAAMB5JkMMgL9iNBoNkwxXVlY2aq3DXq93K8la27Y3mqYZ1lpXSykbSYZJRllsrlhb3v5Yi14/gL0k01rrbpJpKeWDfyf5Wq11v5Ryt2mavbZt91ZWVu7u7OzsP+KYAOCJMR6P1w4ODvqDwWBUSllrmuZGrXWYZLXrusullH6SHz3+/OXYYVhKWau1fj8bMqdZvOfvJ5nXWt+rtc6bptkvpeyVUvZqrbullGnbtnullOnR0dFukulkMpk+3J8aAAA4DyyIATxZytbWVu+b3/zmcDabDZumWZvNZv2VlZXhfD7vl1LWkhxPXF1NslJKuZHkQpLnu64blFJWjh9LspGkt3x8ZXk8SvtJjmqt7zZNc1RrPUry7vLjN0opD5K8nWR/OYH2dtM0D2qt+23bdoPB4Khpmunh4eG03+8/GA6H7fr6+v7t27drlGQE4MlVtra2eq+//vrKs88+u3J4eHhhNpv1mqZZ67qu1+v1LjRN02/btl9KWeu6rl9K2Wia5kKt9flSyqDrupVSysVaay/Jcx984VKOxwcXshgzfFxHWbznP0jSllIOaq1tkgdN0xy/z7+7/JwPxgellGmSadM0D9q2bbuu2+/1el3XdUe11qPLly8f7e/vP7h+/Xp7+/bt+cP6BQIAAKefBTGAJ8jW1lZ/MpmsLXd1j5LcqrWuN03zo0nWk9zK48n0eqxqrdtZZJTtJpkkmZRS3kiyP51Oty9dujSXSQbAk+p4fLCysrLRNM1GrfXFJGu11lu11rVSyo1SynoWY4W1nO7S+9PlcTfJftd1f1xKmZZSvl5r/UbTNLvz+fzufD7fn0wmeyccKwAA8BhZEAM4f5rRaLTS7/evra6uXpvP51fn8/lKv9/fzGKH9tUsJrTWk2wss8GuZLEItpHFJNdpnuj6u9hNMs8ic2yvlLKXRWbZrJSyW2udLssu7S3LLr3Z7/fvT6fT3UuXLnU7OztHJxw/APxAtra2+nt7e2vT6XS91+utz+fz4zHAKMvxwTL7a62U8vTyvo1Sykqt9Wo+3DCzkqQ5qZ/jY5gvj+PssW8kmZVS9rMYBxw0TfNurfWo67rJMuP83Y+UW94dDAbT7e1ti2UAAHDOnLcJT4An3tbWVjOZTIaDweB627abSW40TbOW5HP5cNHrA6U8EXsjPviZP/rzHv97OUl2N8nXmqaZNE3z5ST3suhZNs+ibBMAnFmTyaQ/HA7Xk4zath11XfcTy6yvrSzHB7XWvzYuqLU+/mB/MMcbe344SZYLfh8opXzwM5VStpflFu92XTcppUyOjo7Stu1eFmMAAADgHHkiZkEBzqvxeHx1Op1e7fV6Lye5Ukq5leRykk8lubg8jnt2XMtiR/ej7vN1FrVJHmRZZqnW+l4pZZZFz7JvJ/mzWuvdpmnu9nq9N5Ls7+zs7J5gvADwXY3H440kG4eHhz/eNM2Vpml+vtY6rLVulFKOM72OSx+u58kdH+znO8YAWWSRzZummXxksewvSilvHh0d3b106dK+MssAAHA2yRADOMMODg5WBoPBWpLns1jwupUPe4Hx8fWymBhcS5JSyvWPPLaX5EIpJV3X7bdt+41erzc/iSAB4ONo23aYZL2U8qO11mu11leSDEspG3/bc58wa8uPVz565zKLbCPJXq21XxZpc/eHw+FbBwcH08ceJQAA8FDIEAM4I8bj8UbbtsOu676wnND6pXzYC4zHrNa6neStJL/bNM3Xkkym0+nuZDIxUQbAYzMej2+1bbvetu3nSykbpZTP5sN+Xzwat0spu13X/b4xAAAAnB0yxABOoa2trf7rr7++cvHixav9fv9i27YX5/P5C7XWi0lGSY6b2zuPn5y1UsoP1Vo3a63rtdaN4XD45ic/+cn7Kysru0mOdnZ23j3pIAE4P8bj8VrTNIPZbHal1vpUrfWp+Xz+qSSXm6a5Xmu9msXYoDnhUM+79Vprl8QYAAAAzhATqQCn0GQyWVtbW9sopXy21rrZNM1mklulFNlgp0Qp5UaSG6WUn1veTq11u2mavdls9mrTNLtJvnSyUQJwztyYz+fXuq77+VLKK6WUV/JhL7AsKvvxGNxKklLKLy4/GgMAAMAZ4IoJ4BQYj8drSdZms9mNtm3XBoPBK0ku11o/nUVvsGtJNqL80Wm3m2SaZLvWuldK+eNSyl7XdXtN02wPh8O97e3tvZMOEoCz4datW+vT6XS967pbTdOs11pfKaVcqLW+UGu9vux5uRIZYaeBMQAAAJxyMsQAToe1LBa8PtM0zUat9QtZnKPXvvfTOGU2lh9HpZRpkq1a6yTJJMnedDqdJDEZBsDHMp1O17Molfy5Wusoi/eVJLLBTiFjAAAAOOVcRQGckPF4fGs+n28k+Wyt9YVSygtZ9AZbyWJSpSTpnWSM/EC6JEdZ7BafJtmttU5LKb9Xa313MBj8UZLdnZ2d3RONEoBT4fr16xeuXLnSa9v2s7XWZ0opv5DkWq31o1niSiefDd9tDPCVJO+WUv7NbDZ744033rh7olECAMATRoYYwAlp23a9lLJRa71VShllsQOc86PJYvLyuMzlxrLHyJ0ku23bfjV2igOwdOXKld7BwUF/dXX1epLrtdZXslgAswh29vyNY4Ak01LKbtd1bzZN840Tiw4AAJ5QMsQAHpPNzc1RklHXdV9YLoBtnWQ8nAqTJJNSymtJJnfu3Ll9suEA8LhsbW31J5PJWq/Xe6XX6/1sKeVXklyPBbAnxV6SvVrrq0kmr7/++msnHA8AAJx7MsQAHqFbt26tz2az4dHR0UbXdaNSyqiUshGTXSwMk6zXWjeTrH/yk5/ca5rmQb/ffzvJ0c7OztEJxwfAIzAejzfeeuutSysrKz+W5KUsssQvxfXZk6SfxThglGT40ksvvTKfz6crKyu7SfZ3dnb2TzQ6AAA4h1xwATxC0+n0VpJR0zRfyGLCY3SiAXHabCyPW0nSNM3tJHePjo7++Ww2202ivxjAOdS27S/1+/1RrfULURbxSbWWZK2U8sUk6bruV5ummcxms1drrX+cZPtEowMAgHNIyUSAh2g8Hq8lWZvP5z9TSrnadd1WKeVKFgseJrz420ySvJvkj7quu1tKuds0zfZwONzb3t7WbwzgjLp169b6dDpd77ruVtM067XWzyc5Hh98tNcUT6695bGdxXjga6WU7bZt97761a9aHAMAgIdAhhjAw7WWRcbPf15rvVFK2TrheDhbRsvjJ5um2a61bifZm06nkywmyQA4g6bT6XoW5/fP1VpH0UeUv+5449Qoy8WxruteLaVMIlsMAAAeChliAD+g8Xi8Np1ON3q93mdLKbey2O39fJILkRHG393+8tittU6T/M9JvjkYDP7v6C8GcOp9x/jgJ5P8ZBabZoYxPuB7my+P3STTUsp213Vvl1L+z36//xc7OztvnnB8AABwJskQA/gBHRwc9AeDwVop5Uat9eVSyk+fdEycC2vLY6OUklrr75dS+gcHB/0sJskAOMW+Y3zw6eWmGfg4+stjlCS11mHTNHdrrf96Npv95YlGBgAAZ5gMMYC/o83NzV+utV5P8ltZTFqsnWxEPAGmWWSM3U5yezAYfGlnZ2f3hGMC4CNu3rz5mSTXSin/a4wPePi2a63bTdO8lmRy586dyUkHxKMxHo832rYdJknXdcOmaTaOH2vbdq2U0m+a5oNs067rplmMFfebpvkrm6d6vd5e27Z7XdftHx0dzSeTiVLcAMATSYYYwMfXjEajlX6/f62Uci3Jp2qtnyil9JP0Tjo4nghNkmEpZaPWutm27ddu3ry5fnR0NLl06VKnjCLAiShbW1u9b37zm9e6rrvWdd3LSa5lca1lfMBDVWs97lf747XWa5ubm+n1elMbZE6/0Wg0fOqpp3rT6fTCYDDoHx4e9geDwYW2bXullLVaa+n1er22bftN0/Tbtr3add3K8ukrtdarx1+r1+tdqLX2ln8PSZJSylGSo1LKg1pr+9HvPZvN9pPsl1IeDAaDdnNzc7/ruraU8qBt266U0jVN82A+n7ellOlgMGhXV1cfvPPOO0c3b948un37dpukPo7fEwDAoyRDDOBjGo1Gw+FwuFFr/XySz2XRK0wPEE5MrfX3k+w2TfPfmQwDOBlbW1v9yWSyNhgMPt80zeeSfCaLBTF4lPaTzGutv5Nk8vrrr7920gHxvW1ubo5KKWtt295omma91nql1nojiyzSW7XWftM0a1lcXzyOa4z9WuvdLPrUTWutb9Ra95um+fdZLJ690XXd7tHR0e5oNNq/ffu2kt0AwJlnQQzgY3jppZdeqbVeq7V+ptY6LqW8nMXu3OFJx8aTq9Z6t5SyX0r5F0nutW375ZWVlV0LYwCPx+bm5qjrumeT/GLTND9Ra72V5IUkF084NM6/oyRdkq8kuZfkD0op28PhcHt9fd3ixWM2Ho9XDg4OmuFwuHFc3rDruvWmada7rruaZKWUspFkJcnVJKtZXEdcXd63kUUlgJXl/Y/jGuMoybtZ9KadJ3m31jorpXwryVGt9VtN0+zXWveT7HZdNy2l7CWZ9nq93bZt946OjvYuXbr0rioFAMBZoWQiwMfQdd3PZtHY/IullMd1kQrfUynlRpLUWteTTEop3z46OkoSC2IAj8eolLKZ5NeW52KZ4zwux6X0trLoG/XTSV6bTqeTyWQyzWKBg8dnJYv5lVGS9a7rfiLJqNY6Wo7XjjO/TpPjhbhjo1I+3DNdSkmtiyqJH9mENam17nVdt53ka4PBYJJFtqIFMQDgTJAhBvA3GI/Ha0nWZrPZPymlvFBr/UfLhbDj3ZvNyUYIf8VxE/XdUsp2rXU7ye/1+/23d3Z29k84NoBzZ3Nz87Nd122UUn49i2ywF7KYDLfhkJPQZbEgsVtr3U3yL5P8f8ooPhrj8XhjPp9fKaW83HXdC8trhRdKKRezuFboZ7EAdryJ7kIW/QTP8vnhQZI2i/HmvNa6X0o5Hn++vexbtt113XullH/Xtu3ucDjc3dnZOX4eAMCpcJYHZACPzGAw6E+n02Ep5WaSzeNMHDiljidc1mut01rrtJRy+eDgwPs8wCPQdd1GFpkgt044FEgWG7WGWWT4jGqtd/JhBhkPWdu2wySXa63Xv+Na4TRmgT0sF5Yf15JF9thHXD8efzZNc6/Wuts0zf7BwUF/a2ur3L59+3HHCgDwXckQA/iIW7durU+n01u11l9N8o+zuOizqMBZtJtFk/S/1+v1pvqKwdkxHo/XDg4O+oPBYFRKWWua5katdZhktdZ6I8laKWW91tovpRxPwH50EnY9H2YofKe9LEqpfZA9WmvdXe70T5JprXW31vpeKWWvlHL82KTWun94eHg3yXRZku2JsbW11Z9MJmuDweBXm6b5x1kshJ3XiW/Oj9tJ7pRS/sfhcLi3vb29d9IBnSXHr/ter/dKr9f72VLK8et+64RDO0u+nORerfX3mqbZvXPnzpdOOiAA4MlmQQxgaTwe3zg6Ovqhpml+LsnfS/KL+bDECZw172bREP03krzXdd2fJHn/7t27759wXPCka7a2tpqvf/3rFy5cuNDb399fGwwGvbZtL9Rah/1+f1hrvdK27aCUstE0zYVa6/OllEHXdStJnk9yYbkQ1ktyoda6trx97IPH/obvv59F+aoHx3eUUt6ttR73fzmqtb67LId10DTN8WO7pZQHbdu+fVwmq2maB23btr1eb28+n8/X1tb233nnnaObN28e3b59u01SH/pv7wSMRqNhKeXKYDD48VLKf5rkHyQ5zgaB02w7i8Xs12qtk0uXLk3W19f3b9++rb/YdzEej9cGg0H/4OBglGQ1yTNJXiqlfPojWWAyQz++P0nyXq31y03T3Cul/MF8Pp+WUqZHR0e7eQI3WAAAJ8uCGMDSpz71qd9Ocj3Jr5x0LPAwLRuh//Omab7yp3/6p1856XjgSTYajYZJhqurqzdKKWu11p9IslZrvVFKGWVRhm8ji/Jnp9Vx35i7SfZrrf9qmU223XXd7tHR0e5oNDo3k+6bm5ujrutulVJ+O389Gw9Ou2kWWeP/opTye8PhcFum2Hc3Ho9vtW27Xmv9zSxe6xa/Hp7jv8VJrXXSNM1rSSZ37tyZnGxYAMCTxIIY8MRalkHpr6ys/GLTNM92XfdrTdM8VWv99EnHBg/Zu0n+KMmXSylfnk6n25PJxGQYPGLHmQaHh4ebXdddLKW8UGtdX5Y73Ki1Dkspz2XR6+dqPlxsOe3leufL490kR0m+lmWpxaZp9mut+7XWN5umuT+bzXabprnf6/XePGsl28bj8dUkK/P5/NdLKZ+otf4X+bBnI5wV8ywWru8k+bMkv78sXXf7ZMM6eaPRaNjr9Z4aDAafrrVeX/YEe6HWerGU8gtZvNY3TjrOc+S4XO9ekr1a63Yp5b1Synatdb/rursrKyu7ynwDAI/Sab7QBnikJpNJP4sL3X9Ya325lPJKreeiuhN8p6tJPptkteu63nA4nGQxGQE8WmvT6XRYa/3ZJNdqrZ9JslFr3ciiD9hZHYv3l8cPL2+PkqSUkuP30eUE517TNH+c5F6SL0+n00nO1rnnahaLk79Wa/1uPdngtOsnWS+lvJLklVpr7bpukkV/sSfdMMmzXdf9QinlleXv6Cyfm0+7fj6SZbvsyZZa6+1lv8rfPzo6ShZZZAAAj4QMMeCJMx6PV5Jcnc/n/1mSf5jkp5I8HSWQOP/2lseXk9zr9/v/7Xvvvde+9dZbD/6W5wF/i/F4fGs2m60lebGUcqOUcuM4CyzJtVLKIMmVLLLBVrLo8XWex+L7+TAbYJbkvVLKvST3aq13k+z3+/0vJdnf2dm5e4Jx/jUvvvjijcFg8GKSf1prfSHJZ7L4v9JTlPNgN4uMzv+paZrdXq/3pSRHOzs7R3/bE8+65TXAymw2+4+TPFNK+dVSysXl6/yp5XHez82n0V4W2cbvZtGvcrfruuNMxi+dcGwAwDlj5xPwxDk4OGiGw+FwWRLlp3P6e7XAw3K8K3cvyd7BwUH/ypUreeutt044LDj72rY9fn2Nkrxca72VZKOU8qS+vxxnU32w2aTWelwma5hkr23bP+z1Tt8aU9M0a13XbZRSPp3kRlwzcb5sJMly0b5/cHDQz2Lx+tw7ODhokvRXV1c/UWu9nkXGnOzPk3f8PvFsFlnUe0nudF13giEBAOeVnU/AE2Vzc3Mri4nK/z76gMAkyXYp5TfOWm8fOCnL/pNrw+HwVq31J7LIHrqWZOtkIzuzpkl2u677syR3Sim/2zTNW3fu3Jk87kDG4/HGbDb7bCnl80k+/7i/P5yA/WXG5v/eNM3/Np1OdyeTyfSkg3qYRqPReq/Xu97r9X75uGxkTn+fRj40STKptb5aa/3jr371q9snHRAAcLadvi2ZAI/AjRs3nrl69erVUsovJnkxizKJ/TgP8mSbllLud1036bpuvra29v7e3l6XRDM9+IjxeLz2/PPPX7x06dL1Bw8efKLX6326lPJSrfWTpZQfy2J3+8ZJx3lGdVmUVDxqmiZN0xx2XXf12WefzTPPPHPl+vXr3XA4zN7e3iPNYNnc3BzVWl+otf58KWUzyQuP8vvBKdEmOSyl3Ku13u/3++9evnx59qhfb49Ys7W11btw4cJz165du9br9W6VUm4k+Q9LKS8keS7JIElzolHycU2zyGDc6/V6/WeeeebCtWvX+s8999zwm9/85v5JBwcAnD0yxIAnwubm5i8vS6P8zknHAqfMNIt+Da8lefU87g6HH9R4PL7Vtu1627afL6VslFI+G1nGj9rv1Vrfaprm/0gyedQZYzdv3vzNJKNSyhcf5feBU+q4nOlvNE2zfRIZmg/LaDQaJhmurq7+cq31einl17PYBKcs4tl3/Hf6apLJ66+//toJxwMAnEEWxIBzbXNzc5Rk1HXdP1nuCv2lEw7pXBj0mzQleeriIINeyZW1lfSakl6v5OJqL/1ek9X+hxtvVwZNVgcfLxnv2/dn6WrNrK2ZtzVtVzObd+lqzb33DtN1i/sPZ20OZ11m85quSmj6AcyT7Cf5SinlD0spv7u6uvqW8ok8yUaj0XA4HG5k0Q9sVGu9VWtdT7JZa73UNM1xXykltx6dO0ner55jexMAACAASURBVLX+aSllN4uF++22bfceZsmsGzdufHowGDzVdd3/kEWm362H9bWfdL2m5NLww5fIoFfSNCUrg4+XmHM463I063I071JrzeFMP6FHaLo8freU8vZwOPyd2Ww239nZOTMZOB85b7/cdd3LSf6jUsrVLEokNklWTjRAHobjv9PtLBbGXmuaZm84HG7v7e1NbegCAD4OF/HAeTfquu4XSin/IIuJTR6CQb+k15Rce2olF4f9vPDsxawOelkZNLl2ZTWrgyZPXRh88PlPXRzk8sWP95bz9r0Habuag8N5jmZdDmdd7h/OM29r7rz5ftqu5v50nvcfzFPvzzLv2kXBH/6u+llMAr9Sa93sum57Op3uZ7ELF55I6+vrw+l0OkqyVWv9hSS3SinrSVKK/WSPyWaSlFJ+JsusgK7rXi2lTLKYDH0o+v3+S13XXY8ecA9dv1dy+cKH7/2Xhr30mpLLFwff41kf+vb9ed6/P1uMAToLYo/YccbrP6q1TqfT6au9Xm+axYaZM+H4vF1r/U9KKZ/LooytLN7z5fjvdGt5e6/rusl0Op2sr6/vZbFYBgDwPbmiB86l8Xi8MZvNPptkq5SyFRfFH9vF1V4urvbzo89dzMXVXl547lJWB002nh7myqWVXLk0yMVhL72myeqgSa8pWR00aZqSppQM+iWllPSbD99ier2/evt7OZx1qTVpa02tNV2XtN0iA+z+dJ6axe22rZl3NV//yweZHrW5fzjPwbTNm+/cz3sHs+wdHOWdb00zPepy7/3DR/GrOm/my+NPSinvzWaz/6rX6z14/fXX3z7pwOBxGI/HN5KszefzL9Ra10spt7JYLF7PotSWjWQn5/j8tJtF78PtWutuKeX3Z7PZG2+88cbd7/cLvvjiizcGg8GLtdZ/tuwFd+OhR33OHI8Pnnt6mNWVJs9cWc3qoJfnnh5m/dIgVy4NsrqyGBdcuzJMU5JB78NssKYpKSUfezwwX77XL8YD+SBj/L2Do9yfLt739/ZnmbU1b75zkOlRm3e+dZiDw3nuT9u8d3+W2dwi2vfpKElXSvlyrfX1+Xz+28Ph8N2dnZ13Tzqwv8l4PL6aZGU+n//XSX4oyc8lubY8VqJP2Hm3m2Raa91N8m+T/NvBYPClnZ2d3ROOCwA4xVzYA+dS27bDLHqBjCIz7PvS7y0Wup5eW8nli4vsr4ur/fzosxfzzJXVXLuymovDfnofc0Lr+3X5+/z8N6+sLjLG7s/y7fvztF3N6qBJKYvd5bWe5b7wj9Vx+beXaq3zpmnW2lbqHU+UtbZt1/NhNpjSeafH8flplCS11mGSSdd1203TfOPv8gWbplnrum6jlPJjFsM+nuPxwVOXBrm4ulgI++vjg0UW2PPXLj6SGA5nXe69N/0ge+zee4c5nHU5nLW5f9jmweHifattax7RMOW8W0mSWutPJ+k3TbN2cHBwmrPEVpZj/pezWARz3n6ybCTJ8npvWmu9t/x7AAD4rlwmAOfOzZs3fzOLxbAvnnQsp9XqoMnKoMlPffLpPL22kp/51A/l6csr+alPPv1B6cPz5O17D/Lt+7P86Zvv5893D/LnX9/Pnb94/4NFNP5Ge0m2u677jdlstjuZTOy25Vw57jdTa/18ks9lMZG6fsJh8f3by6KXzG80TbN9586dyff65Fu3bq1Pp9NbXdd9sZTyhccT4tnx1MVBLl/o5ydvLsYHL/3IU2d2fHD/cJ62rfnDO3+Zb9+f50//4v3ce+8w9947zJ2/+Hbevz876RBPu+Meo691XffqysrK3dPSU+yll156peu6n03yxSwWyp27OXacSfz3er3eVLYYAPCdZIgB58Z4PN5o23bYdd2olLJx0vGcFsclip55anXRz+PiIJeG/axd6Ofm9bVcvjDItSuruXyhn15v8bnnzeqgSTvs59qV1cza7oMyj/cP23zjW9Mczbu8dzBb9ixrM5vXdLWedNgnrZ/kqaZpXu73+81oNNqbTCZHSdSf4izrbW1tld3d3etJLtdaP5Xkx7KYTDUuPpv6SYallJe7rhvevHlz2DTNdDqd7o5Go/nt27c/2PUwGo2GDx48eLqU8nIp5ZkTjPlUuLjaS7/XZH1tkEGvydrFfp66sOj5+eInzv74oFdK0kuevryS1UEvP3p4KeuXBnnmymqGK70cTOf51v4s87bL/cM206M2D47adN2iRCMpWby+PpHk1nw+f288HuekFsW2trb6b7311sXBYPBCrfVTtdYbSdZKKc7dfNRKknRd90rXde9vbm7+v9PpdG8ymeiNCwAkkSEGnCM3b978QhaZYb910rGcJsfli/7Ln7+ep9cWu7yfv3Yxz1+7cNKhnQr/5s5f5t57h/nX/+5e3r73IG/fu5977y9KMJFpkt1SymtJXp1Op7uTyUTDcs6s8Xi8dnBw0F9ZWflnSa6XUn4li/6SSiydE7XWV5NMmqZ5bTgc7m1vb38wCbq5uTlaloL7X+L/PS/9yFO5fLGfv/+Tz30wPnjq4iCXLw5OOrRH7jh77P/6f77xQfbYn+/u58+/vp/7h23a1orYR0yTTLuu+40k21/96le3TyKI0Wi03u/3N3u93n+TZHN5wPcyqbW+2jTNv7pz587tkw4GADgdLIgBZ97m5uYoyajrui8sa8hvnWQ8J+m4FOIzV4Z57ulhNp4e5hM/NMyFlV42X3gqF1Z6+cTVC3nqYv+JmPD6ON6+9yD3D+d58537H5RQ/No3DnL/sM2dv3g/B9M2b75zcNJhnpTjcklfKaX8YSnld1dXV9/66AQznAXLMnnrtdZfrLU+W0r5bJKnknw6H/an4nzYLqXcS/IHXdfdqbXeWVlZ2R0MBtPpdPrrtdYfSfJP84T9v68Omly60M+NH76cjePxwdVhhqu9/AefWMtwpckPX72QlUEvq2eoLOLf1Wzepdbkz7++v+hL9v5hvvXto3xr/yhfe+d+7k/n+fe7B0/6GODYfHn8yyRfv3Dhwm/NZrP548oUG4/HV5OszGazL5ZSnkvy/7N39zFynPed4L/PU1Vd1dXv3TU9PeyZnuZwZtjDpsSRKI2UUIxGkW0qWmct5mVjn33r4Ha9lzt7L8ndH7e32L09IIcNsMCds0ACJMgfFx/ukCwQRA6wtxftxrfas7XwaR1bckST1OuI4lhDssl57+merqrn/qgZ2pH5rpmpqu7vBxhIsETpS6u7+unn9/x+z3MI7gtzDuLfT7G2AuA1pdS3Afx/UsrXPnpQgoiIiAbPwHwJJKK+Vvd9/2khxDyCewQGVsKQyNoGDldSmD2Sx4mJPGZqWRa/7mC3U26qmrn5v124FNwv9uIrQGu1O8ibYTqCUXJPKqUavu+/1ul0NhBsMBDFRqfTySP4fPhlIUQDA/5Z0edmlVIdAJMAXhZCmNvb2/A8b0Up9UUMaGdYwpAoZRKYO1q8uT6wLR2aHMzzkYYeFP0atexP/LW/eusGlte38Y3vXR30NcCu3eLx8wDcTqfzO5qmdRAcmDkIRQSjEf9LBO9djkWne5UHMC+EyCulKgBWOp3OAriOJSIiGmiD+Q2IiPpCs9ms9Hq9Mwi+6Mwj+II8UJtchi5h6AKPT5dQzCTwt54YgaFLFDMJpHfuCRvkDa8HtTtK6drq9s3usfevbOLS1Ta+/94KVjd6aK11w455kFwArhDiVaXUDV3X//PV1VXv8uXLW2EHI7qdZrOZ7nQ6FU3TzgghHgXwKIAaABsD9lkxgHwA2wg2PVcAbCilXCHELACJnTtm+pmTMzGUNfHUQw6Gciaa9TwSu+uDZLA+kCJ+94IdhPUtF67nY3m9d3MN0Frt4tpqF9/662u4ttodtDXALg+AAvCvAbyp6/pXAWzsV6fY5OTkMV3XZ3zf/8+EEDUAxzEg71/acxs7Pz8AsKbr+n8FYPvcuXM3wo1FREREYWCHGBHFlud5FoI7w+oY0NP+UgCaFBjKm6gULJyYyEPTBGyTj/ePY/f/v4xtoNvzUUgnYBoSnq/w7ocb6HS9kBMeOB2ArpSaBtDZ3NzUc7kcLl++HHYuotva3NzUDcNICyEmlVLHdoohNBgkftRJUgEAMWCVH9OQyNg6JippVJ0kTk4Vwo4UG5lksAYopBM31wCLrS1kkm28/s4y1tq9kBOGRtv54ywQrMMty9q3e0UNw8j6vj8K4GEEHZ9EDyq98wMAHc/zLE3T7vT3ExERUR8brG+GRNQ3jh49+utKqUkhxFfCznLQqk4SVSeJs6dGMVPLojH2k+N+aP+9+K3LWGxt4cVXLmN9yx20DbKXAbx28eLF3ww7CNFHNZvNSQBp13VfBMdr0QCZO1q8uT6oOvbNkcC09/7yu0u4stzBS99ZwuL1LSy2Bq5hugNgSSn1B9vb279fr9c3Xn75ZXcv/sHNZnPSdd0vK6WeFEI8uRf/TKKPWAGwAOBrUspvnz9//tsh5yEiIqIDxGMxRBQrzWYzXa1W7V6v90tSyiqAmbAz7TdNE0joEpWihaGcheOHcxgvp9CoZTGUs5BL8X6wMLRWu9A1ga7rwzY1mAkNnq8A4OYf+9gKgM1KpfL9crmMa9euDdxOIEXP5ORktlgsDu2MRzyilPoUgtFarApQXzINiZSlo+okUSkmMXskj6pjY7qaQdY2YFvsFt8vyxvbkFKg5/owjWANoMlgvdbZHoguch9ATwhxSdO01nLg48yR1Obn5zXDMB5WSk0BeEpKOQpgaG/iEv0NrlJqW0q5DGDDcZz1dDrdWVlZ2ZOiLhEREUUbO8SIKFaazeas53l5pdS/DzvLQcnaBjK2vnPiOzj5TdFy4dIazl9aw4uvBF1ji9cHoj50GcCfAnjp4sWLfxF2GKKZmZknfd9/Qin1FSEEx2tR36s6SVRLyZvrg7lGKexIA2mxtYXFVhsvfWcJS8sdfON7V8KOdJAWACz4vv+bb7311msP+g9pNpvpzc1N3TTNFwHksTOWkegAvKyUellK+bULFy4shB2GiIiI9h87xIgoFur1ulWv19Pb29t/B8BpAI+FnWk/mYZELm3gocN5nJwq4FTTwSOTBYwN2XByZtjx6BZSlo5c2sBUNQPPDwqZrdWPc1g6+pRSphDCHRoaUul0emVlZWXf7hIhupV6vW4NDw+XS6XSswCeBvAzO8UwdoVRXzINiUImgZPTRcw1Sjh13MFMLQsnZyFrs2M8DAKAaWjI2AbqlRRsU0elaOHG+jaAgegat6SUPyyVSsXr16+/fT+/cHd93+12X9A07RkhxCcQFMTSd/u1RHtFCJFXSq0MDQ0VWq3WQth5iIiIaH9xjgYRxUI+n7c6nU5eCPFJpVRfF8MAIGFIlDIJzB0tYvZIHicm8rAtHZpkY28UOTkTTs5EbdiG6yl0ez4WW1s4f2kt7Gj7Kbtzt0fH933XsqwFBKMUiQ6SBeAQgM8g6ChgVwH1tYQh4eRMPHV86Ob6gMKVsQ1kbOPmnW1ONoF3P9zEW5fXAQDdnh9mvP2WB5BXSv0MgAkA99Ux/mPr+7MInt/1vY9IdEf1nZ8F3/cXENyTS0RERH2MO6tEFGnNZjMBoNjr9T4thPhbSqmfEkKU0KcF/enRDNJJHf/1z0/CSmgYKSaRTupIJ3VIISD41I603VPgSzc62Oi4eOeHGzh/aQ0XLq3h+++tYHWzF3LCfbECYMX3/f9V07Q3L1y48FLYgaj/NZvNIoBEr9f7baVUUUo5h6CjgF0F1JdqZRspU8ev/fwk0kkdRw6lkbaC9QFFy3q7h61tDx9e7+DdDzfw7tImvvXX13BttYvWWt92jl8D0BVC/H3f92+8+eab/+lOf/NH1/cA5gAUERxyIArDEoAOgN/3ff/SW2+99cdhByIiIqL9wW9QRBRpm5ub0rIsS0o5qpSaFULk0MfPrnRSRyGdwImJPDRNwDb79rfal3Y7+KpOEt2ej7Slo9vz0VrtwtBlyOn2TR5AXghxyPf9vm6Jo0hJeJ5nAZgVQqQBVMIORLSfUqaOjK3jeD0Hc6dLjKJpt2OsnLdgGsFn/+vvLGOt3ZeHYnYNAYDv+xUp777e+ej6HiyGUfgqAKCUatzLa5iIiIjii70GRBRpMzMzx33f/y0AjZ2fvrK7qfWJR4bx7CPDmKllkeEdIH3pm399Da3VLn73z98KimT9d0p8A4Dr+/4zvu9vvPPOO/d1jwjRvZidnc13Op28Uuqr4Hgt6mPBoRgNc40S5o6WcOaxCioF1gviqrXaRbfn42v/7j1cWe7gpe8shR1pv6wIIb4D4EuWZa289tprPzFKudFo1H3fnxVCfBU7h2oOPCXRnS0ppf4CwJ+/+eabXw87DBEREe0tLewARES3s/OF+YgQ4gwAB0Au7Ex7qVKw4ORMNMayaNSymKikUcgk+rmTaKCtbvagSYEryx2kkjraHQ8A4Hoq5GR7xgMghBD/SdM0M51OL87OzmJhYaGvL0+hA6M1m82U7/sTvu8fB/AMgGFwRCL1IdOQyNoJzNSyODqaxcRIGrWyjaTJr25x1fMUhABaq9tIGBKbHQ+6FOh5PpQC+mYlALgA1pVSb3W73e2HH354eWFhQQFAvV638vm8LqV8SggxDeA0gq6wRJiBiW5hG8CqEKJVKpVWTdNsr6+v93WLJxER0SDhtyoiiqxisfjrAE4JIf42+qwYBgC/cHoUP3WshC//7SmcmChguGixGNbHhgsWxodTOHGkgKlqBtdWu/B8heWN7bCj7RUDwabWowBGDcN4xXVdf2lpqRNyLuoDzWYzBWDS9/1fVUr9UwBHAGRDjkW0LypFCw8dzuGffeE4fvqYg2PjWRbDYs5KaLAtHQ9P5NEcz6ExloWUAks3Ouj2vJt3kPaBBICSEOIpIcTG9evXvz87O+suLCz4lUplVNf1NIA/RlAMq4DFMIqmpBBiEsFrdDKRSLxx/fr1VtihiIiIaG/wmxURRU6z2ayUSiUHwG8IIerok7thNE0goUs8MlnAsfEsnn/iEMbLKVSKSWiagBScYjsIBAQShkQulYBt6TB0ifW2i26vrxqppFIKnue56XR6aWVlxUdfHYCngzQ9Pd1QSjUA/Irv+ycB1BDcJcmHJvWVkWIS5byFX/6ZMTx8OI/GWBYJQ0LX+FLvLwK6JmFbOg6VktA0iVzawJXlvjo/IgG0NE3rbm5utkdHR+G67q8hGHU7D3aGUUwIIdJCiI1SqTRy/fr1C2HnISIioo9PDzsAEdEtVBDcJzAfco49pcugEPL40SJqZRunjw+FHYlCkLF1ZGwdY0M2nJwJ29Sw2Gpjrd03k1jyCNYXv6KU6gB4bX5+3n355Zf7quJHB6qhlGr4vv9FBJuovEiJ+tJIyUIhncBn52s7d4jxq1o/Mg2JqpOEkzPx6FQBCUNisbWF19/5ieu24kpHsBZoCCFWfN9vdTodKKW+uPPXeWcYxUUFQEUp9RyAJQC8T4yIiKgP8FsWEUVGs9lMA0i7rvtFAI2w8+wVy9BQLlj46WMl/NQxB9OjGWSSfPwSMDOWQbWUxPRoBmubPfzOn72JnudjdTP2xbGkEGJSKXXGMIzUlStX/g8A74cdiuJlenr6cSllUSn1WwBsBPeFca4s9Z2ZWhaNsSx+bm4EI0ULtqWz/XEAGLqAruk489gItns+PF+htdrFN9+4hp6r0HPjfY5ECHEMwKgQYg5AG30y8WE/GbpEzjYwlDPh5BIwExo0KeDkTEghgtGbpoaU9aNBP07OvPnnu6+bzrYHXwWN+duuwupmDz3Xv7nG7Lk+Ll1pY9vzsbrRQ7vrot31Dvz3Gxc7r+Ht6enpLwNYfPPNN1kYIyIiijHuyBJRZBiGoXc6HQtAHX1UEJNSwDY1VB0bx+s5ODkTpsE9XQIytoGMbcDzFdodt59eFxqAtBCiAmDS87xk2IEofqSURd/3K0KI42FnIdpPGdtA1UniyEgaVYePy0EhhQAEUCkETa+1sg1NCmhSwBN9MWU4u/OTV0q5YHfvXUkRdBBmbD2YImDp0KRA1UlCl0HXaNY2kLF/tI3z48+M7Z6Pbs9Hu+vC9YLXULfno7XaRdf10e15wZ/3fCyvb6Pb89Hpeth2JQAWxO6gCAA7h73CzkJEREQfEw8fElFkTE9PvwDgBSHEGfTJKdKzp0YxXrbx+WfHYRoaEv1T8KB9sNjawoVLa/jnf/wDrG+5fTNGUQjxe0qpty9evPg7YWeh6Gs2mxUAFdd1/xDAY2HnIdovVSeJs6dGMdcoYe5oMew4FAG7xYsXX7mMF791Ga21br/dMTrQMnZQ0GqMZVF1kqg6ScyMZZHdKYqHNSo1KKR5eP9qG+2Oi7/83hW0ux4uXdnE4vUtLLa2DjxThC0opf5ISvkfLly48HLYYYiIiOj+sUOMiELXbDYTAIqu61Z2ugFif8n2bhfYxEgaw3kTmiYgeASB7sI0JPJpA8frOVy62obrBSd9PT/ep1GVUlUhBGZnZ/O9Xs89d+7cRtiZKJK0ZrOZ7PV6NSnlMQQjEon6UrAZbqPqJJHlGGXasdshVClYmKllce79Vaxu9jjOLmaE2J0QoSNlakgndRi6xHDBgm1qqJVTN8ciZm0j6ATTBLSQviwIAWiaQMrSoEuB8XIKnZ6HlKmhkEnAyZlodzx4vsLy+jZcz8f6lhtK1giwANSVUm/vHOC5ce7cue2wQxEREdG94/YsEYWu2WxWPM97Tin1AoDPhJ1nL5w9NYqqk8RXPjMVdhSKGc9X2Oy4+PrO6fD3r7b7ZiNMCPGMpmkr586dey3sLBQ9O/dITvq+/6u+738RQUGMlQLqS1/5zNTNDjGij1pvB13i//LPLuKtxXWc/2A97Eh0H4JOL+3m/YAnpwoopBOYa5TCjnbfdl+LFy6tYa3dw19+7wqWN7bx3beWw44Wtq8rpb5uGMZL586dWwo7DBEREd07bjIQUahmZ2fzW1tbo0qpeSHEeNh5Pq5aOYXxYRtPzpQwUuI9IHT/hABMQ8OJiQJMQ8P/89oVXF3p4vyltbCjfWxKqRdc112YnZ1dWFlZ6SwsLHTCzkTRsPNZUAPwWQAnEJzA5ozZOzANCSEEErqEbWqwLR2GJiBlcN5NkwK29ZNL/W7Pg+8ruJ5Ct+f9jXFsrdUufAX0XI5o2y8ztSwytoG5RomdYXRbCUMiaxuYP1HG8cM54JVFbHZcXLraDjsa3cbudIi5oyVYCYlDpSScnAknZ+JQMQkroYUd8YHsvhYPj6Sw3fNhJjRsbLl4qJ7HWruH9XYP5y+t9dWo73s0KaV8rtfrvVOv17GwsMCiGBERUUzwWxgRharT6eSVUqNCiKcB5MPO83GND9t46vgQnpgp3bwkneh+SCFgGgInjuRx4kiw2fDuhxt9URBD0AH6WqfT+Xo+n18BwIIYAbj5WTAhhPgVBJ8FfIDeRcKQ0HdGcu1uuqYsDdpOQcw0NDg58yd+3Vq7B89XaHfcmyf/P/rXegM7CWv/7d4dxDvD6E5MQ8I0JOZny3A9hfOX1tBa7bIgFmFDWRMZW8fZU9XgnrBaNuxIe2L3tZixgynGjVr25l13i60tLLbaWGv3sNjaGriCmFJqVCn1kmEYGwBYECMiIooJFsSIKFS+7/+qEKIGoIIYP5NGSkl8+olDeHgih4cO51HMxP4aNIqITz9xCFvbHlqrXaxu9vD991bDjvRxVACc9H3/tzY3N18E8GdhB6JwNZvNIoCE67pflVIWlVKx/izYK2ZCQpMC40MppG0d06OZoAvM1DFcMGElNAwXksG9L0LA0CUMPegO252HLqWAof1kk53nKyil4Pk7P96P7ijc7HrwfB/tjofVzR5WN7extNxBt+fj/KU1dLd9XFnuoN11+2aU60HZHZ129qlRVNlBTvfINDSYBvCl54/cLIa9f7XNwljIbEtDLmXg4cN5HDmUxuShDEaKFpIJDVUnCU3r75spDF3AyZnI2jomRlKY2SmS/eX3rmB1Yxt//d4qrq110Vrthh11PyUA6FLKLymlbjSbzc+trq56ly9f3go7GBEREd3ZwG84EFHo6r7vV6SUse4GSCY0TIykMDZkszOM9tTu6M1bdXrEkAWgAOA4gFdCzkLRkPA8zwIwq5SywM4wAMG4Q00KZGwdhUwCtbKNrG0gk9QxPpyCbWqoOva+/Lt3u8daq11cW+0iaepod10s3eig3fWwsrGNbVcCYEHsfmRsA1UniWopiarDghjdm92Oz4mRoDvHyZlorW2HGYkQ/HcJDiZYmDyUwYmJ/M2RiYNgd5qBaUhk8KM16rsfbqC1qmPhyibWtvq+W0zu/EwIIQ5tbm7quVwOly9fDjsXERER3UV/H10iosg6evToc0KIilLqfws7y4Oyd0ZT/d5XTvbVaBSKrnc/3MAf/pt3cOGD9diPUFRKfVsI8W1d13/v3Llzb4edh8IxPT39hwAeE0LMhp0lLNWde2ZOPzR0s2Cye89UVLVWg5P/5z9Yw1q7h2989wrW2y7OfxDv59J+qBQsfOqxCk4/NITTx4fCjkN94Bvfu4K//O4SvvlGq987cCLn9PEhODkTX/nMFExD9sthpX2xO07xD//Nu3j3ww0sXu/7xqmvA3jj4sWL/zTsIERERHRn7BAjooMm5+fn5YcffjgCYDzsMB/HSDGJdFJH1jZgW/G8KJviJehETOPG+jbev6Kh2/Ph+eruvzCCpJRZpdRor9cbaTabG+fOnePdCwOkXq/nLcvKK6UKSql02HkOghDBGEPb1JEyNaSTOgxd4nAlhVwqgaqThJM1kbWNyI/bMnQJ2wruLrNNDTO1LDa2XCQSEhtbLja3XKxvuXA9H92eH3bc0NimjlzKwHg5hVwqugVOipd82sDESBpvLW4AAIti+0iTAikreB/nUgYmq2kUM0EnmKEPRjfYgzINiaxt4OhoBhlbh5nQ0O0FI8BdT8V2/XoHjlKqMLVQFAAAIABJREFUPDk5OQpg7e233+YJESIioohiQYyIDlS9Xk8sLCxYpmk+r5R6LOw8H8ennziEqWqGnWF0YEZKSXzp+SPI2gauLnfw/tV2bO/xUUodA3AMwNu9Xu8CgK+FHIkOkGVZs77vPy2EOCmEqIed5yAExTANM7UMGmNZnJwqoJBOYK5RCjvafdvdHK6Vg7GNZx4bQbfno7XaxevvruC1d5bx3beWsby+PQhdAbdVK9s4Xs/h88/G+vwPRczJqSJOThUBBJ3jL76yGHKi/pWydDTGMjc7PGs7I2vp7pycCSdn3vye9OK3LmOxtYUXX7mM9S0Xa+2+G6n4FICKpmnnpZTfBvDtsAMRERHRrXE1R0QHqlQq1aWUD0spPw1gDDG8L2ZiJI2T0wXMnxhGfTiFQiYRdiQaMJ6nUMgk8OH1DrbdeHdgCCG2pZQjo6Oj3yiVSvq1a9d4OUofazab6XK5fMzzvHkhxCcA1BHDz4F7ZegShiZwcrqIxmgGn3i0gpNTRRyr5zBeTqGYCTrC+oEQu/fKSJSyJsbLNo7X8zfHiq1vuQDQj10BP8G2NCQTOj77zDhmallMj2bCjkR96lDJxuvvrsA0tNgekIma3ef2M7NlNOs5/Owjw5ip5TBSSsI2tZv3utH9EQCKWRPlvIlCOgEzIbHZcbHtxncN+1FCCB/BHltrdHR0odFouAsLC/3zGyQiIuoT7BAjogNlGMao7/tPADgEIB92ngcxMZLCs48Mozme5d0BFIpGLYvDIyn81ZvLWGv34n7Kdk4p5XY6nbymaR0AG2EHon2V9jxvVgjxJID5sMPsN0MX0KTA3NEiKgULZx6rwDQ0JIz+G7WlSYGMrSNjZzBV/VEBKJPUd+6SCTrF4lzAv1e2qcM0JJ6fG4HZh/+tKRp2u8S+9m/fw3rb5ejEPbL73H72keHgfkfe/bcnGrUsPF/h2HgWr168gcwFHVdudLCxc1iiT+QBPK2UutDpdPILCwsdAH31GyQiIuoH7BAjogPRbDYT5XJ5yPf9F4QQ/wWACmJWlHdyJs48NoL5E2U81RxCLmXwlCiFQsrgBPNwwcLjR0t49cINGLqM60azBiChlCr7vj92/fr1b4YdiPZHs9msuK57DMB/A6CBmB6KuBMpBZKmhsZYFqeaQ/jCs3WcPTWKnzrm4MihNLKp4H4wIQbns2MoZ2JqNBg5dryew8RIGludoJOlXzta/u4n63j+8RE8NJFHMsGOEtpftWEbh0pJvPHeKgCg5/V/F+Z+GCkmMT2awd97bgK//DNjODlVxKFSElaCWyZ7RUDA0CVK2QQaY1kcrqTw+NEizl9aj/M69scJAAaCzvcjhmGcb7Va10PORERERB8Rq81oIoqvzc1NaVmWBcBBMCIrdkxDouokUSkm2RlGoZJCAAIYH06hUvTj3oGwu9N0HEAnzCC0vzzPs5RS2Z07w/quGAYEYwM1KZBPJ1B1kjg2nkWlYCHTJ2MRH8Tu52XVSd58Vr3+znLcO1vvaNSxMVXNxP3ZTDExVc2g2wvWAtuuBNCfheb9ljQ1FNJBoWZiJDXQz+39IgSgCYFCOoFCOoF2J7hLrI+elQLBHlsZQMPzPDvkPERERHQLPK5IRAdienq6AeAfCSFmAZwIO8/9+spnplB1kjh7ajTsKEQ/4cKlNZz/YA3//I9/gO1erO8UuwzgTwG8dPHixb8IOwztrenp6e8BSAshJsPOsh++8pmpvh+LuNde/NZlLLa28OIrl7G+5ca+SDbXKGHuaBFnT42i6iTDjkMDpNvz0Vrt4k9evoQ/efl9tLsePHaK3ZNaOYXPPzuO2SN5nJjoy7Makbc7VvfFVy7jwgdrOH9pLexIe0II8XtKqbcvXrz4O2FnISIioh9hhxgR7bt6vW4JIdK+71cApOI0KiqT1KFrQWcYu8IoqmxLRz6VwMRIGks3OriyHNtGKxPAqFKqPDs7m8/n8xsvv/wy716IuWazWfE8z/J9Pw2gb6oEpiFhGhpGihYsU0PVSaKYSeyMRAw7XTw4ORO+AmZqWSwtd7C03MHqZg89N15FfSkEDF2gkDb+Ricc0UGRIngmlfMmpqoZvHV5Hev9dTfTnjJ0CSmC7rqRUhKVgoWUxa2RsJiGRNbWMTGSRrsbHI5orXbjfMALAKCUqgBw6/W6lUql/HPnzm2HnYmIiIh4hxgRHYBKpTKqlHpYSvnfCyGKYee5H8cPB/ed/He/1MB4ORV2HKJbyqUM5NMGRooWNjsu3lrcCDvSg0oBOAZgzfO8Jdd1bywtLcW2ukeBQqHwi0qpeSHELwghsmHn2SuVooWJSgr/8IVpfHZ+HHONEurDKRi65J1R92h8OIUjh9I4OVVEKWtClwJXVjqxu1ssYUg4ORM/9/ghfHa+Bpsb63TANClgWzqcrInmeBbff28VrdVu2LEiq5hJIGsb+F/+wSzmT5RxcqqAYiYRdqyBZVs6nJyJk1MFlLImsraBS1fbWG/HvqhbA/CwYRj/p5TSuHbtWmwX6ERERP2EBTEi2neFQuEFKeVxAE+FneVemYZEytLxc4+P4JGpAmZqfbOHS31KANA1iXbXQ89TWG+7cT5Z2wGQ6Xa7b2az2fWVlZXY74gMonq9btXr9XSv1/uCEGIOMb0/8qNyKSMYjdco4dRxBzO1HPKpBLuCHpAQQYeVaUgM5U1s93zk0gkstrbCjnbPKkULZ0+N4sSRAkclUqgEANPQsNjagm3psXofHYTd9f2zjw7j8eki5hol2JYOK8FtkSjJpgxIIXColMSlq21IKeD7sR0BqgFY9H0/f/369R+EHYaIiIg4MpGIDoAQYt73/YqU8dksNA0NGVvHXKOI4/Vc2HGI7spKaJgYSaO1to1218Niqx3b+3iEEA0AFSnlvwbwQwQFMoqZfD5vdTqdPIDHADwZdp69kksl8NTxId43s0c0KZCxdTRqWTRqWay1e1hsbeHVC9fDjnbPnJyJs6dGkbWNsKPQgMvYBjK2gRNH8nByZqzeRwdhd33/zIkyGmNZjkOPoKqTRNVJQpPA8vo2vvnGNXi+Qi+eR6N22w4/A+A1BPfkEhERUchYECOifdNsNosAEq7rnhFCxGIOiZQCVkLimdkyPnWygunRDEcfUazMjGVQLSXR2fbwwbU2XvrOUtiRHkQagCWE+LVEIvEhgH8YdiC6f51OZ04p9UkhRDXsLB9XLmXA0CV+4+w0cikDD03kkeZnw764stzB+1fbYce4Z2dPjaJeScHJmdA1jsqkaDh9fAjdno9vfPcKNrsuLsXoPbUfLENDuWDhmRNDmD9RxvRoBukkC9hRNj2ahev5+MefO4bLV9v4V//hA7S7buxG6u6YBYBmszkLYOncuXOxXJwTERH1C36TJ6L9lPA8zwJQCTvIvRIiOK1ezltojGWRThq8C4ZiZfd0+EgxiW03tiMT9Z2fI0KIUthh6MH4vl8UQkwCiP0MOUOXMA2J4/UcbEtHpWCFHalvdbZ9tDvxaQWoOkmU8yZHZlKk7HY+ZWx+3QeCA2+2qaHq2Def41zfR1smGbx2Z8ay0GUwVnfblQBiWRDLA8h7npcHsBJ2GCIiokHHVSAR7Zvp6el/BKAhhPhi2FnuVa2cwuefHecoLOobZ//ZN9HuerHquLiF3wRw+eLFixw1EwPNZrPied5zSqkXEIwJii0nZ8LJmviNX5jGVDXD+6H20XrbxVq7h//2D76H19+J/n6hkwuKYN/4F8+EHYXothZbW3hjYRX/5I++j+2eH+e7RR9YYyyLmVoW//hzMzANDQkWr2On2/PRWu3ixVcu48VvXUZrrRvH1/IKgNeEEF+7cOHCH4UdhoiIaJBxNUhEe25+fl6v1+sWAEcpFZvuMCdnYihvolKwkOIoLOoTU9UMxoZsmIaM82noOoBD9Xrdmp+f55sz4nY6g+sAYnsBo6FLODkT9eEUjtdzyKcT7ADaZ1vbHpY3tuG6Kuwo92QoZ7JASpFnGhLppI6qk0RmwO64swwNtqljppbF+LANTRMQsV0GDTYpgtdypWBhprYzwSN+I2p1BJ1ipWazWWk2m7G4ToCIiKgfaWEHIKL+k8/nswiKYb8ppZwPOc49O/PYCB6ZLODvPD2GYobfUag/HBvPYaSYxF+9tQwFxPFELRB0mmZ0Xf/3ruv6S0tLnbAD0e0NDQ01lFK/haAoFsvZgsVMAqePD+EXT4/i7//cBCpFi/dJ7rO3f7iB7729jO+8eQOrm72w49zV2VOj+OljDmZq2bCjEN2WbelIGBKGLrHV9QbqLrFDjg0nZ+KrvzaLRyYLsE2OSYwrTQrYlo6xoRTmGiW8/u4ylje2sR2vNW0CwTUCbc/zXE3Tfnjt2rWNsEMRERENIhbEiGjPZTKZhlLqSSnlJwA4Yee5G9vSkEzo+Owz46iVbYwPp8KORLRnBATEzpFo1/PRWutCKSAePRg/IoRwlVJt3/c7rVbrcth56NYajca87/snhBDPIyiGxa6KNNcoYaaWxadOVnC4kkaBByQOxOvvrOCVcy28t7SJrW5074jJ2gacnInn50bQGMvevKuJKMpMQ8PyxjaurnSx3fPh+XFbBdw729SRSxs481gFc40SZo8UoEnBYlif0DWJzraHUcfGhQ/WIKWAH6/XcweA5fv+X12/fr0VdhgiIqJBFLtNCiKKPiFEHcA8grEQkWebOkxDYu5okSOxqO9kbB1jmo3n50bQ7Xk4/8EaXN+L253kllLqEIDPKKVWAHw77EB0a77vP42gMywWz/9bmTtaRNVJ4tlHhsOOMlCuLHfw+jsr2Nhyw45yRxlbR7WUxHQ1g8YYu8Mo+tJJHScm8nj3ww288d4q1ttuXLvF74ltaXCyJn52toyZWpZ3hvUR05AwDYn5E8Nod1z82SuX4fkKvWh/bHxUXQiRl1L+QdhBiIiIBhU7xIhozzSbzUS5XB4C8GkAvwKgiBg8Z848NoK5RgmnHxpCMqHxBCn1HU0KpJLB3SGZpIGl6x1sdOK1e4DgEE8RQM9xHK1QKFy7cePG4Mx+irhms1kpl8tp3/f/iZRyAsBQ2Jnu1+njQzg5VcQXP3kYEyNpjkg8IO2uh3d+uIn/+IMWvvPWDfRcFekO1mdODONzz4xjspqBlYj8EofopoQuMTZk442FVdxY3w47zp4zdIliJoGfnR3G556pYaaWQ8Y2IHlxWN+xDIlsKgHXVRjKWbh4eT3sSPdDB2ADeNtxnGyr1Xon7EBERESDht/0iWjPbG5uSsuyLKVUHsGM9FhwciaqTpLdYdS3pBSwTQ2lbPBaj+lp6d3LyMsARgFwTlmEeJ5nAYAQoqKUiuW9YbufBVUnGXaUgeJ5CmvtHtpdLxZdK4V0AhMjaRbDKHZyKQO1st23r10pgg6ict7EVDWDVJJ3hvUrc+c1XCvbcOM1LhEI1rO67/sOYvR9mYiIqJ+wIEZEe0bXdUcp9QKARthZ7sVMLYvGWBZnT41iYoT3hlH/OzGRx4mJPHQp8f7VTfzv/24h7EgP4mkAT2iadrnRaHznwoULC2EHIsD3/f8JuDkyN1bmGiXMHS3i7KlRFsNCcG21gxdf+QAXPoj2CX8nZ+L08SHMNYp8nVAsOTkTTs7E2VOjeHSqENc1wC1lbB3H6zn8z7/6MLK2gYzNbY5BcPapUSy2tmAaEq9evIFXL1wPO9I9E0L8KoL7xL4WchQiIqKBw5UiEe0lUyk1KoTIhB3kXmSSBjvDaCCVC0FzlW1q8H2FTgy6Mn6MBKALIcaVUhsAFkLOM9CazWZic3NTKqUqACBiNJpK1wQySQPlPLuEw+T5audOo2hfbGhoEk7OhG32Z3cNDQ4nl4Dr+9A0AaUAP34dNj9hvJzCSDF4jmtafD6H6OMzDYmqk0T5iolCOoH1rR5cLxav6QQAzM7O5nu9nnvu3LmNsAMRERENChbEiGjPGIYx5Pv+LyIYaxZ5M7WgO8zJcfIaDZZPPhpMaPnT//cS2l0P71+N1VVcCQAJpdQXAKwA+IuQ8wy64s6o3DNhB7lfmaSBR6cK+NnZYTw/NxJ2nIHV7ng4f2kN61vRvtcwnzZw+riDqmOHHYXoYzn90BBcT+F3//wteL5CuxPtYvS9+Pyz4zc74Giw7HY9moaGra6H7761jOWNWNyRVwSATqczq2naCoDXQs5DREQ0MFgQI6I9MT093VBKTSAohkX6/pisbaBRy+LwSApZ24DOk6Q0oJ5/4hAWW1tYWr4M11fw4nGidlcFQH5mZubJXq+39vbbb/8g7ECDqNfrTQJw4tQZBgSfA1UniU88OoyJCkfmhqW11sX19S7Wt6LdIVZ1kqiWkqg6NrIcxUYxZ2gSmgRmjxSwsrGNv35vNexID+zIoTTSSR0ztSxsk+/NQXa4ksInHh3GleUOPD+4mzIm5j3PWwALYkRERAeGq0Yi2is/XhCLtIytY+5oERMjad4xQAPt+blDeGNhFf/Xqz8Een4cC2Lwff9JTdMuA2BBLBxHANTDDnG/MrYeFMQeGYZpcAReWK6tdnF9fTvyG5dBMSzJu8OoLxh6MB72xEQei62tWBfEJg+lMVyw0BjLhh2FQjYxkkbVSeLl165iOQafK7uUUk8DyIWdg4iIaJBwB4CI9oTjOL/u+35DCHE07Cx34uRMTIyk8StP11B1kkgnWRCjwWUaGlJJDSMFC66v8P6VWI1O3FURQuSHh4e/XS6Xce3atVjMyekXjuP8AwCnhRCjYWe5F7mUgYxt4H/8QhNPNEoYK6egaSJWd5/1k3/7V0t498MNvP7uSthR7uizz9RwpJrB9GgsrkgluieFTAIJQ8N//EELgIjVXWK2pSGXSuALz9Zx+vgQRyUSpAyKvWZCQ2Msi5e/fzXsSPcqDwCVSuX1nXUs7xIjIiLaZ9wJJqI9oZSqCCGKYee4G9OQSFkanJyJFEer0IAzDYmcbWCqmsEbC2thx3lQdQAtz/Msy7I6YYcZNDvP/UrYOe6VoUuYhkRjLAvTkNAkC2FhWl7fxno72neHAcFhmlzKCDsG0Z4aLlhYWu5AkwKeiE8xDAB0GTzLy3mTnZsEAJBCACLo6M3E68BjHkDe87w8grtxiYiIaJ+xQ4yIPpZms1kplUoOgN8XQtTCznM3//hzxzDXKOF4PQfTkGHHIQqdaWioOjbMhEQhncCV5Q42OtHfoP4xFoKLyZ/0PK/barV4B8MBaDabs6VS6Tml1C8BmAw7z736/LN1nHmsgrlGCbYVqw2zvvS7f/4WftjaQmutG3aUW3JyJgqZBH77753AeJl3zVF/MQ1tp7CkwfOBxdZW2JHu2fNzh/CVz0yhOZ5Dxmaxmn7EyZmoOjbW2j1Uihbe+WEsGq5c3/eV53kry8vLb4cdhoiIqN9xN5iIPq60pmmRvzdstyuAp7yJbi2XMjBeTiGXMmCbsTsvowPI+75fnJ6edk6ePMk3+T7b3t7OKqVGAcRiTlU6qaNSsDCUNzlaKwI8X8HzFdbbLja70S3A26aGLDfbqY8lDIlKwUI6JgcEDD1YyxfSBrK2AU1jly/dWtVJYihnQtNE0D0WbQkhREXX9ez8/LwOIPKBiYiI4owFMSL6WFzXnfQ8bzbsHHeTSxlwciZOHx/Cw4cjX78jOnAPH87j88+O4+HDOYyX7bDj3K80gFkhxByAp9bX13k5+f47ppT6RQBDYQe5F0cOpfGpxyqYf7iM08djEbmvdXseNjsuzn+whktXo3t34Xg5hcZYNuwYRPummEngU49VcORQOuwo9ySXMnD6+BBOThfRqGVhc/w53cbZU6N4+kQZtqnB0CNfXyoKIc4IIY4tLCyk5+fnY3cyjYiIKE5YECOij0UIMamUinxBbKaWxVyjFHYMosh7YsbB808cgmlIGHrslglHhBDPaZpWqdfrVthh+lGz2UzU6/WKEKIihKgASISd6U40TSBrG5iopPFEo4SMzc3TKLi22sXi9eiPZ2tw7UB9TohgdGIhbaDqJCM/Tjxt6Zg9UsBwgR/xdGemocHJBocha9EfeSsBWEqpfCKRqLz55puRXlsRERHFXbRXvEQUeUqpIwBOhJ3jbhpjWcwdLYYdgyjynpwp4fm5Q0gYMg4naj9qEsAZz/MqCO4Wo72XMAxjtxgW+YKYLgUyto6JkRTmjhY5/i4iWqtdLLai2xm2a6bGtQP1NykETEOikEmgWkrCNKLdmJJO6jgxkUelkAw7CkWcaUgM7UwHicHkg5sFMSllpVwuR3ptRUREFHc8JktED6TZbKYBpF3XPQYgsh1itqXBNnVMHkrj6Ggm7DhEkZdLGfBVMGrmynIHL31nKexI9yMNwBJC/Lxpmk0A/zLsQP3Gdd0hKeUvATgWdpZ74eRMnD01iocO52FbehzuERkIl662sdiKbodYLmUgl0qgzDvnaEDMjGWBU6P4w//7Hay1e2HHua1Oz8P7Vzdh6AJOjjUDurNcysDph4awvLGNxdYW3r+6iXbXCzvWbQkhTvi+/8V2u70EYCXsPERERP2KBTEieiCGYeidTsdSSmWFEJG9lEuXEqYhkU7qyLAzgOiudsckVp0kPF+FnOa+6Ts/hwD4IWfpS0opE8CoECIWFyuZhoaqk0Q+bUCTLIZFRbvjRXrT3dAlbFODldAiP0KOaC9k7N2RidHuEPN9oN110fP4EU93Z+gSTs5EIZNAxtahaxJAdAtiAPJCiLrv+5xyQEREtI9YECOiB9Lr9eoAZqNcDAOCTf3GWBaHK2lUHY5XIbpXX/zkYby1uI6lGx28t7SJdz/cCDvS/fglAJiamvqa7/sb77zzztthB+oXmqblfd9/GkCkn/1A0OU4MZLG2VOjYUehj7h0dRMXLq2FHeO2ZmpZPHV8iN1hNDCqThJVJ4nhgoXLrTbW227YkW5prd3DqxdvIGsbaIzF4lwGRcDc0RKqpSR++0/OY+1SdA9jIBhFnZdSVur1en5hYYFdYkRERPuARx6J6IF4nmcDcABEuu0qk4zHJeFEUWQlNEyMpOFkEzANGbtxc1LKSSFENewc/WJ2djavlMoiuJ8t8oeqqk6SI7UiarPjRXbDHQASukTWNqCzq5AGTDGTQKUQ3eYUz1dYb/fQ7bFDjO6daQTP9ExSj/pdohKA7vu+ret6OuwwRERE/Yo7xET0QHzfr/m+fwpALuwsdzJTy+LsqVGe8iZ6AIdKSXzp+QmcfmgITtaEocduc/jLmqa9EHaIftHpdGaVUscQnGCO/EbN2VOjOH18KOwYdAuXrrVx/oPodogN5SzMjGVhW5Gv+xLtqcePFnHmsZGwY9xWu+Pi/KU1tFa7YUehGHFyJhq1LGZqWTTGIn2ndAJAWkpZ03V9MuwwRERE/YoFMSJ6IEKIvBCijqBTIHJMQ97sDsjaBnQtdhv5RKETIriDaaqawSceHUYhHbtumzqAienp6cb09LQTdpi4U0rNCiEiv0FTK6cwU8siaxssaERMu+uhtdZFz41md4emCWRtA4WMASdnwuDagQaMkzUjPWLc9RXW2y7W2j2sb7lxvOuUQtQYy2KuUQo7xl0ppWqe5zXCzkFERNSvuEtARA9EKRXxgpiGaikJJ2ciY/NRR/QgpBAwDYGpaga2qeHVizewtNwJO9b9qAPYANAAcAFAK9Q0MaeUmvV9vyJltM9TjZdtPvsjqt11cW01ugUxXQpkbB2FdILjNmkgDeXMSI8Z9zx1sxi21u4hoUtoHG1K92imlo10wXeXEKKmlIruG5GIiCjmuFNARPel2WymAUy6rltDMDJLCznSLeVSBk4/NIRaORV2FKLYc3ImsraOpx8eQq1s46XvLIUd6X5UpZRf9n3/XzWbzcvnzp3bAuCFHSqOhBAnEINRiacfGkJjLBt2DLqFzY6L1moXPS+aBTHb1DEzluWYZRpYtWEbnqfgZE30PB+rm72wI93SysY23r/SRsbSI13Ao2jZfX3blgbPV+huR/OzCMDjUspm2CGIiIj6FVePRHRfDMPQPc/LK6VsBEX1SB7LNHQJJ2ciZUWyXkcUK6YhkbENDOUsDBci2RR6J0ml1CQAZ3NzU5+fn4/kMysm8kKIyBfEnFy0R34NMs9X6PY8+BHdg9Q0gYxtcIOdBpZt6jffA4YW3fdBz1Vod1x4iiMT6d7tvr41KaLeWVhEcF8rERER7QN2iBHRfel0Onnf9+d3xiVGUsY2UCvbOHtqNOwoRH3l7FNVuJ7CN757Bd2ej9ZaLC61twDUhRDPJRIJa2lp6Y8ALIQbKV6OHDkyKaVMIxhBGVkztSwaY8EPC2LRtNjawqsXbmC9Hc2uk6xtYK5R5OuHBt6zjw7jynInsh3hi9fbePXidUyPZuJ4vymF7IufPIzF1hZefOVy2FFuJw0A9Xq9DqCzsLAQzTciERFRTEX32BcRRVKv19OVUnmlVGTnCRXSCWSSRtgxiPqOFAK6JjAxksahUuw6xTIARl3Xtefn53kg6D5IKdOapuXDznE3tqnByZkw9Eif+h5oPddHu+vB86PZ1SFl0EEQ5c4YooOQtQ3YZnSnLHieQrfnw2eHGD2ASsFCMRP9QqqU0jFNMxd2DiIion7Db3tEdF+klGkp5QkhRGTHOJycKmB6NBN2DKK+YyU02KaOLz0/gU8/eSjsOPfrmBDiFzVNqy0sLER+7F+USCknlVKzYee4m1o5hdPHHeRTPBARVaubPVy6soluL5ozEy1Dw3g5hVwq+hulRPupUcugNhzde3jbXS+4j9CN5rOEou1Tj1Xw+NFi2DHuyjCMpwA8FHYOIiKifsOCGBHdFyFEAsFM88huKE+MpDFSjF33ClFsVB0b9eEUThzJoxKfO8V0AJZS6olEIvFc2GHiRClV8X2/HnaO29E0gaxt7NwdZiNhRLerYdB5nsK2G82uDtPQYFs6nJwJm/eP0oCrOjacbGSHQaDdcdFa66LnRu9ZQtGCZad1AAAgAElEQVRnGhrSSR1VJ4msHd1DNEqpilIq+pU7IiKimGFBjIjuV+QLYocrKYyUeP8H0X6pOknUK2mcmMhjOD7FZx3BfWJPAjgTcpZYEUIMCyHGw85xO7oUyNg6hnImqk4SpsHlbVR5vkK350WyIJYw5M7YzUSkR8URHYRqKYmhXIQLYrsdYh47xOj+mYZE2tJRLSWRsSM9RXtYCFEIOwQREVG/ifSnPxFFy5EjRyaVUjUhRBoRLqjP1LLcECXaZ04ugbOnRqFLgcVrW1ht92IxukgIMQdg+8iRI5Oapm29+eabi2FnijohxCSAyI5MLGQSOPPYCI4ciuw5DdqxstnD+1fb6G5H71kxXrYxnI9NgZ9oX6UsHemkDidrot110e56YUf6Gza7Lro9LxbrDoqmtK3j0ekC/IvAYmsr7Di3JISYBeCGnYOIiKjfsCBGRPdMSpkWQtiI+LMja+vQNBF2DKK+Zhoaqk4ShUwCpiEh4/OWKwLB88zzorXBF1W+76eFEPmwc9xOQtcwXLCQTkb6o4kA9Fwf7U4033e2qcFK8DANEQBoUsDQJExDYtuVAKL1vvU8Bc9T8KPXbEoxoWsShXQCyWh3BOd3DqISERHRHuK3PiK6Z5qmze50CkTSzFgWc0eLyNgGbJMbo0T7SZPBvU3PPjKM/+FzM6iVU2FHui9Syq/quv7lsHNEWb1er0xNTc0KISoAIlsQK2QMfOKRYUxUuGcUVd2ej8XWFtbb0T3o3qhlY/ccI9pPGdvAXKOEqhPdMeSt1S4Wr0ezu4eibShn4uypUTTGsmFHuZO6Umq0Xq/n6/U6W5iJiIj2CAtiRHQ/0gAi+604besoZBJhxyAaKMmEhkImgaytR/pi8lvIK6Xys7Oz3GS4DV3XdaWUhQivF21TRzKhwTQkO4MjTCmFbs+H60d3vJlpaDB0voaIdmkSsC0NhhbZjwB0tr3Idp1S9OmaQDIhkbUNaNEddaDpup7WdZ1fcomIiPZIdFe3RBQ5SqlJANWwc9zO9GgWj04Vw45BNFBGSkmcnCrieD2Hxlgm7Dj3Y1YIMdvpdGYty6qEHSaKpJRpKWUFQGQ3YWplG6OODSdnwo722KOB1nMVWqvdSG9cOzkTuVRkX+pEB85MaKiVbeTS0T3scmW5g/evbIYdg2JIkwK2qWOklERjLIOUFdnpIkld1yd1XeeXXCIioj3CghgR3Y8KgELYIW4nl9IxlDPDjkE0kB6dKuITj1ZgGhKGHpvlRR7APIB6uDGiSdO0vBCivtMlFklVJwmHz/3I85VC1/XgRfjCn6xtsKhK9GP0ndHICSO6n+k9z8e2G93OU4o+29Th5MzIdggLIRK+71d4lxgREdHeie7qloiiaBhAZE+n5VMGnCxPdxOF4eRUAc8+MoyEISO7qXALeaXU02BB7JZ8388DqAshIl0Q40GI6POVQrfnRXpkYiapw45uhwDRgdM0gYytw4xyQcwNni1ED8q2tKAgFtHRoL7vJ3bucmVBjIiIaI9E81OfiKIqkiMTDV3CtnTUK2nM1CJ9MTJR38qlDDg5E2ceG8Hj06Ww49yrNIBZpdRss9mcbTab3Gz4MUKIolLqCCJ8d+TJqQKmR/mfLep8X6Hd8dDrRbdDLGVpsCK88U900CxDw3g5hZwd3cNmnZ6HdpcFMXpwTs7ETC0L24pmh7AQIqGUqniex8UOERHRHuExSCK6H2lE8LkhhYAmBVKWjowd3XsOiPrZ7pjESsGC50V30/sjdARdYnnP8/KWxfaQj0jsjOiJ5i4RgEI6gUySz/2oUwrwPAWlovts0GSwliCigNy5YykR4THIvg+48VlzUASZhkTG1qHJyL7OpVLK8n2fa1QiIqI9wg9VIrqrer2e3/nT/B3/xpA4uQSqpSRSvPuDKHR/95N1vLGwilcvXMf6lou1di/sSHclhHhaKTW+ubn5mwBeCztPVHieZwkh8kKIyK4XZ2pZaBqLGFHX7flYvL6FtS037Ci3VR2yIz0ajuig6TsjE6N8h1i742I9BusMiq5qyYaTNZG13ws7yu1YUsq6ECKS38OJiIjiKLqrWyKKDF3X07quR3ZMg6EFIxMlT3YThU7Xgm7NiZE08unYdO5YAPKapuVnZ2e54fAjCQSdwZE7bWAZGmxTh6YJaILPfvr4TENG9g4ZorDomgies5pAFB+1Pc9Htxfduwkp+qT4m6/zCNIQrMWiO7uUiIgoZiJ74peIokPX9UkAkR11lEsbqJVtWInI7dkSDRzb1DFRSeFLz0/gxVcWcelqO+xI96ICoKKUmu10OgDwcrhxokHTtKJSajLsHLdSLliwzaAoRrQXnKwZdgSiSNF2RiamTA22qaHd9SI3Enl1s3dzZDPRgzB0GdxHbeqwTQ3r7ch1MicBHBFCFMMOQkRE1C+4eiSiu9oZmRXZrols0kDVsSM90oVokCQMDVXHRtVJouokYzOGTCl1AsB82DnCNj8/r8/OzuaVUlbYWW4nlzIwlGMBg4hov2lSwDQ0yCi2iP3/7N1tjFxXeif2/7kvdW9VV1dVV1V3F9nNVoniS3FaGrVnNBzGkuyOX1azk1mPFc9idxDD43zYAAEG8EuSNWAkiIPkywYB4g8bwEE+eG0k2cWusbazgTMTz9i0OcqOaY9EjdjDFklRxSZbLHZVd1fXy617676cfKgmPdaQIrvZ5D23+v8DChTIsfSX3FV17nnO8xyiA1LOW5grZ+KO8SAaAFvl8dVERERJk4wdKiKKlZSyIKVUtiA2mTExV0rOpjvRuLNM7X4xbPTeTEb3phBiSUr5k3HniFu9Xjdc1y1gNEpSSYUJE2UWxIiInjpD12AZGjiZnMZZOWdhrpSOO8aDaADsKIpYECMiIjog/FIlokeKoqgCAELRk6GmITBh67xHhkgxnz1ZRDln4X/6N6voJOPS+xMAgsXFxSUAvZWVletxB4qDYRgpIURFSqns3ZEzUzbmp5U8yU0P4IcRWjseHFe5UVSwUjp07vQTER1qdkrHhK3k9hjvECMiIjpgSn7jE5FylO0SAABNCOiampd9Ex1mU9kUdE3AtpLRIYbRhgPCMCzoemIyH7hsNqu5rmtLKQ1VD0LYqdGdNpQMUQR4foQwUuv+IWA0Do4FMSKiw03h7wIBwNA0jaNQiIiIDggLYkT0OKpxB/gk03kLZxZyyKh5qo/o0JrMGJjMGPi5c3N4+XgBv/+n9bgjPRYp5X8bBMElAJfizhIHx3EMAAUhhLKHIcq5lKqjjShhMpbOkctEn8AyNeQmDGz3h4Bizd6ttgdvGMYdg8ZAOZ+C56u7rgjDsFCtVqsAGvV63Y07DxERUZLx6Y+IHocNBbvEhAB0Xdx/KXmmj4hQzqcwV05D1wU0NU/fflxBSllYWloqVKtV5T77nrYoisTu5e3KrhNNQ0vM3XREREkmxKh7hittGmemrvFwBBER0SHBdgoieiQhxGzcGR5E0wQylnH/RURqev2laQShxD//42sIIwnHVf4095IQAq7rLtm2XQdQjznPM2VZlh6GYVZKqex9FYWJFKbzVtwxiIjGnmloyFiGquPkiA5EfsKEH0RxxyAiIqJngEdgiOiRpJS2lFK5LglT1zCdt3iPDJHiRqdudSy9MIUXjmTjjvO4CgCWofjI2KfB8zxDSlmAgp3B95iGgJXiMjYpNG00dk3FDXXHC9B1grhjECnL8yN0nQBBqF6xIGPryE2YccegMWAamtLrCk3TbNM0CxMTEzwFSkRE9ITU/cYnIpUoOTIxZWgo51LI2CyIEalsNN5Ow8vHCzhxdDLuOI+rIKX8SRzCgphhGAkoiGlIcbRRYmhCIGVq0HUFC2JuiI6j2MVIRAoZ+hE6jo8wknFH+REZ28BkhgUxenKmIZReV0gpbV3XC6ZpsiBGRET0hNT9xicilWR3X0rRtNGDsKnzo4woCd54pYLPnykhY+swDeXft1kAS1LKE4uLi5XFxUVlxwceRvkJE+UcRyYmhaYBE/y+JiIiRdmmjgmLxVUiIqLDgKdLiOiRhBBKflYICOiagKbgCCYi+lGzUzYa2y50TSAU6p00/xgDo7GJ2TAMbdd1uZOvkHtdh5QM/L4mIiKV6ZqaY32JiIjo4HEngYgeRxUKjg3TdYHchMlNUaKEyGVMnJybxNe/fBJna6W44zwWKeW5MAx/Vdf1+bizENHT03V8OB7vEiP6uI7jY31zAM9X7w4xIiIiIqK94i4yESWWJgQsk6f5iJIkZWioTNnI7xazNaH2+1dKOSGEqJimmV5eXlayW5ZIdUKMDrGo/HUdRhIR9/uJ7pNy930h1e3oZrcwEREREe0VV49ElFimIVDOWcjY3KMmSoriZApvvHIEn36+gHLOgmkovEMOQNO0E0KIN6SUc/V6Xbm7FImSQNMEMpbadwf2vRCuH8Ydg0gZkZTouwH8QN2CWD7D+ySJiIiIaG/UfSolIiKisTVXSuNsrYTJjPIXmBsA7CiKXtR1/VzcYYiSSBOAZepKd3R3HR+Oy4IY0T1BKNEdBPBYKCYiIiKiMcKCGBERET1zc+U0zp4uIpeQgpgQggUxon3ShIBlaDAULoh1+j4cl3eIEd0TRhIdx8cw4CxRIiIiIhofnDNGRA+1uLhYBJAKAjU3iDRNIGMbMHV1N9iI6MEWZidQzlv45t800On7aHW8uCN9IiHETwD4LIDfijkKUeKYhoZy3lZ6xHGr4yFSdzIc0TPnBxFaOx76CheKZ6dsLMxMxB2DiIiIiBJE3adSIlJBKgxDO+4QDyMgoGsCmsInzonowTKWPnrZOiwzEQ3r0wCm4g5BlESaELBMTemRiZ4fwQ/ZCUN0TyQlPD9EqHCl2DI1ZCw97hhERERElCCJ2IEiInoQQxfIZYykbKYT0QO8+eo8vv7lk3HHeBxZAIVarba8uLi4FHcYoiRJmRrmymmlR6ReWetg7a4TdwwiZThuiNW1Llo7w7ijPNSErSOX4RlfenI3N3q4cmsn7hhERET0DHD1SERERLHJT4w2yC1TQyRHI5oUVw2CoBF3CKIkEQLQdQGhboMYPD/CkB1iRPeFkUTX8eH5YdxRHsrUNVgmO8ToyfmhhOer+x0ghAiEEG6v11M3JBERUUKwIEZERESx+fTxAgCgnLPg+ZHyd4lJKb8G4BKAb8SdhSgpdE0gY+kwDXU7uls7HqayqbhjECnDcQNcWeugtaPu93I+m0K5YMUdg8bATs9X+mc9iqKe53kNAOq2bBIRESWEuk+lREREdGi8/EIBJ+ayccd4HFUp5UK1Wq0sLi4mIjBR3IQALHN0X6BlatAUbBVb3xwoX5AnepaG4eiQiuOq2yGWsXSlR7FScuz0h0oXxDRNcwG0q9VqEHcWIiKipGNBjIiIiGL38gsFvHA0EfWlqhBiwTTNSr/fT0RgorhpQtwvhqVMDULBJ5D11kDpzVCiZ80PJJo7HhxP3f33jG1gMs2hN/Tkdvpqd4gJIdx6vd4+f/68um9IIiKihFDwcZSI6PGEkYTjhRgGMu4oRPSEXn9xGksvFJCx1R6rtisvhHgtlUotxB3kafB9P9Q0rSelVHYsz05/yG6eBMrYOqbzFlK6eu9xxwvQHQSjjhhP3Y4Yomdhda2LDxt9OF4IX8F1dn7CxMLMBGxTvc8SShY/iOB4AT5s9LF6qxt3nAcZAmgA6MUdhIiIaFxwBUlEiSUlEIQSUqr3oE5Ee1POWyhkU9A1AU29aWofZwIoa5qWiTvI0yCEkFLKQAih7MXtfiDh+crGo4cwtFGXmIodYmEoEYQRPD9CGHFdQYdbx/HhuAHCUCJScJ1tGhoylg4tAQsGUlu0+zzZdwN0HD/uOA8SAXCllOwMIyIiOiAKPo4SkSpWVlYaq6ur9bhzPEwYReg6PjdFicZALmPieCWLr/3s83j5ham44zzKvBDiVwAsV6vVwvLy8ljNa7IsKxBCtAG4cWeh8VLOW6gdyyNjqfmW6ToBLq5uYr3lxB2FKFbfeqeB713bijvGQ+UyJubKaVjsEKMntL7p4OL7m+g4ytabXAD13XUZERERHQCuIImIiEgJKVNDZcrGZNqArgsIdQ9+CwCGlDJt23ahXq+rubs/xtxhCMflWLukMXUNGVuHrmhXRxBG6DoBD9rQobfdG6KrboEAKVNDLmMq+1lCyeF6IbZ7QwShsp/7oZSyh9HoRCIiIjoALIgRERGREoqTKfy9Vyo4s5BTfRSSDiArhFiQUr6cSqWycQc6bO5uu7h5tx93DNqjfNbEwkxG2a4Oxwtx5VYHrR3eT0eH29tXt3H1tpL3KQEApvMWags5ZGyeR6Enc2fLxdtXt9EdKFsAHkgpP/B9X92WTSIiooRR82mUiFTjQsHRWWEo0R0E8Hx2CRCNAyEAy9QxO2XvFsXU3uiSUs4LIc4ByMWd5SD5vq/8yEQ/jDAMlD3NTQ+RsXRM5y2YhpqPIO4wxI07fWz3eBCfDqedvo9Wx0N3EMDxlC0Q/O1nia7mZwklR8fxsd4aYKhoZ7CU0tU0jSMTiYiIDhBXkET0OJQsiAWRRMfxlX2AIaK90YSAZWqoFG3UjuUwYelxR3qUeSnlOSnlWBXEMplMIKVsSymV+9y/xw8kD0MkUMYyUM5ZSClaEBsMQ9y408N21487ClEs2n0fzR0PHceH46n7GTv6LEkhZSjbSU4J0XUCrLcGyq4phBAugA81TWNBjIiI6ICo+TRKRKrp7b6IiJ66hZkJvP7SNPJZM+4oj1IBsKTr+tLi4uJS3GEOiq7rwyiKGpqmKfu5f3fbxc0NJ+4YtEf5CRMLsxPKjkyMIgnHC/DR5gCrax2lO2SInoa1jT5W1zpxx3goTRPI2AaOlNKjTnKOTKR92un7uPBeE1fWOmh1PPiBjDvSwwzDMLwbRZGyazIiIqKk4QqSiB4Hd4SI6JmZsHWUkzEKyQZgSykLYRgW4g5zUDY3NyPbtl0ppbKf/Z4fwnGVjUcPYRoaMpYOXdH7AaUcjWN2hyE6jo8wVHaDlOipcNwAHUfdDkkhAF0TSKd0TGaUPzRDCvODCK0dD13Hh6f2tJFICOH6vs9FDxER0QFhQYyIEstxQ1y52cHLx8dmH5qIAJRzFso5C589OYWMpePi+8rfI/5aGIZVAOdjznEgqtVqUK/X25ZlKTsysbnjIWCxInEsU4Nlajh+ZAKOF+DKWjfuSA90o9HDt965i0oxzU13OlRaO0OstwZxx3ioCctA7dgkyvlU3FEo4Vo7Hv7wrdtY31T35x1AXQhx/dq1a5fiDkJERDROlD96TURKUPIOMQmJMJKIIm6KEo2jct7CXDkdd4xHklIWhRCV5eVlA4DyF589yvnz5+XExESAUXdwAEC5D1lvGCl9vw19soxlKF1octwQrR0P7jBEyDUGHSJhJJX+mTd0ganJFOxU4r9qKUaeH2EwDNF1AtW7w3pSSqUrdkREREnEghgRPY7G7ksp9+76YJcA0Xh6/cVpvPnqfNwxHkkI8TkhxBv1ej27uLiofgXv0cKVlZWelPLe/ZHKVZ7utl2sbfTjjkH7tDAzgdqxXNwxHmptw8GFyy1stF2O5qRDxfMjOK5yH/n3ZdMmPnOyiKOlcfiqpbi0djzc2XJx5VYHrR0v7jif5AMAH8UdgoiIaNxwZCIRPY6duAM8SBBJdJ0Ajhdg6EcwDAFNqHkvCRHtXTlvYTJjwjI1RHJ034OiUgAMXdfP+b6/BeBi3IEOghDCBdDG6K40pdaMo899Dd1BAF0TyFjsFkiScj6FIFL2/TzK5gMfNvpImTrOni7GHYnomTANActU98ysZWqYL2cwmVa3w5TUd/H9Tdy4k4hDNatCiLW4QxAREY0bpTY3iEhNUso2AAjFik1hKNFxfDhuCM8PoesGoFZEInoC5bwFAEiZGsJIQuHrxFMAoOv6OSllHWNSEIuiyBVCtIUQ5bizfNyogyFEx/FhmRoLYglTzlvQdXW/sMNQIgxD1O86iCRYEKNDw9Q1pBQviM2V0sgpPHKV1HdxdVP1zjAAgJTyihBCuSktRERESafuapeIVKLkyMR7+l6I1s5Q5e4RInoCb7xyBJ87VYo7xuN4Q9O0z8Ud4qBomrYlhPgAgLL3V3zv2jau3u7GHYP2aGFmAmcUHpl4z9XbHbx9bSvuGETPTD5r3j+Moppy3sLslI2F2QzyEzzXS3u30/fR2vFw4XIL3/9QyQEof4eU8l1d1z+IOwcREdG44UqSiB6HG3eATxKGEp4fQeE7wInoCVSmbIQJuCtQCFERQoxNK4mUcgigJ4RQ9kKZ7e4QlsHzXUkzYetKj2W7p+cEbDynQ8XU1R2ZaJkarBQ7gmn//CCC50eJ6A4DAF3X21D8OZyIiCiJWBAjokfSNK0OAFKquSHd6ri4cmsH5XyKD8lEY+iXfraKt69t4w/fuh13lEepSinbtVptGUB9dXW1HnOeJ6LreiOKoktSyldVG5l7z7ffbuDMQg5vvFKJOwrtQcYaPYKcPV1E1wlw5VYn5kQPdrPpQNfU/Nknehqem5nAVDYVd4wH+ukfm8VzMxNxx6AEu3C5ifWWsk3vP+wSgHbS15FERESqYkGMiB5JSqnuzT0AhkEExwsRskWMaCwZukDK0JDLmPD8EJ6v9HhUG0B191Rv0g2llEp3iHWdAN1BAMcLYeoCJrvFEmVqMgWVv7nvrSs8P4ImwJ8vGnsZe3SwTNcFpAQihdbWlSkbU5NqFutIbWEkEYQS291hUrrDtoQQG3GHICIiGlcsiBHRI0kpewCgaofATt/Hzbt91TfJiWifMpaB4mQKtWOTWN8cqH66tyKl/FoYhsDohG9iSSm3NE27LqVU9j/4lVsd6LrA2l0H5byFcp6bpUnymZNTWNtw8Nfvq3lPlzcc1YJbHQ+WqaGcU/NuJaKDsrDbgZWxdISRhOOqcx7ijVeOKDvOkdTmuCE6jo+3r23jypqaHck/TEp5UUq5GncOIiKiccUVJRE9kq7rDV3XG3HneBjHDdHa8eAHLIgRjavJjImztRLmSum4ozyKDaAKoFqr1arVatWOOc++RVHUi6KoAWAYd5ZP0hsEePfGNhrbytbt6CGOH8niSFH59zTRobP0whReOJKNOwYAoJy3MFdOI5cxkbF5npf2rrnjYfVWB80dD92B0oNPAABCiIamaTfjzkFERDSuWBAjokeSUjaklOoWxLyABTGiMZfLGDh7uoi5cibuKI9iA6hGUVQFUC0UCoktiA2Hw95wOFS/IOYGuPTBNu5u8975pDleyeKo+kVuokPn5eMFnDg6GXcMAMB0zsJcKY3JjMG7gmlfWh0PV9Y6aHU8dBw/7jiPJKW8C6Aedw4iIqJxxYIYET2S67oN13UbAHoAlDuCv9P3cXPDgcuRiURjK2MbOLOQw4mjWTw3k4Gt+NgkIcSZKIp+wfO86biz7Fe9Xh9Wq9UegDUp5fW48zzMTt/HhcstfO/qFlbXOnA89U9/00g5b+FI0caZYzmU8xxHSKSKN16p4McXSyjnrNiLUP/RuaP4J198IdYMlEx+EKG142F1rYML7zWx01e+GLYG4C0p5Ye7z95ERET0FKi9m0RESqjX6269XncBBADUuUxglx9IOF6IUKGLv4noYOmawGTGRDY9OiGuaWreafhDckKIeQBJ3uWPzp8/H0gpHYwORCjp3obXds9Hx/ERhvwuSArL1JBO6ZjMGLwbiEghs1M2SjkLlqnB0ON9bx4tpXFckfGNlCyRBDw/QsfxkzJNZACgZRhGf/fZm4iIiJ4CzhwgosdWKpX+MYChEKIYd5YfFkYSQz/CZ04UoQnBU+ZEY8zxQlimjvrdPrqO0p1AZQC1KIouTE9P91qtVjvuQPs1PT39HIAugHNxZ/kkH20OcOFyE8ePZGGZOnIZM+5I9BiCSCKSEt1BgLUNJ+44f0fGNmCndPwXXzmNjMW7i+jwsEwdpZyF1xbLAIAbjR7CSEI+w/MGZ2slvPnqPJZfnsFcmaNVae/WNvr4nf/7Ov76/S3caPSTcHjyO1LKPzIM471ms6nsQSQiIqKk41FMItoLJUcm3uN4QSLmwhPR/mVtA5UpG3ZKh64r3yUGAEUhRCXuEE8iiqIdAK24czxKEEXw/AhrGw6urXcRRhKR+ptfh56payjnLUzYBnRdQCj0trZMLfZxcURx0cWoKFzOW3huZgK2+WzeC5apYa6cxlwpjblymt2jtC+eH8HxQrR2PPRdpQ9QAUAEwJVStjVNU/7uViIioqTjUUci2osPpJQVIcRLcQd5kJsbDiSAszWlGtiI6AC9cDSL+ek0vvG9O9hou6p3iQHA2TAMZwB8N+4g+2Wa5nthGN6Sz7I1YB8cN4TjhviXf76GjKXjsyenoOuCnT2KK2RNvP7iND6808dbK/poBLIiYy8rBRuTGf780OFkpXQszGTw+ovTKOcs/G//zw3cuPP0m1bKeQtvvjqPs7USzp7mmp72p7XjYW3DwYXLyp/nAUYFsIYQ4t3V1dVvxh2GiIho3PEJj4j2oiGESMUd4mHubA4QhsrPhieiJ2DoAoCO6uwEhn6Ei6tbcUf6REKIMwAq1WrVnpiYiFZWVhJ36ncwGGwZhuEKIVyMpgso+z0AADv9IRxPw4XLTZQmLXz+TCnuSPQJhBiNZ5vKpjBXzmDtbh9OqMZ1pQuzGVSm7LhjEMWqnLdwZiGHL33+KDbaLv7k4h0E4aj75qC9/tI0jhTTOFsrYa7EMYm0fxff38SNO/24Y+zV6VOnTv18FEUNIYQ7MTFR930/WFlZ4fhEIiKiA8SCGBE9NiFEQwiRVbVL4M7mAL0BRyYSjTNdE9A1gedns9CEUL4gBuBTAAIA9u6viSuIpdPprX6/37Esy8Vo7ah4QWz0PXDhvdF9YiyIqU0TApYpMDWZwlwpjbtb7lPZaN+PhZkJHD8yEXcMoliV81je0hcAACAASURBVBbKeQsZ24DjBrjwXvP+OLqD9tqL06hM2ewMoyd2cXUTrR0v7hh7VQNg67p+SUrZdl23reu6i9G1BURERHRAOBSfiB7b9PS0LaVMAfhC3FkeJJQSvUGAf7R8DFEkYei8c4BoXHl+iKlsCt/460bcUR5FB5DSdf3DMAxLW1tb1+IOtFfNZjNcWlryu93uqwB6Qoj5uDM9jlZniOaOh6EfAQKYZaeP0qJoND7xBzc72O7FWzfO2DryEyn8g3NHUTuWQzlvxZqHSAW2qSE3kcLzsxN46fn8/Tv2ogjww/3d2XjvfrJffuN5fOUnjuH1l6axMJNBmnf30T7t9H30BgH+x3+9ijtbLjw/EdNDNABpAGUhRFVKuSSE+HEp5ZeklP+gVCq9Xi6XP18qlT41PT2dnp2dnWo2m8ovgImIiFTFDjEiemxhGLaFED2h0o33P8TzIwShHN09wudoorE2mTahaLPqx937NJrHqEMsicLz58/j1KlTLSmloep3wMe1djwYmsDNjT4WZjNxx6FHyKYNVKZspMz4D7MYmgbL1JBNG5jMmHHHIVKClRp9ndUWcmhsu/jgTg+OG2KrM4S2z68Fy9QwmTFwen4Sx49kOaKUnpgfRPD8KGndYRpGkwRsALi3ztr9tQegJKW8KaXMSikbYRgmYyFGRESkKH6REtFjq1arBcuyzgH4l/ihRbtqfv+ffh65jInaQi7uKET0lP3SP/suuk6AK7c6cUd5lDaA73qe91UAbr1ed+MOtFe1Wm1ZSrkE4H+OO8tena2VcPZ0EW++Oo+5Mu+lUdlv/9uruLbexbffuRtbhtdfmsZrL07jjVcq3KAn+gRDP4Lnh7iy1kHH8XHx/S04Xoi1uz96d9O9z97aQg7TeQuvvzgNy9SVKILT+FDhO+QZae++LgkhVqMoWpVSvqvrent1dbUeczYiIiKlsUOMiB7bxMREEATBEKOTavdOsilnuzdEQhoYiOgJzZXTo1PAt+JO8kiGECKj6/o8gA0AiSuI6breDoKgi1Gnm7b7SoSu42O9NcD65gAAWBRT2NGSjTCS+M7lJiI5Ou3/rOiawIRtoDiZGnWrGYn5ESeKhRCArgtMZkzousBzMxNw/RATDxh5eG/0aGXKRn4iBV0XXK/TgXG8EI4bYLs7jH3s7jNiYPQsXpZSLgCAEMKMoqh38uTJgmma/nA43LEsy+n3+069Xh8CSMT8SCIioqeNBTEiemwrKyu9kydPbmmadh1AFYCSLVjfu7aN52Ym8LnTpbijENFT9uar81i91cGFy624ozxKVkq5oOv6VzRNO49RUSxRVlZWLp06dSorhOhB4S7hB7my1sGVtVEX4Vw5ja9/+WTMiehhvnTuKIJQ4k/+6qPR2KvOsxt7NWEbqB2bxLkzJbzxSuWZ/XOJkso0NJiGhjO7Uxk+e7IYcyI6rNbu9nFlrYO/vrqFG3d6ccd5FrK7rwrwt2MWd//6fBiGLV3XvxMEwfu2ba9Wq9VGEqcTEBERPQ28ZYeI9qRYLBY1TXsFQAHATNx5HsRK6TANgddfmo47ChE9dQKOF+L/WxkVxMJI6YvFIiGEFkXR7Vwut9putyMASgf+uHK5XADwqd27xBK38ykE0OoMMVfOoOv49zsWSC26psHxQpTzFm63Rl19T/u9Xc5bWJjJ4Ms/PofaQg4zhcTUe4mIDq1ISviBxKUbbby10sK19S4cL4w7VuyEEAUA0wBOAHhZ1/VTxWLx5dnZWaNUKhWPHTvm2baNdrud1PttiYiI9o0dYkS0J5ZlDYMgaAghqlKquY97Za2DzANGtRDR+Lk3MnEyPVrSeL7S02ByAD6v6/p3fd+3l5eXg/Pnzysd+OOEEJ0oir4rhLAx2mRJlHtdYhdPFzFXTvOuSQWZu2MK33x1HqtrHfz7H4yK3U/7vV3OWTh+JIsvnj0Cy+QagogoCaQEPD/E2kYfF1c30XX8uCOp4N5z+qd+6PeuCyF6URT9CwAt13U7hUKhjQSO8CYiInpSfNojoj3J5/O6pmkagHkAi3HneZAwkphMm3ipmgcAZGzW/onGmeuH2O4O4fkRNtrPbrzaPggAJoCuruuG4zjrrVYrUXN9jh496nued0fTtKMAXsRoLZm4i5bWNwdY3xztAQmAnWIKskwd+WwKp+cnoWsCG20PfigRHXCn2KefL+DU/CR+9T8+hbO1EirF9O7dRrzciIhIdZudIb79zl1cfH8LV9Y68AOZrNb7Z0QIkRZCTEkpPyWEeFVK+aUgCJbL5fKPF4vF4szMzNzs7Gx/ZmYm1Ww2B3HnJSIiepq4S0xEe5LNZn3XdVtRFDmqbhaFoYQfROg4PiYzZtxxiOgpM3UN5byVhOK3wGjtVQAwL6VMXBWmWCx6nU7ntmmabSllgISNfLxnfXcM33prgLlyJuY09CCWqSE/YaK2kMOVWx1YpgbtKSw78hMmynkLZxZy0HUB/Wn8Q4iI6KkY+hEa2y52+r7qUwLilgYAIcSJ3V8BoA6grGlaI4qiFID3dZ1n5omIaPzxiY+I9mR5edmo1+tZ27Z/VUr5Kxhd5qvcLnQuY6J2bBJvvjaPN1+djzsOET1FYSTRdwP8/p/W8Xt/+iEcL0QYKl2ncXdf/0QI8Terq6v1mPPsWa1WW46iaFkI8TUA1bjzPImztRLOni7izVfnMVdOxx2HPsGF95po7Xj45398DZ4fodXZe0fovfXBvf+/n1nI8fAMEVECrbcGePdGG7/+O+/EHWWctAB8RwjxbhRFlwB85+rVq624QxERER0k5TaxiUht58+fl4uLi4Hv+64QoofRaTPlPkuCMELXCeB6IcJIQhMCija0EdEBMHSByYyBypSN260BBqHSF6prGH1uzkdR1MbohG6iBEHQ0TTtthDC2e0UU+574HF1HR/rrQHWN0ddYyyKqSs/MSpcvfxCAe4wxJ0tFwMvhDsM4fohoo81BwgBaELASmnQNYFcxsRk2sCZhRzmSmnkMiZ0nYsDIqIkWttwcHebV2AdMBNAOYqi54QQgZTSO3PmzHYYhm1N01zXdRvVajU4f/58EHdQIiKi/Urs5gURxSZcWVnp1Wq1hpTyOkYdYsqN/XK8EFdudXBny4XjBsjYBnRWxIjGkq4JZCwDZxbyeOOVAH/41m2se0pff5Daff2CEOInAXwr5jx7FgTBDwDcsCzrFwAcxWgMZCJdWevgyloHwKgY9vUvn4w5ET3Mp4+Pfsxef2kaXcfHlbUObjT6uHGnh7UNB477d/fnLFNHytTw3OwEMpaOs6eLow6xhVwc8YmI6AD979+uY7s3jDvGuMkDeE0I8RoACCEaURS5AM5HUVS3bfv32u12G0A71pRERERPgAUxItqvFoD3AZyCwhuhjW0X795o46XnC/dPlhPReKpM2Xj5hQLOv7uB1o6XhLskFgCUa7VaVdd1d2VlpRF3oMdVrVaDer3uSinfEUJ4AL4cd6YntXqrg/XNAS6+v4Vc2mDRRHEpU8dcOYOMbWCunMZOz4cf/t33vK4JGProLjLT0DBXSsMytZgSExHRQbh3AOLDRh8DT+mJAOMgC8AWQiwBqEoppxzHadRqtUYURdellL1r165dijskERHRXrAgRkT7IoRoSSlXpZQ/LRTuvGpsu7j0QRvPV7IsiBGNudkpG4WsicKkiZSpJaUgBozu4GoDSExBbHdUTnD69Om3AWxgDApi97rELp4uYq6cZkFMcZapYa6c5ohLIqJD5ubdPlo7Hm7c6cUd5TDI7v66tPvrshCiLqWsCyG+gdHalQUxIiJKFD3uAESUTMVi0QXwkRDiCwDm4s7zMINhhI82B/jsqSkUsqMT4kQ0njQNMA0NrZ0hynkLP7jZiTvSY5FSQkpZ2NzcfCvuLHs1NTXVlFJe1TTtpzDaFKnEnelJrW8OsL45upNEACjnlZsKTEREdOj4QQTPD/Gv/nwNb6207t/9Sc+cDaAM4FNCiP9genr6tWKx+JPT09OZYrE4WalUwpmZmWGz2WT7HhERKYkdYkS0L8PhsAcgsCxL6cHt/UEAP4jgDkOEoYw7DhE9RZoQgABKuRTcYXKewYUQVST0Lobr1683AeD06dOJzP8g663B/V/nypmY0xAREREASAmEoUSz7d3/rqZY2LuvAgBIKW0hxG0p5QdCiH4Yhhuu6/IUKhERKYsdYkS0L+12O2i32265XP40ABejkV/KCSOJoR9hMpPCR1sull5Q9rozIjog03kLJ+cm8ft/Wo87yuOqSinL5XJZn5mZQavVuh13oL2anp7+CyHEHwP4ZQABgFS8iZ5M1wlw8f2tUbfYbmEsl+HYXSIiorh87/o2/uTiHfzle012h6mlgNEY8C8A+EUAv6rr+iulUulnpqen352dnbWbzSbnWxIRkTLYIUZET0QIsSOlbMWd41G2uh4skwfViA6De6NRy3kLfhBhp+/HnOjRhBA2gGoYhleXl5eN8+fPhwAS09aq67oLAEEQ1KWUWSHEibgzHYSu42O9Nbi/8cb7qoiIiJ6tSEr4gcR2d4j11iAJd8QeekKIopQSURSdk1I6J0+eXNN1vW3bdrtQKPR276IlIiKKBTvEiOiJlEqlMoAdjE6EKavd81G/28fXfvb5uKMQ0VNmp3RkbAPX1nuYTJtY23DijvQ4MgA+pWna7Var9fbS0lJQr9cTs+PTbDZ7zWazVy6X05qmbQM4G3emg9Da8bB6a3QX3frmAGdrpZgTERERHS7DQKK14+Ebf93Avzq/BsdLzljsQ2xOCHFCCPEVAH9fCLEkhJgKgsANgmCr0Wi4cQckIqLDiwUxInoixWIxpWlaG6MxWeoSQBBIvP7SNBwvRH6Co6+Ixl13EEDXBd6+th13lMclhBAtTdPCdrvd2N7e7scdaK9mZmYgpXSEEHO7v5WLNdABEQJodYaYK2fQdXyU81bckYiIiA6Fre4Qf/H9Dbx7o4363cQtjWjEAFCQUj4fBMGJcrn8mWKx6E5NTWW3t7e34g5HRESHC0cmEtETSaVS1/v9vmFZam8OOm4IIMSVtQ7KeQsLM5m4IxHRU3b2dDFJo1I1ALaUsgbA1XX9EoCNmDPt2ZUrV767uLjYCoLgFSHEOSnlfNyZDsKVtVGX2MXTRcyV06gtjEWdj4iISHk7/SEuvNdMSsc//Sgbo/vGq0IIAGgAcIUQ26ZpNgBcjzEbEREdQuwQI6In0mw2w6WlJb/X6/2clLInhCjGnemTdAc+ek6AV06PYuqaiDkRET0tlqkjjCTubLoARCLuEgOQFUIsALhSqVREs9lsxB1oryzLGmQymdUwDDMA5oUQaQBj0Za7vjnA+uZoyo8A2ClGRET0FF14r4nv32jj3333I2z3hgjCxFyvSg+XAjAhhHgRwGvT09M/VSqVTkxPT2dnZ2e3m83mIO6AREQ03hJzbJqIlBXuXorbFkL04g7zKOutAZo7HsJQQvJ5imisWaaGjGWgnLcwYSfmDFAWQEUIUQzDsBB3mP24ffv2YGVl5bqUsgGgB2BsLvtYbw2w3nKw3hqgM+B98ERERE9Ta8dDqzPEdm8Idzg2y4nDLoVR11gNwItSynNSyloURZXdPyMiInqqErM7RERqK5VKO0KITQA/FXeWT9J1ArjDEJ4fQdc1zJXTcUcioqcoYxt4sZpHa2eId2+0446zF0sAvjQ5Ofl7c3NzRrPZHMYdaK8WFhauh2H4xwBOYbTxkcgC38d1nQAX399Cq+Nhu+ejUrSRTXMKORER0UFxvNEz26//ziVcru/A8VgMG1MGgIIQYkkI8fNRFP1iuVz+eqlUak9PT1dardYHcQckIqLxw6d3IjoQmqa1pZRdAAFG3afKdqAO/QiNbRddx0cYSWhCQHByItFY0sSoUyw/YaIyZWOrO8QwiOKO9ThSAJBKpV4Mw3AHwHsx59kz3/cDXdfdIAiu7v5WBaPvhrE4/dvu+VjbcLCx7cLQBMcnEhERHZCt7hADb3SI0Q8TsW6jg3FvjVgDUD5z5sxOGIZt0zTbALZWVlYSd0CMiIjUww4xIjoQ2Wy2bRhGGsDPYXS1irIFdy+IsLbhYK6cxuJzORiGBo0VMaKxpGsCGduA64cwDQ0fbQ7QcxMx6i6N0X1ixwEc2dzc/Gbcgfaq2WwOm81mr1KpXJZSfhvAVwD4GI2FTLyNtov3PmyjkE2hO/BxZiEXdyQiIqKx8O137uKd622c//4GPJ8FsUPk3vr3NQA/IaX8AoD5KIoMXdc/ajabyl/RQERE6mNBjIj2ZHl52SgUCrlKpWJXKhU7m82WZ2ZmikKIipRyQQjxWYyKYZm4sz6MwKj4NZU1YegC0zkbaYsfh0TjLAwlMraBy/UddHa7QxMkmpmZuVEoFLC1tdWJO8xezczMwLKsYRAEUwBaGI1QBBTuJN4LAeDOlouXj09h6EfI2MqeByEiIlJaGEn4gcRbKy3c2nDwYaMHTROIkrVuo4OjCSFsIUQlDMP5crn8Y8Vi0Z2amspub29vxR2OiIiSiTvARLRXKQDlIAjsIAhsXdePAigDqAghZoUQCxgVw5S9K0Zi9LBl6BocN8BiNY+pybGY4EVED5GxDVSmbPzl5SZaOx6GyTltXJBSCgB3DMPotFqt23EH2qtmszlsNBpupVJpSSkHAH4Go2LYWFSO7my5uHGnj5/5sVmEkeToRCIion3yAwnPD/Fn79xF/W4f270hhBj9Ph06GkZ30FYA1IQQNQCvAFg1DCPF+8WIiGi/OCOM6JBbXFwsAkj5vn9CCJESQkxFUVQUQhQBFAGkhBAVAJBSVoQQWhRF96tHQogU/nZj0wIwjdHC1X7m/zJ7lLF0ZGwD/9U/rOH0/CRqHHdFNLYiKSEl8Lvf/BD1u338wV/eijvSXgyklOsA/o1pmv8awPWVlZXEjYxZXFzMBkEwLYT4SSnl3wfwRYxG44zFAa3PnCzi+JEJ/GdffAH5CRP5CTPuSERERIlyb712u+lg4IXoeyHcYYg7mwP4weg+sca2C8+P0Nrx4A5DbGx7aPeH2HF8uMOI3WTjawggAlAH0BNCXAfwlq7r30FC18ZERBSPsTiZS0RPJBWGoQ2gLKW0AcwCqOwWvyoAbClldfd/W5VSQozJfVuOF8LxQuz0h+g4ftxxiOgp0oQABFDKpeAOw7jj7FVaCHFCSnk0DMOCbSdzJt/KykpvcXERAC5FUbQURVGAUdPuWLi23oWhCzhugAzH8BIREe3ZvfXac7MT93/P8UKUJlPw/AieHyJtGXC8ALom4HghBl4ILwjRcwOMyWMqPdi9Q7k1AK6UsgzgbhiGl5O6NiYionhwuUA0xqrVqg3Atm17KYqigpRyWQiRFUK8gNHogQqALA55cbyct2CZGv7ot16DrgtkrEP9n4NorDlegCCU+Ol/+ucIIwnHTVRxrA2gLaX8NU3TLq2urtbjDrRfp06dqmE0/ua/B/Bi3HkOimVqKOctvPnqPN58df7+9wsRERE9fY4XIAwlrqx14Hghbm700XUCdBwfaxsOHDfAlVudJK4B6RNIKb8BoKFp2n+n67q7srLSiDsTERGpi7u+RMmnLS8va3fu3Emn02m92+2WNU0zDcPIR1GUiaIoI6U8sVsIm5dSpjG63yuD0WfAoS+M+8HoLqH11gB2SseRkgZDF9C1Q/+fhmjsaELA0IG5chqOG2LNdeKOtBcGAFvTtBcABMvLy7fPnz8vASRuRycIAscwjBaADzD696rFHOlARBLw/AgbbQ/X1rtIp3QYusnvEyIiomdAFwLQgVzGRMrU4Pk2cpkQU24KtqnD80NkbANhFMFxQ/iBhB9GCKPRqMau4yOMJDw/wnB3RGO0+2ekLiFEUUqJKIrOhWHYXVxcfN913U4Yhp16vX5v1CIREREAboQTJd69LjDLsk4IIbJhGP48gLKmaa9iVPgqxJswOX7pZ6uoTNl445UjyGVMTGZ4ZoBoXP3en36ItQ0H/8e3b8YdZc+klNcB9IbD4X84MTERJPnOhNOnT39BCFGRUv5u3FkOUjlvoZyz8JtfPYMzCzlMZnifGBERkSpGHWIBWjsemjve/QkCF9/fguOFWLvbR6tz789ChCErYglyG8AfSCn/StO077qu26jX627coYiISB3c7SVKkMXFxVS/39fS6fRSFEUZIcSClLIghChIKStRFNlCiBqAe11gdsyRE+XdG218YBu4u+2hkDUxNZnCwkwGE7aB45Xs7jhF3gtDNA6WXpjChGVgOm+h7wZwvOQ0WQkhigCypmn+4yAIPgLwf8Wdab8Mw7gOoBEEwR8DKAF4LeZIB8JxQ7Tg4e1r22h1PHzx7NG4IxEREdEuIQDL1FGYTCFl6vCDCJGUsFKjv97p+3DcEI4X3C+INXe80Z85PjqOj64TYKc3hB9K3ketlpyU8pwQogyglkqlvnPy5MnWtWvXLsUdjIiI1MCCGFGypAAYURR9HkBZSvkagIqUsgIgK4Tge/oJvPtBGwDw1krr/un+118q3/9ry9RYECMaEy8fL0DXBMq50f3cSSqIASgCgKZp/wjAJSS4ILaysnIdAGq12h9JKWsYl4KYF8DxAnzv2hZubvRZECMiIlKIJgRSpkDKTGEq+7e/f/xI9kf+tw+6l2y9NcB6a4C1DQHHDVgQU0tOCHEOQE1K2QYghRB1jNbMREREHJlIpKrFxcXsYDAoplKpz0VRtCCEWABwGsCklLIihDAB5DEqkqUA6OB7+sCYhgZT15DPmjB1ganJFNIpHfPlDBZmM3huJoNT8zlMpg2U81bccYloH5ptD3/x/Q382aW7+LNLG3HH2Y82gDUA/6eU8q2rV69+J+5A+7W4uFgJgmAewFcAvIoxKYzlJ0yYhob/5j9ZRHEyhc+dLsYdiYiIiPYgiiQkAMcNEEYSrh9h6Efw/BDucHTH2PrmAO4wxN1tF60dD62Oh7W7/d0CWqLuqx0nwe6rAcAVQlySUl43DON/AdBL8shxIiJ6MuwmIVJUv983UqlURko5L4Q4BaAGYAlAQQjWvZ42P4jgBxEcLwAArG04yFgG2r3RRcuWqWGunEHK0GJOSkT7Zac0LMxkkJ9IxR1lvwoA3N3OqvfjDvMkVlZWGouLiwjDcHX332cs7PRHJ8Yb27y6goiIKIk0bfTs/Un3gZbzFhwvQC5jIGPr0HWB7e7wWUWkBzN2X1UAkFLaAOwwDG3btrkwIyI6xLirTqSIWq1WBVCNougNABUhxM9jtID70bkNpJSzp4so5y28/tI0zizkUDuWizsSEe3Bt9+5i2+9fRcXLjfR2vHijrNfl6SUlwD8s6tXr67GHeZJLC4uLoVhuCSl/A2MDoMk3mTGxIvVPP6HX34JuYyJyQzPpBERER0G3d07x66sdfBho48bd/pY2+jDcQNcudWNO95hdUlKeUnTtN8DUF9dXa3HHYiIiJ4dXoZDFA99eXlZNwzj6PT0dKlYLFYx2vSrCSE+BWBaCFHF6D368KNopIRcxoQEkDJ0hJHEMIjQdwP0BgHslA4pJXSN5w+IVLXVHaLvBvjgox56bgAp4060d1LKHoChlPKDcrmsbW5utuLOtF8zMzPZKIpSUsoTQogIQDnuTE/K0DVMpg2cmpuEldKRn+BXOxER0WEQRhJSAl4QARAwDQ1pS0dpMgXT1DCdt5BNm7BTOkxdg5QSEEjkejQpfmjdvC2lnKhUKu2ZmZlUs9kcxJ2NiIiePu7QEsVgcXEx2+/3DcuyvobRRt9rGLXyV+PMRU/u3sn/z5ycwlQ2ha/97POwTI33jBEpzNu9B+LX/9d38O4HbXSdIO5I+yal/AaAxtWrV//TuLM8qdOnT39BCFGRUv5u3FkOQi5jonZsEm++No83X52POw4RERHFbL01QHe3e+xGo48bd3pYvdVBx/ETvR5NkAZG48d/S9O0xurq6jfjDkRERE8fO8SIng2tWq1apVKpOjs7++koir5omuYygGUhxAkAz2F0F4wda0o6EGEEDP0Im90h7m57uLbeRXcQYOhHsEwdhi6g8R44ImUIAWhC4Gajj7Rt4MM7/bgjPREhRLFUKu2USqXK5OTkR0tLS6jX61HcufaqUqlA07StKIqOAGgBWIg705MKI4m5cgZz5cz97wMiIiIAiKSEH0i0Oh5uNwe4/lEPH97t4/p6Dx82+viw0cfahoNbLQeOG6LrBDB0DWEkYfJe40QSELBMDRO2gem8hWMzEzg5l8XSC6PDlcemM7BTOixTg4BAEEp2jh28lBDCllIulEqlbLlcto8dO+bUarUgietnIiJ6NBbEiJ6B5eVlvd1uZzRN+7QQ4lUhxC8C+HsAXgSLYWMljCQ8P8JmZ4i72y7evdHGjUYfYRjBSuko5y3YKW6CEqlEEwKGLtBxfOQnTHzncmKnDUIIUcToHkpD07RcEAR/1W63o3a7nbhjxs1mc6vZbDamp6dtAAOMuqkTK4wkuk6wWxBLoziZgmVyKU5ERCORBNxhiFvNAa6t97BycwcffNTD6loHN+70cONOD7ebA6y3BhAAHC8cjW6XEhmbd1MmkWVqyNgGynkLx6YzODk3iaUXpvDZk0XomkClmIYfSAACnh/C9UOEEStiByiF0T5MTQjxnBAiB2AQhuHtVqvlJHH9TEREj8YdWaKnZH5+Pp3P53Xf939BSjmjadpPYTQesQxgGoAFgE8uh4BpaMhPmPfHKX72xBSmJlN489X5+39GRPHb6g4xDCL857/9N+h7AdY2nLgjPYkWgE0p5b8XQnzbMIxvAdhaWVkZxh1srxYXFytBEMwD+AqAV5HwwtjCTAbPzU7gv/yHNZyen4w7DhERxWhtY9Tt9Ydv3ULfDfBho4/BMII7DOEOQ0SRRPBDBRBtt6s9YxvQNYGMrSNrGzhxNIuXni/g08cLmC3YsFLsGEu67d4QQSB3J42E8PwI1z/qqr5EwgAAIABJREFUou8GuPBeC44X4OZdB44XwPHCuOOOAx/ADoCGEKIhpfx3AD56//33/yDmXEREdMC4GU/0lOTzeb3f7xupVKoqhJgHcA6j00fsBDtk/CBCa8dDa8cDAOTSo1OAns8JDEQqKU6mAACTmbFYHpUx+r5ZklK+H4ah7bpuInfHVlZWGouLiwjDcFVKWYs7z5Nq93yEUQ/ukJtXRESHneOG6OzeIdV1Aly51dnz3yOXMeEHEcp5GyeOhgg5U28sTGVH69Lpwt/eRW2Z2u7PSxddR0Njy8Uw0ABwTXEATIzWz1kp5TyAFQCJXDsTEdEnY4cY0QFZXl426vV6Vtf1c7quf14I8RUA8xiNQyR6oHLewusvlnG2VsLZ0yWU8xYsk+tuojittwa4XN/Bf/0vvo+hH41D8boNoC2l/DVN0y6trq7W4w60X4uLi0thGC5JKX8DQKKLY7/51TOoHcvhbK0UdxQiInrGLlxu4sJ7Tfy/f9NAY9s90L/3G69UMDtl4ze/+qkD/fuSmtZbA6y3HFy43EJrx8O33mkgjCQcl0WyA1IHcEkI8Wu2bbcvXbrUjjsQERE9GV5cQHQATpw4Md/v92cNw3hJCLEI4JQQ4iSASYzmUhM9kGlomEwb0HcvxA4jid4gQMY2IKWErvHcAtGzNvQjdAcB3qu3EUYYhzE0AYBI07QbUkq7UqlszczMpJrN5iDuYHs1MzOTjaIoJaU8IYSIMDrJm0i1hRwMTcOZhVzcUYiI6BkZeCHqd/v4wc0Ort7u4lbTweCAO4aLkylEkcSx6Qx6gwC53fHsQvC5YhwN/QhhJOEOI2Ss0ZSDUs5CytRhmRo0TSAIJdg4uG8uAFdKeScMw1ShUJDFYtHb2tpK/AMCEdFhxRUR0QE4ffr0rwCoAvhlcCwiPYHXXyyjnLfw9S+fgmVqKOetR/8fEdGBa2y7+Obf3MF3Lrdw4b1m3HEOSg9AIKX8VU3TGqurq9+MO9B+nT59+gtCiIqU8nfjzrJfZ47lMJkx8Pu/cS7uKERE9IxcW+/it//tVXzY6OPGnd5T/WfVjuVwZiGH3/zqGVimjhSnUBwarR0PF95rYvVWB1fWOli91UXH8eOONQ6+CeAbYRj+wfXr12/HHYaIiPaHHWJE+7C0tFQoFAqVUqn0pXK5/FMAvrB7Wn0eo7v5+LRB+9ZxAnh+hPXW4P6Da8YeizuNiBLFMnV0nADtno/BMEQQjsXRWl0IYUgpK9PT04NyuYxWq5W40S+VSgWapm1FUXQEQAvAQtyZ9kyMug+/uvwcInYEExGNvQuXm/jBzQ7+8r3/n727D47rPg/9/v2dlz27Z9+xu8CSC4BLECCXAiRSkkPLoejQkWw5ipOYyU3j1Emcl/omd+reJJ1p0qS908y0k/TemSbNNHcmnUwbxzOtc/9IGbe9SRw712pl1TFtKZQlitALKRgkSJBYvOwC2N2Ds+ec/rEAJNuyxBcAZ3fxfGYwlAi+PCQXe875PW8LLK9u7P4uSQWeF2DoGrquGMxIzea+oRQRo1NceWgozqHBOJOH0lgRnWwiQmujMw7c8/vi3nbPBEGAUiqnaVqiUChMDA8Pz+RyOWNhYWEj7NiEEELcOTlhFeIetFqtDJ2OsE/S2WFSlhEUYifM3m4AUG+4lPIx7KjO8dGUdIoJsccSMYMTYxnmqk2u3lzbm4Or3bc1wvfjSqkZ3/ermqZBZzdCT7l06dIbAJVK5a+DIKgAj4cc0l2r1hwAHNdD1xWmIbU0QgjRz559aYFby61d7wzbUq05bLg+//7rN4iYGlPl9J78viJ8tqVTGU1tL1ut1hwc1+f8c9ep1hyWVzv5mz7Yk7unlFLjwDgwFATBSqvVekbX9RadKQxCCCF6hHSICXGHJicnEwMDA4dzudyngU8APw88AGSR5LLYYRuuz8qay/S1VZ5/fYlnX14gn44SMTTpFhNiDyVtk2PDKa7cXKXl+P2wT2xLdPOh/qFcLnemUChUh4aG2gsLCz31QD80NDQfBMFtpdTWG2Mx1IDuwaHBOCvrLuWheNihCCGE2AXPvrzAC68v87//w7d3ZWfYu2l7AfVGG+h0JRfSljxL7EOmoRGzDA4NxnloLMPZhwZ5eDzL8dEUdlRnIBnh5lIr7DB7SQIYBCq+7z9SKBS8dDqtlpeXl8IOTAghxHuTOyEh7tD6+rphWVaSTkfYFHAi5JBEH3NcH8f1qTdcqjWTpN3kR09tUMzKqBMh9lI2EcG2dFIxE6u/dm9E6XQ6R4EB4Aue590MNaJ7cOnSpflKpRKl0+VWDjeaezO/3ELXpctcCCH6VbXmMFdtMr+89wkHzw86zxP1DeaqTekI2qe2utBL+VjnO4YgaRtEIxrzyy00mXZztxKb354EMr7vX9A07VaYAQkhhLhzctUT4j1UKpWfCoJgGPg9OknkxLv/DCF212d+YoJSPsa508NhhyLEvjF7u0Gj1ebjv/fVsEPZLfNAKwiC39M0bX56evqLYQd0tyqVylngbBAEn6KHkmOnjg1wfDTF7/zsA2GHIoQQYgdVaw7VmsN//dmXeHmmFmoslqkTMTX+6NdOcmIsQ9I2Q41HdJ+5apO5apPzz13f/O8G1bojSdQ7dzEIgotKqX/rOM4bMzMzPbejVwgh9gvpEBPie2nlcjliGEZeKZUHjgVBcGBzHJOMGRWhm6s2cds+L15dIZ+yyKctTENJZZ8QuyhqaoDB6KCN4/rcCqHKe5dt7RerBEGQnpycvOK67srBgwdXnnnmGQ/o+q3ruq6veJ43w1s70cqhBXMXVhtt1lttPD9AKeS9XAghepwfBLjtgNsrDldurNLsgnHLfhDg+QGL9Q3ml1uSEBPfwzI1UrbB2IFEZzqCbXBjqUlrw2eu2sAPwG1Lcuz7CYIgARR9338wEolkyuXyV+PxuH/p0qWNsGMTQgjxneRwX4jvUi6XrWg0WlRK/aRS6teBn1JKfZDOYaE8OYjQTV+r8/JMjWdfXgA6+2eiER1DRm4JsWviMYN03MQPAnIpi5feDLfSexfEgIRS6nHgQd/3E0CwuLh44+TJk+2ZmZmuPwFZWFiYr1arFwuFglJKfRs4G3ZMd6Jad4hZOk+9r4imlIxPFEKIHrfRDqjWHP72Gzf57BffZH65heeHW1fi+wFu2ycZM7m94nCqkgs1HtF97KhBPm3x6ESWR8YHOFXJMVZMMFVO8/JMDUPX+mmX7o5TSg0opcaVUu9XSj1tmuZfaZpm9tp+XiGE2A8kISbE21QqlbJhGEeDIPhkEATvV0odBTJIN6XoNgqCAJy2z43NfQBLqxtvzYUXQuwKpRTRiM7tmoMC1lrtsEPaFUEQWEBe1/XDtVqtOjo66s7Pz/dEW9zQ0BBBEMwrpY4rpepAIeyY3ks2GeHEkSyGrkjE5JZDCCF6WbXu8OUXbvHilRXenF/HcX2CLumzjkd11lttnj51MOxQRJczdI2IqTGQjFDIRJkYTpKyTSxTZ6Pt0/aCrnldd6EIEPN9v1IoFLR8Pk+1WpURikII0SUkISbE2+Tz+ZPACeC/2EyG5ZFkmOhCQQCO6zNXbfLi1RViEZ3VhivVnkLssmI2SswyuL3SYq3V7sfRiQCWUmpYKVVWSk0ppb7ped5KrzzIb3aKzeRyuSlgA+j65VxJ22TsQJxErFOdLYQQonddX2jwF196k6vz61RrTlclDVwvYHltg099+HDYoYguZugKy9TIJiPk0xYnjmQYO5BA1xRO26dac2i5Xuidj10qAkSBx4CxIAhWlFK1arU6E25YQgghtkhCTAjg6NGjH8/lck8AvwucAYboJMJkbpHoCdW6w+tzq9yoNrlyY43hgg1KYRpa2KEJ0XcsU+PIwSSeH1Bbc2k4bVyvLw8EDMBWSp0MguDHc7lcu1AoFKvV6pWwA7sTxWLxDd/3bwKVze9KhBnPu7FMjUyic+h0aDAedjhCCCHu0fnnrvPCG8t85eJtVhtu1yUMXC+g6Xh86iNlfD/A0OVZQdwZ09AYykaZKqf50IkhRgdtHjiUptnysKM6tXU37BC7UVQpNQ4M5/P5sYGBgfUDBw4gYxSFECJc0vkiREdp80blZNiBCHEvqjUHgMuzdRzXx3F9LLO7HsCF6BfRiM7ooM1gxiJpG5uHSX25U8HY/JhSShEEwd/5ftevEtt26dKlNyYmJhKapq3QGX/ctdp+QL3hsuH2zt+vEEKI7zVXbTK/1KLe6M7kgNvuXGc8L5DyaHFXTEMjn7a2O9nrDZdqzeHFK8shR9bVokAZWAmCYE3X9a97ntcTExeEEKKfSfeL2JfK5XI0Go0Wfd//BPAzm8mwrq0cF+JuWGbnYeXJh4d44uEhjo+mSNpm2GEJ0Xc6yWePf/XnL/HyTI25xWbYIe2FFeAi8AWl1F+3Wq35mZmZrp0befbsWWNmZiYRiUR+TSn1q0CRzuFEV7Etg9FBm098aJRPnB0NOxwhhBB36fnXl1le3eAzf/J82KHckb/+vTPY0U6BjxD3a7Xhcnm2zoVXl7gwvcj0tdWuTQqHbB5oKaU+pOt669KlS/NhBySEEPuR1ASJfefkyZOZIAgKwPuUUg8DFaVUGpCMgegLmqYwdI2UbRIxNOyogdsOSElSTIgdFWwuBXljbg1DV8wtNtE0hd9l45F2WBto0Kl0dUzT3BgaGjK7dfTLzMyMKpVKehAEZTrjkAeBWLhRfS9dV8QsgwfLaR4a6+pmNiGEEG/j+QFuO+BbV1e4sdjiuUvVsEO6Iz/9wVEMXZFNRMIORfQBzw9obXSmlKjNsvtU3GS14e6He+O7sUGnMeHFIAgymUzGGRgYYGlpyQk7MCGE2E8kISb2nUwm85hS6nHgj+gkxQaRZJjoI74f0HA8rtxY49mXq7jtgLnFJqcqubBDE6Kv6FpnT99EKckHHsjzxW/OY+gaDacvxyduidDpsqoopc4GQeD5vp9fXFx8MezAvo9gYWFho1AoLCulLgEfoBN/Vwno7HV5aCzDoxPZsMMRQghxh9abHstrG/z5F9/kP1y8xWqzHXZId+Rj7z+Aoant8XdC3I+tcYrHR1OcebDA8dEUp44N8LVXFvfDvfHdiNGZTPQR4Ac0TXMNw3Cq1er1kOMSQoh9RRJiYt8YHx9/YGho6Ijv+/8JcAKYoLMbRTYJi76mFFTrG+TTFrV1l6Fs100LE6K3KUXE0HDaPrlUhKs310BB0P/FsIZSKqqUKudyOSeXy1VGRkbmc7mcsbCwsBF2cG83PDxMu91uKaWeptMp1lV7dNXmFPOpw2kmy2kMXaEpmWwuhBDdbnq2ztcuL3JheolqfQOnR3ZBnjs9jGXqkhATu8aOGqTiJhPDSVK2iWXqbLR92l6wH+6R74QBJIMgMAqFgpZIJFZWVla6dgy5EEL0k646DBBiNxmGcdz3/WGl1KfCjkWIvXR5tg5AZSTJocE4Dx2WcVxC7CTb6tQXnTs9zMszNf7+hXlw/c7C+v4V3fw4u/n/KwCtVuuirustoKtGKF68eHEFWDl69GhdKdWiy/aI+UGA43o0HI96wyViaOiaJMSEEKLbXZ1f48svzDO32JSdSUJs2kq0/sKHy1RrDs++tMCFV5eoN1wc18OTEYpROhMLioDl+74ejUZn2LyfFkIIsbukQ0z0vYmJiZP5fP4p4FeCIPiIUmog7JiECMOt5RZXbqxxaaZOw/EYSEYw5dBViB1jmTop2+DwgQSaUtxYauL5+6JTDKVUUSk1Dkz5vv9IoVDw0um0Wl5eXgo7trfL5XITSqk6MBV2LO9kcjRNZSRFMmZgGtLALoQQ3apac/ji8/M8+9ICL7yxwnqr3VPX+5974jAxS5cdYmLXmYbGUDbKVDnNh04MMTpo88ChNLO3GpiG1jNdlbsoo5SqAA/mcrkPF4vFbwwODkYWFhaaYQcmhBD9SjrERN/TdT3j+34ZOKKUKocbjRDhmV9uUW+0UUpxaCiO4/pIcZ4QO8cyNdKJCMdHUkzP1tE1xT6aere1l+skkPF9/4KmabfCDOidaJq2FATBfNhxfD9+AJ4XIG/NQgjR3RzXZ67apFrf6MnOMF1TUhQn9sTWfrGtrrF6w6Vac7BMKfzZlAEyQRC0gTXP86K6Lr0LQgixm+QOSPSto0ePVoDfVkqdpHNAJ4TYlLJNkrbB7/7sA1RGUpTysbBDEqKvVGsO1ZrD7//lK1yerbPaaIcdUhguBkFwUdO0vwBmpqenZ8IO6NixYx9VShWDIPjzsGN5J+dOD3PudInjoymSthl2OEIIId7Bheklpq/V+f3PvxJ2KHctn7awTI1/+DcfCjsUIZirNjn/3HUuvLrEhenFsMPpFjPARaXUb0aj0ZXNsd9CCCF2kHSIiX6jnz17Vt28efMkcDgIgmIQBAm1j0r0d8NW9ZZtGSgNIrqGrqvtykKlFJapoRTvOOLJMr+3wsn3A4IgoP22FiXPC/D8zkcQgON6BJs/1m0HuG0f1/Px/QCn7RMEnc+Ju9f2fRzX5835daDzcKx9n38/IcTdMw0NO2pwuBgH4PnXl/fde1YQBAmg6Pv+A0BmcnKyBWxcunQpzDGKiSAIZJGiEEKIu+a2O9MVrt5c48Zib04zsy2deFSOgUR3sEyNUj7GxFoCx/Wo1hwc16dac8IOLUxRIBcEwfuazebM0aNHZ5LJZO3555/vvVZUIYToUnInJPrK5ORkbGZmxohEIn8GJDb3mYj7lE91xhtURlNYZmfkwVaHUdwy0DVFKR/b/tx3K+Xt7/m+htPG84LvGDGy2mhTb7g0nDZtL2BusYnnBzRanZvjhZrDYs3BcT2uv+1z4u41Wh6Nlsdn//5NLFPjc7/12Pf99xNC3L103CQdN/mVjx6h0Wrz8//mH/fde9bmNXicTpd2y3Xd39M0bR74YlgxBUEwDlSkUEYIIcTdqq27OK7Pn/3NlZ7de3RoMC73+6Jr5NMW504P8+TDReoNl/PPXd/uGtvHikAeeDAIgi8Af726uvpVoBpuWEII0T8kISb6wtmzZ42ZmRnDcZynLcs6SOcmQjYE3wHb0jH0TmWWqSvSiQjJmEHKNrGjOob2VpIkn7bQNYUd1bFMDcvUMXWFphRJ20TXFXHrzuZdm7qGoUHqbbkyy9RJ2uZm9WVAIRPtdId5AY1Wm4bj0Wi18fxOIm2resxx/bcqytq+VJbdhYbTZsPVOP/cdYrZKE+97wARU5OZ7kLskHTcxLZ0PnH2ELdXWnzl4m0c1+vZg7R7lACiSqmP+76/cuzYseNBEMwEQTATiUTeuHTp0tpuBzA+Pj5smuaw7/uPAEd3+/e7V4ausEwdSdgJIUT3uTxbp1p3WG22aXu9eR2vjKYYO5AIOwwhvkPE1EjZJqeO5VgddbEiGov1Db5+eXE/3jcDaHTunU8AUd/37UqlcmN6evqZkOMSQoi+IAkx0RdmZmYMIKpp2o8EQXBSKVUMO6ZeYVsGlqlRGUliRw1GB22G8zalXGx7xvxu7DHZGs0XeVviJXmXv0bD8Zi9tU694VJvuExfW+18u7mvRxJi763TreJx/rnrHB9N8YEH8qRsUxJiQuyQdLzz/vmJs6NMz9b55qudaYH77MF+6+Tt40qpFnAWeEYp9QwwD+x6QmwzGfb+IAge7ubucV3rFJtomiTEhBCi20xfq3P15tp3TLjoNcdHU5wYk8nBortYmwWZpyoDABzMx3h9bpVXZmrAvrtvhs2EGJ0pCyeVUk3f92eAZ8IMSggh+oU8bYtep09OTsYcx3la07QfUUr9EFDgrcM3AVgRDV1TVEZSJGMmR4eTFNIR8mmLfMra7MzqjD60It/V/bW5J6wb+X5Ay/XxPJ/25iiyzkiyNhttn6XVje1Ri69dX2Wt2ebybB3X86mt9+6D7G6wTI3E5mvjQycGOXtikKGMhRW5s44/IcS7c9zO+85LV1f4you3eebF29QaLm573z3g+8AGsAKsBEHwhqZpa8BnPc9r+r5/IxqNLu3EnrHJyclEu90uBEHwQaXUY8BjdEY4du09wi9/dIxffuow6bgpOx2FEKJLvHFjjSs3Vvncl2f49q1GTxbdjQ7GOTRo8+s/eZSJUlKK30RXazgeTafN9YUmr16v8+r1Vb4xvdR5vq/33tffDpgHWkEQ/J6mafPT09OhjR8XQoh+IB1ioqedPXtWzczMGJZlHQyC4CSSDHtH+mZSK5uIkE1EGCvGKeVjlPIx8ulozz4QaZrCtnSgk7TJvu1ffisxNldtcr3aYLXRZnlto2f/rLvNcX3a/gYvz9Q4Wkp2RlMGsl9AiJ1imRrpuEllNMXla3UsU6NLaw1221bFaxEoKqUyQRC0giD4O2BN07T6+vr6jnSMra+vG7qux3VdLwNbH9Gd+LV3i6Gpzmtjn744hBCiG6232swvt1hYcXoyGQYQj+rk09b2dBAhuplt6diWTi5lgYLmhsf0bJ31Vjvs0MKyNQGp7Pv7rphOCCF2nDxti55VLpczhmGc1DTtjzZHJMqYRCBpG2QTER6dyHJ8NEVlJMWhoTi2pe/K6MNetNpwuTxbZ/raaufb2Tr1hsvcYjPs0LqCZepETI3f/dnjHB9JURlNhR2SEH1ltdGm3nD54//jVV6fW+XytdWwQ+pKQRC8AawppVboVMXOB0FQ2/z/d/rxGaVUms0uMKVUmU7xV9cXyui6wrYM/vnTR/j002NhhyOEEAK2dxL/5TOz/OUz36bheHheEHZYd8UyO/ugz50e5tzp4e2R+EL0mq094X/yhdep1hyefXkh7JDCUgW+6vv+F1zX/etyubz2zDPP7NtMoRBC3AvpEBO9SD979qy6fv36SaXUMToHXZGwgwrL1njDRMzA0BWHhmySMZOxAwmGslFStknE0NB1yX9v0XVFyjYZykZxXB9dUzScNnbUwG13xpo1NzxaG17YoYbCDwI8P+D6QgNDUxw+kEBTyPguIXaIrne6gMrFOLquWF5zt8e8iu8Qe9t/b/3lJIDvt/wkvvn59ObPNdhqIe5yuup0PJuGXKuFEKJbNJw207N1bq+08PyAoLdyYUBnX/Tx0RTFbHQ/d6eLPrD1LDp2IEHKNplbbFJvuKw2XNx2gN+LX6D3xgTySqnDhmGcvHbt2ivlcrk+MzPTCjswIYToFXI7JHrO5ORkYn193YhEIl+hUwE+HnZMYSrlY5RyMR45miWbiPCTp4e3K83F3fnyC/Ob1WZV3pxf5+rNHZna1bO2Kkg/91uPbVeXCiF2TsNp0/YC/uQLr3NrucUXvzkfdkgiJCnbpDKS5NzjnQp+IYQQ4Xvxygr/+Z/+E6vNTmd3LzpxJMMf/urDpGyTpC3Ph6I/VGsOz760wIVXl7gwvUi13uke22fmgyCY1zTtXwEvT09Pz4QdkBBC9IqeqJoV4u0GBgY+qmnaBzRN+5hSKsF3VpDvC6V8jOGczZkHC5yq5DhVyXF8JM1IwaaYjW3vDBN3L5u0GMpGGR2MM34wiWXqpOImG5udZG6PjUm5Lwra7QDL1Fhc3WD8QAIUaEpeW0LsFF3TMPTOjsd1p9OVutqQqSf7TSJmcHQ4yfHRNOMHu37CoxBC9L0Lry4xPVvn/31pAcf18PzeewY482CBB0bTnJkqEDE79xtC9AWliBgaKdukOBAFFMmY0bM7/u6VUioSBAFKqfHh4eGLuVzOWFhYkJETQgjxHqRESPSiD2madpJ9vDOslItRysc4d7pEKW9Tyu+7nOCuGDvQOYScKqe3d/ycf+46c9Um9XUXx/VpOPtnjGKj5QEe55+7zlQ5zUceGcJCl2SrEDtka/TLmakCc9Umt1ccLgBzVdlnuN+YeqcL145KrZoQQnSDC9OLnWeAHu0MA3h8qkAxG5XOMNF3bEunMpqilLc5caQzSXuu2uTybD3kyPZUgs7EpB8PgqDVarU+q+t6C9jfY26EEOIOyFO36BlHjx49lcvlPq5p2jngOBANO6a9MjoY56HDGX7uiTLnHh/mxz9Q4lQlx6GhOEnblGq/XWDoimhE59BgnBNHsjxYTnPySIZ0PEI8quO2A1wvwO/BatG7teH6bLT9TpecrjiYkwSsEDvNMjvvNyOFGOMHk6w1XYKAfZWE38+KA1E+frrEocE4A8l9uxZVCCFCN3u7wc3FFv/DX01zdX69J6/DP3BsgAcPp/nFpw4zOmgTs+TYR/Sn735mPzRkc+RgkusLneKyfTLdJUJnj+647/tHi8Xiy4ODg0inmBBCfH9SKiR6hlJqABgPgqAAZMKOZy/Fozr5tEVlJNXZGSYdYbtua+zk1t+1ZWpUaw7zyy1WGy7zS619s5TacX1Wm22+fXudieFk2OEI0ZcsU6OUj+G4Hr4fcGHaZGWtd6vSxd0xDY1sIkI0IoeWQggRpkbLo95we7pbeyAZYSgbpZjdN/WjYp/67mf2ai1FxNCxTI2Ntgb0XkL7HmxVUp0E8DwvGo1GWyHGI4QQXW+fHOeKXlapVMq+739KKXUWOBtyOHvmiYeHODQY55NPHJIlyF1ma5zisy8vUK05/MkXXg87pD1z7vQw506XOD6aImmbYYcjRN+q1jrLwX/hX/8jjutTre+vnQj7SSkf48SRDH/4qw+HHYoQQuxbW/f3f/D5V7g8W2dusfcSYlvPjP/dLz7IVDkt9+piX/L8gPVWm6++XOXZlxa2n9n3iRYwD/w73/f/MhKJvHHp0iUZoSiEEN9FTthFVxsfHx/2fX8EKNPnXWGWqWGZOvl0BMvUmSglGcpGsUwNXUYidhVdV1imxmCm8+9z4kiGDddnoebQaHk0nHbYIe6a1obH8trGfhk/IURotvaLnTiSYa3Z5rXrq6y12qw1+/f9Zb/Kpy3ScRmTKIQQYdrqCltrtnFcP+xw7opSoGmKQsbicDFOMmbI86PY1wxdMZCMMHYgwVy1Sco2mas28ANw271PyiLUAAAgAElEQVT19X2XNDqrRUrAyXa7XZucnESSYkII8Z1kLovoaoVC4ZeAM0qpfw4Uw45nNxUHoowV43zyh8s8feoAP3VmhAcPp7GjxvbBqOgOpqFhRw0OF+McH03xgw/kOTGWpeF4tD2/ryvQ4jEDP4DKSIp0XKpOhdgt0YiOHTV46n0HOHEky7rTZqPtc2tZJqD0m5/+4AgTpQTHR1NhhyKEEPvWN15d4m8u3ODi1ZWe68rWdYVt6fzYYyX+xcfGGRmME5MRvGKf0pTCNDSGCzaPTmTJpy2Oj6R4eaaGoWs9uRfwLuhAAjiqlHrS9/1pz/M2lpaW5sMOTAghuoncJYmuNDk5mSiVSna73f4vlVLjdCpc+o5lamSTER49OsCpSo7TU3mOj6bIp6OkZMRFz1B0OsZScZOhgRgjgzZrzTZ+QM9VmL4XQ1dstAPeX8lRSFthhyPEvhGN6NiWQTJm4Lg+Sqm+e3/Zrz71kcMMZWMczMl+UCGE2GsNx+PKjTUuvLrEN15dolpzem4SwkAywg9O5nl0IktlJIUV0dCUdIgJAaCUIhM3sSI6B3Kx7YRYa6OvE2MAmlLKV0qNJ5PJi6VSKbKwsNB7s2CFEGIXyMhE0a0SrVYrCnw07EB2U8TUyKctHp8qcPJIhhNjfT0Vsm8lbYOkbVDKx6jWHRZqDvNLLdy2T73hhh3ejqrWNqg32v1eWSdEV0nHTc5MFSikLIrZ6PZYp357f9mvKiMpLFM6wYUQIgyNVpvLs3WmZ+tcnq2HHc49SccjnJkqcHQ4KXunhfguo4M2AEnbZPZ2g9srnWkLy2sbYYa124zNj6eBtmman221WmvAUrhhCSFEd5AOMdFVyuVytFwuJxzH+bhS6oPA2bBj2g0HBmIMZqL89AdHeHg8y4kjGYayURIxeYDpfYqIoWFbBsdGUjhtn5Rt9s8YRQVBAE8+MsRAypJDXCH2WDxqYEcNysU4c4tNLFOXBHWPGh2MczAX4xNnD2FFdBmPLIQQe2y10WZuscnffWOeN2+u99yoROjsGj02nOTDjxbJpyzsqDxPCvFOFIqIqZGOR7bXUqw2em9n4D3QlVKmUqo8MDBQO3DgAAsLC7JTTAixr8ndkugqmUwm2mq1MkqpHw2C4GTY8eyWA7ko2USET324vDnzXb4U+4Vt6diWzsceOwi8taC7VytOv5vnBXiex1qzTb3hkpQkrhB7Jp+2tj8c1+fC9CKrjXb/JNz3mUODNvm0JdX8QggRknrD5dZSq3M9bbbDDueenBjLcGgwTmVE9lAK8W62prqMFDr3X7alM1dt9PvEhcjmt7+qlJoGvr2xsQEgO8WEEPuadIiJrpLJZJ4MguCXgMeBIn2StNU0RczSeXRigB85dZB/9sERfvjkIIPZKKauoWTGe98q5W0eKKc5dSyHbRnbewl8v7d2E3y3xyo54lGD4kA07FBED6nWHGrrbeaqTaq1je/4sKM6vh9g6NIl815MQyNmGTxYTjN1OI1paCiFJMZ6hB3VSccj/MwPjfKDk3lKedkdJoQQYfjcl2Z46c0VLl5dwXF9gh66PU/HTZK2yW//R8cZLyVIxyPv/ZOEEACkbIOxAwkeOpzhQyeHeP61ZUxD6/duMVsp9aBSKlEoFBgaGlqWnWJCiP2qL5INoq/kgQqQAfrmpF0p0DXFQCrC2IE4EwcT5NNW2GGJPVDKx3Bcn0TU4OrNNSxTQ+uD/Kfr+TiujGkTd8dxfRz3nXfreV5UynTu0NZovcpoiqRt8vJMjblFeZ7tFYamYZkag1lLkmFCCBGiuWqDas3pyUNw0+hcS0r5GLreBw8XQuyhpN1JKFtmJwm2T9YA2HTO2qZ93y/qui5ZdCHEviV3TqIrVCqVsu/7n1JKnaXP9oZVRlJMlJL8xk8eJWWbMhppH+skAzzOP3eduWqTz31pJuyQ7tnv/uxxKiMpTlVyYYciutBqo7Og/sWrK1y8ssz0tTr1hstq493HEdmWweigzckjGU4cyXB8pJPwkaTBe1ttdMaY/sHnX+HybF0SZF3syUeGeOLhIc5MFaQ4RgghQvDsSwtUaw6/879+K+xQ7tkf/trDnBjLyD2SEDtgrtpkrtrk/HPXmb5W75t1B+8mCIL/Hph+7bXX/iLsWIQQYq/JybwI3eTkZMJxnKymaWU6nWF9YSAZIWJoTJXTDBdsLFOT6r19TlNg6IpiNoqhaYwO2my4Pgt1h8AHv5fmtAjxXdy2jx/AmzfXqDfaTF+rc22hwfLaBo7r493BmFDfD2g4HrdXHK7eXEdTikTMwDI1TEMjHTf34E/Sm3RdYZkaYwcS6JrC8wM22j5LqxthhyY26ZoiHjXIJCLk09Z2p58QQoi94fkBbS/g9orDzR4tHEnHTdLxyPb9kRDi/lmmtj1GseF0isx6tXv0TimlRoMgYHJysghsXLp0aSnsmIQQYq9IQkx0g3HTNB/1ff8Xww5kJ/3AsQGGslF+92cfCDsU0SVMo3Oo/9T7DgDQ9v3tSrQN18dxJSEmeldt3cVxfX7/8690OsSu3X1lZcv1mL29zuztdf7DxVvk0xaWqfGZn5ggn7Y4M1XYhcj7g23p2JbOr/3YEdpewJ984XVuLbf44jdlZ3a3iEcNKiNJHp3IymtZCCFC0Gh51BsuX7l4q2c7QB4ay/D4VIGjw0npMhZih+TTFvm0RWU0xYVXl7gwvbg91aWP/cdKKVzXndY0bR74YtgBCSHEXpFtHSI0k5OTkXg8bmqa9pkgCE4AD4Yd004YHYzz0FhnOetkOc2hwXjYIYkupZSikLbIpSx0XaO+7tL2gp5Y6P2xx0qMFeNkkzJ6fL9bbbSp1hy+9MI8X59e4oU3lqk32zScHdgxp6Dd7nQ6VWsOMatTx5OypVPs3eiahqEr8qkomgLL1Nlo+z3z/tKPUpujP3/0/Qc5PpKiONA3a1KFEKJnvHlzjRevrvC1VxZZ6LHuD9syGC8lOFXJ8djxHMVslIh0iAmxK1JxE8vUOTQY58ZiE11TuF5/3kRrmtYKgiCRTCYvl0olFhYWZLyEEKLvSYeYCFOEzmvwZ4C+ORk6NGTz+FSBMw8WKGb75o8ldsGJsQyO6zNRSnL+uevM3lrHcb07Gi0XtnTclKpUAUC94TJXbfK337jJ63Or77kn7G40Wh7g8eUXblHKx8gmIpyq5GRfxrvYGsN3ZqpAteagKbjw6hL1htsz7y/9KGkblPIxnnh4SBK6QggRkrnFJhemF5lfblFvuGGHc1fsqE5lJMVUOc2Jsb7ZMiBE1ynlY5TyMVIxg3rD5cL0Io7r70yxXxcKguCjwEXTNP9qfX19HlgLOyYhhNht0iEmQpPNZn9G07SPKKWeBmx6+PVoR3WOHEzyG+eO8sMnh3j0aJaBZARdk51h4t1pGkQjOoW0xUOHM9xYarHRxTfc6bjJUDbGxx47yHDBRlPyGt+vnA2PG4st/ubCTT77928yM79OY8PbtQ6kDddn9naDW8stri80ODgQIymJhXdlGhpD2ShjBxI8Mp7FCzqJmZtLrbBD23f+xccmOHkkw9ThDFZEk/dOIYTYQ7V1l2+8usQzL97mmW8tUFt38XuoQCSfthg/mOAXnjzM2IGEFFYIsQfsqE4uZTF2IEG5GOe166sA/dgpZgBppdTDuq5bmUxmIR6PN+v1+s5VOQohRJeRDjERppJSapw+6A7TNUXKNpgqp7fnTwtxJzSlsExFMRvDtgwycbOrF2SbhoZt6ZiGJgnffc4LoNFqc3OxuSd7OBy3s3MvZZvYlk5zozuTxt3ENLTNPWw62USE519fpiV/b6EYHbTJJiNd/f4uhBD9yt0cvbz10WssUyMR63QaSzJMiL1hb45qr4ymgM7X4UZbA/ruXtoA0sBJpdSLmqYl0um0fv369bDjEkKIXSOnmWLPTU5OnvQ872QQBL8NVMKO5350Dho1Pvdbj2GZmiTCxH1rOG3aXsBn/qfnWW20uXytuxZ+P/nIEE88PMSZqYK83vexuWqT6dk6v//5V1httkMZO3Tu9DClfIzP/MTEnv/eve4vvvQmc9Um55+7zobr99QOlV4jr1MhhAhXN9yz3K/P/db7Sdnm9sG8EGJveX7AeqvNhVeXuDC9yN9/c5755b6cuNDa/Pi0Uuqb09PTMyHHI4QQu0I6xMReUmfPntVv3rw5oJQq08OdYbquMDRFeShOJtHp6Nna2yLE/dCUwtDh+GiKxfoGC3WHRqsd+ghFTSlMQ2FbBinbRNelnmI/m6s2ub3SwnF92l44yZStCu+5alMKEu5SMRtFU4qpcprbKw4LKw7rrbbsF9tBKdvc3hsmO++EECI83XDPcq+2ii9Ttokd7dntAkL0BUNXZBMmhwbjlAo2uq6YqzbDDmunaYChlJrwfb9dLpfn4/G4f+nSpY2wAxNCiJ0kCTGxZ86ePavPzMwkIpHIKeBTQDHsmO5V3DJI2ga/9NRhKiMpOYgVOyYa6Tzs/s7PPsDVm2uYhmL62uqejKR7N6ahyKctRgdtKiOp7RESYn86/9y1ztihenhjh559eQF4a/H1udPDocXSa5563wEc1+eHTw7xD/90iy+/MM/0tdWerJrvVpXRFKeODWx3iAkhhAhHN9yz3KszUwVK+Zh0hgkRMl3rFIY+OjHAoxMD2FGduWqTP/nC62GHttMiQCQIgn+plGpFo9GLdDrG5kOOSwghdpSUGYk9E4/HM77vv1/X9dPAI3Q6xHqqrUrXFcmYyYkjGc6eGOTRiSy5lCU7QcTuUBDbTDxttH0arXZoS3xTtslDYxlOHMlwfDSNFdHQlHSJ7TcNx6O14fNnf3uVhZpDbb0LEihKsdpok4p3dmrIbo07o9TWDkON4kAU09AYzERZWXPRNdWPC8P3RMo2OXEky6ljA5yq5BjOx7BMud0WQoi9Nnu7wc3FJv/u/7nWPfcsd8gyNeJRgx//QImHxjJSWCFEl1FAPhOlWndIx01ur/Rewv0ORJRSjud5xZGRkavRaJSVlZV22EEJIcROkBJ/sWc8z0vpuv5+YBzIhB3PvTA0RdI2ODGW4dzp4e0xFkLshmwiwhMPDwFQb7gs1JzQRifaUZ3KSIpS3iZpy6Vjv2q02jiuH3rH4ttdmF7c7hI7VcnJodEd0reuZ0c6iW7b0plfbnH1xhqO64c+prVXJW1jOxl26thA2OEIIcS+9e1b61RrTlfds9wpy9RJ2gZTh9OcGOvJx2Yh+tpW1+bl2Rqztxu89GYt5Ih2XAIgCIJPKaUutlqtL2cymRU63WJCCNHzpGRV7InJycmi53kPKaX+K6BMD+4Py6ctjg2n+JcfP8qjE1kO5GKYhkJJl4zYZdlkhAcOpWk4Hpm4yeztxp7+/o9MZDkxluHnnyxLt8M+98y3FnjxyjLPXaqGHcp32HB9Zm83WG20WW26FNIWdlQSt3djIGlxuJigMpxi8lAa3w8A1VMV9WE7d3qYU5Uc504Py3ulEEKExG37OK7HX35llucuVZlb7L0dP088XORXPjpGZTRFLCLXEiG6VXEgxvjBJFOH0tiWwdLqBq4XbN5H94UoMAA86LpuUCwWrywsLHhA3/wBhRD7k5wWiT3heV4USNFJhvUky9TIJEwqIylStimdYWLPZBMRsokIxWyURmvvpxRkExFyKUs6bwTLqxvML3dfYaDj+sxVm8zlm8xVmziuH3ZIPWcgGQHA8wKSdpNvvbnSk/tWwrTVqSjvlUIIEZ4g6FzLFlYc5qq9lwwDKKQt2dkrRA8oZqOkbJPAD5i93cAyNbT+qpfeSoidBL6+vr5unD17Vj3zzDPhRiWEEPepv96qRdc6duzYeSAPPB52LHdrayzi537rMSxTI5+2wg5J7HO/87+8SLXm8OzLu9ulc3wkRdI2+Lf/2aPoupKHcsEffP4VLs/WufDqUtihvKtzp4cp5WN85icmwg6lp81Vm8xVG/zZ31zl6s21nqyy302WqRExNT799BHGigmefGQo7JCEEGLfe/blBZ59aYG//+Z8VxbxvJvRwTiffOIQJ49kZFSiED1mtdGm3nC3n5f68L55Bpjxff83X3/99YthByOEEPdDTjfFrpqcnBwAIu12Ow+kw47nbmhKoTQ4NBQnm+h0hJmGdIWJ8I0dSJCIGVydX9++8d5JiZhBImowXkowkIyg6wpdRoMKoLXh9cRuqWqt09k0V21KIcN9sEyNlG1ybDhJ0jawIjqO61GtObS9AK9/xsHcFUNXJGMm+bRFPt3p3s1udtgJIYQIhx8EuO2A2prLreUWG+3e6hZP2SaZhEkxGyUuY5+F6Dm6rrBMjfJQHIBq3cEPOmNc+0QUyOi6Pnb06NHWa6+9Nh12QEIIca/kTkvsqna7fUopVaQHO8NMQxExNX7hyTJT5bQcqIqu8emnjzBXbZKOR7jw6hIXphd39Nc/cjDBibEMP/dEmdFBe0d/bdHbbq04fPv2ethhvKdnX14A3hphd+70cMgR9aZOwsfaXhx+/qvXmas2Of/cdVabO5+M7xXJmMkjE1nOPFjgzFRhu5NcCCFEeNx2QLXm8NKbNb74zfmww7lrlZEkx0dTPPW+YtihCCHugW3p2JbOLz51GMf1ufyv/xHH9ftpBHkRKPq+/2lgHvilkOMRQoh7Jhtaxa7K5XL/LAiC9ymlToYdy92aGE7y/mM5Tk/lGcpE5bBLdBUFWBGdfNri0GAcy9RJxc3tzpi7VcrHGM7ZnHmwwKljAzw8keXQYJyoLPIWb3P+uetcW2j0TmeQUqw22qTiJtCpvhb3TtFJkg0XbEr5GIW0hR+AaWg90Tl4P/Jpi2wywpMPFzlxJMOZBwtMlJKd+4OIhiZdtEIIEapbyy3OP3edF6+s9NSoMjuqE4sYfOJDh5goJRk/mAg7JCHE/VCKiKGB6uwYm1/qjG51vR55froDSqmBQqHwajabzSwtLfVeBYIQYt+TDjGxqzRNOxEEwWNhx3EvxooJnnh4iFI+RtKWLxXRXZK2yaljAxwfSVFvuJx/rtO5cXm2fk+/Xim31UlTopTvHHYL8d1cL8Bxe2fsx4Xpxe0usVOVnLyu79NWp9ipSo7p2TqXZ+t4ns/8couFe0zG94pCyiJpG5w7XSJlm9t/F0IIIbpDteZw/qudDuZeYlsGlqnxxMNDUoApRB+wrU5B6c+cHWV6ts4Lr3d2L/dL8ZhSahzA9/0fUkrNALJPTAjRc+SUX+yKycnJ8Xa7PR4EwTid1uqekU9bnJkqcHoyz6NHsyRj0lEgupcd1YmYGudOD+O4Pk+9r0jDafPtWw1q6+7mx8b27HLT0EjHI6TjJum4yaEhG9syKGajREyNQtoiYkpXmOgf1ZqznTCeqza2R9yJ+zM6FCeftpgsp9lo+0xvJuO/+M357feghtPuyYd/O6pjmTrFTJTKaGeEVWUkRco2KeVj6Lp0gwkhRDc5/9x1ZubXqdY7Oy57yZmpAqV8jHzaQpPLixB9Ix41qIym+G9/6SG+fnmRf7xc5Vtv1qit98fIcaXULwKvVSqVedd1r1y5cuWNsGMSQog7JQkxsVsSSqliEAQJOss3e4ZlapTyMQazUbKJSNjhCPGudE2ha2q786WQjlBvuEQMjWp9g2rNwTI1HLdzKG2Z+vZeoHwqwvHRziFvUkbJiT7luH4nGZZvMldt9lSHWzfb2pOwlVw0Nk/xnn99mdWGxvxSi422BvReQkzXOqNukrZBKW9TGUlxfDQl75NCCNGl5qpNbq84PXmNz6ctSvmYdIcJ0Wd0TZGyTabKaW4tt3jjxiqm0Vdf52Wg5ft+UdO0W2EHI4QQd0NqkMSuOHbs2G8Av06nO6xnEmK/8OEyhwbjfPKJQ2GHIoQQXefX/vibPP/6EquN3hpH9HbnTg9Tysf4zE9MhB1K39vqynv+9WWW1zaYnq2z2mhz+dq9jXbdabqusC29MyY2F9tMehn85Onhzc9J3ZgQQnSzaq2TBHvit74Sdih3bav7+NNPH2HsQDzscIQQe+B/+4dv8+3b63zuSzNhh7LT/mff9/80Eom8cenSpbWwgxFCiPciT/piR01OTkaAAc/zMkEQRIGeKIExDQ1NsTmuQrrChBDinVimhm0ZPZ0Qq27uupq93cAyNYayPVOz0XMsUyNlmxzMxUjZJgpYb3kk4yZu29/+8ANoOG2CAHw/wPV83PZbI68c1yMIwAsCAh/84J3HYWlKoTTQlUKptzporYiOpjqftyI6uqZI2gaGrkjGzM2O2U6Fvm3p6LpCV1IzJoQQ3a5ac6j32D2JphSmocgkItIZJsQ+M5jtTFYo5WM4rr/9XNLrgiAoaJo21Wq1FsvlcntmZqYVdkxCCPFuJCEmdtqA53kfDYLgJD20OywdN7FMbbsqXAghxPcqZqMcGrS5tdy7zzjPvrwAQNI2pCN4l22NZ62Mpr7nc9WaQ7XmsFBzcFyP6WureH7Aequ9/bktc9Vm53NOmw3Xx3HfOSFmGoqIqRG3jM0xNQZ21GB00MYyO/sWDw3GsS2dU5WB7RGyQgghetOzLy9w9WZvNSOYhiKftnh0Isu508NyHRJiH/nwI50jsuW1DeaqTc4/dz3kiHaGUuqHgUd0Xf9N0zQvAjMhhySEEO9KEmJiR7mumwHOKqV66oRxa5mxZepIUbgQQryzzp4LG15dCjuU+/bi1RVurzgUB6IcLsYZO5AIO6R9xY4a5AE7qtP2AlLxyHZ3WKPl0XDeqvhfbbS3P9f2AzzvnRNiuq4wNIWpa2iawjI1TF2RTkQ63WK6Im2bRIxO55oUwAghRG/aKpy4PFvnzfn1sMO5K0nb5FQlx9iBBCnbxJBrkRD7zqlKjrlqg7nFznjxuWoz7JDuVxTIKKU+7Pt+pVwu/4/xeNy/dOnSRtiBCSHEO5GEmNhRuq5nfN//ISATdix348yDBU6MZYjIyAohhPi+8mmrJxfWv5MXr6wwV20Si2g8+UhREmJ7zLZ0bEsHOpXxYwfCjUcIIUTv2EqGTV9b7bkOsZRtcurYAGMH4iRtOY4RYj86dWyAuVyMuWqTC9AvCbFoEAQfAdaAPwXagCTEhBBdSQ87ANE/jh079lHgfcCP07kgdn126fhoijNTBX744SEO5mJSoSeEEO8iaRscGorz+a/Mhh3KjnC9gFsrDjPz67zw+jIHczHsqI5pdP3lSwghhNh3fD+gueHx7MsL/J9fm2P2dqOnCnXOTBU4eWRrVGJU7jeE2McsU+fQYJyUbZCyTap1h4bjhR3WfVFKxZRSWU3TNoIgOLC4uPitsGMSQoh3IiVJYscopYpBEOTpJMN6QtI2KeVjJKKGLDQWQoj3MJCM0LbfeVxdL3Lbby2zXmu2qTfc7zuOTwghhBDhCgDPC6itu8xVmzhubx0eb+3WlL1hQgjL1CjlY5QWbUr5Zr+cR8UAlFLjdDrEhBCiK0mHmNgxuVzuPJ0Osa6fO2VbBkcOJjj3+DC//NExUrYZdkhCCNH1TEPDMnXqDZfiQJQrN3prTNH303A8qnWH519f4f/+xxucebDAhutjR6VuSAghhOgWNxdb/OUzs3zt8iLT1+p4fm8UseTTFtlkhD/4lRNMldNyfyGE2FbKxzhVyZGyTY6PprjQB7ualVIngfFcLpcpFAqqWq3OhB2TEEK8ndyJifs2OTmZME3TaDabUSASdjx3ImbpTJSS5JI9Ea4QQnSVUj6GH3QqG9te0DMHUu/F2ehUmk9fq5OOmyQ3l93rmozTFUIIIcLkuD5rrTZz1SarDTfscO5KIW2RtDsTSWRMohDinWx1jpbyMRz3rSkWPSwKlH3ff/XkyZOZTCaz9swzz0jXmBCiK0iHmLhvg4ODD7iuWwY+w2aLdLc7Opzkv/n5KY4cTPZLa7oQQuyZsQMJ4lGDr19eJICe2t/xbtZbbWrrLi9eXWGu2uTRiQE0peQ6IYQQQoTs1nKLy7N1/vj8az13UHzu9DA/+ECeRycGiEbkCEYI8b0ODcY5PppitdEmm4gwfa0edkj3K7HZKbbued58u91emp+fb4UdlBBCgCTExA4YGBh4HDgKfDTsWO7EqUqO46MpfuihQSKmhqFL5b8QQtwdRRAE+D60PZ9q3SEIOrs9+oFC0fYCXM8HBQMJC0NXaEquF0IIIUQY/ubCTV69tsrFKythh3LHUrZJPm3x9KkDVEZSsjtMCPHelCJlG6w2O81Uq43ebqpSSrWBnO/7V4eHh5uSFBNCdAMZmSjuWxAE40BF9chB4aljA5TyMZK2vPyFEOJeWKZGcSDG06cO4Lgel6/Vafse9NZu+++r3nBxXI/zz10HYKyYIGJqMjpRCCGECMmzLy2wvLYRdhh3JWkblHIxjpaSVEZSYYcjhOgBp44NMJeLMVdtcgGYqzbDDul+TQHjvu9/udVqLQG9U9UghOhb0iEm7tnk5GRicHBwwPf9/1Qp9UEgEXZM72ZrH8y/+uQkYwcSssxYCCHug64p4jGTQtpispzm+kKThtPGbfdHn1gQgON63Fxq8Y1XlzANjbVWm4O5npgMLIQQQvSFb11d4bXrq3zuSzNUaw4b7e4f06xpipil86GHBvmZs6OMl5IyKlEIcccsU+fQYBxD60zlqK27vTyiXgNMYCAIgvcvLi6eDzsgIYSQjIC4Z6ZpGq1WKwrkgWLY8bwX09CwTI1SXg4zhRDifmmawrZ0DgzEMHWNpG30VQeVHwQ4bsDNxRaL9Q0+8EAe25LDLCGEEGIv1dZdqjWnp7rDlOoUDg2kLMYOJCQZJoS4K1vnVsWBKPm0hWn09D5jDdCCIBgDBsMORgghQDrExH3I5XKVIAgeA56kkxTrap98osxT7ytyfFTGVQghxE6xowb5tMWjEwP82PsP8u8v3MDQVd90inl+wIbr87VXqvzNhZsAzC025VoihBBC7IE/Pv8a/9fXbmzv0+kFB3MxPnH2ECm75/QAACAASURBVD84mef4aEp2Vgsh7snYgQRPPlLE8wOK2SjT11bDDumeKaUGlFLFfD6fyeVy44uLi98IOyYhxP4lHWLinnmelwHKQDTkUN6VrisMTZFNmrLIWAghdknU1ACDQ4Nx1ltt3pxfDzukXbE1x3+u2iRlGyRtM+SIhBBCiP6z2nCpN9qsNds9NSrMMjUSUYNSPkYqJsctQoj7N5iJ0vYCbEvH9wNaPfSe+A6GgcbRo0fza2trjRs3bjTCDkgIsf9Ih5i4Z7lc7uPAr9IZl9i1d/vJmEk2GeGXnhrj1LFc2OEIIURfiscM0nETU9fIJi1eeH057JB2xfS1OnOLnaSYFdFlDK8QQgixC168WuMf/ukW/98rVW4tt8IO544VB6IcP5TiN84dk2JMIcSOGB20mSqn+crFW1imTm3dDTuk+/GAUioLXIlEIu7i4mI17ICEEPuPJMTEXZucnIzE4/GCYRhngQ/S6RDr2qHGldEUP/j/s3f3sXHc6Z3gv/XWVV39xpfmm5tq0bRlkbZsaWwPZxJZG2Ve4slkdyda5G5nkL2ZWwQBDrjBbfb2cIcJENwucpjc5o+73GYWSG7udjezCTzAZqMMLmPsvDjRRNbEw1i2ZUsm9UZRJFt8a7Lfq7u63u6PIjmOTUmURLKqmt8PQMi2aPIhu7pefs/veZ6ns5gY60UmwZ38RER7SQCQUGW0LRcQhEjN/NgpAQJM24VhOqg0LGgxCaIgQFVCeykkIiKKBMf10Gg6mLy6hnPvruJOsRmpCrGvfPZxHBvJsLUyEe0qSRThuB560+pWJw7HjWyLeheAAqB+6NChhbGxMXt2djY6J3oiirzQVvVQqMUURRmEPzesK+hg7md0MIlPf2wA3Ukmw4iI9tpYPo1sRkXVsIC3lzGzWA86pF1XNSxMTq+hWDFxe7mB7mQMoiAgpfO2ioiI6FHYjoeqYeHWYgOT02tBh/PAzpwc5gYZItpViuyfU3755DAuz1bww7eWASBSmwU+JCsIwhcALLVarTdmZ2dbAKIzKJKIIo8VYvTAenp6coIg/BMALwI4HHQ8d6OrEp58LIVTz2Zx6tk+6JoMUeBAYyKivabIIga6NXQnY8hldSyutVBvdt4zTrPtoFgxcWupgcmra5g42gvL8aDFeHtFRET0MJZLLZy9sIBLN0tbLYqj4ONHe/Ds4xl84WeHEY9JkEQ+dxLR7pIlf0bhkVwKkihgpWzCcjy40asUE+BXiGkAnlAUZapYLEZvBwQRRRa3MtMD8zxPBTAsCEKo+0DIkoiULiOlK0jprA4jItoviiwim1GRy8ZRNSzE1c5MELXaDlptBzcX61AVMcq7NImIiELBtBwUigZqEdtI05OKYaBbY3UYEe0ZSRSQjCsYy6cxNV+FqoiIaO5dgL8e3Q9gzHEcPeB4iOiA6cwVKtpT/f39TwL4FwAG4e/oCKXRoST+xa8cxXg+gzQTYkRE+y6bUTGeTyPfr+Nnn87itbeXgw5pTximg5ph4+yFAl6/vApFFiEI/s9PREREOzM5vY63bpTwzVdnUKyYQYezI2ldQTaj4n/45afwDz75GFSFSyxEtHdkSUBaVzCez+Dzn3gMU/NVVBqWP785eroAjIii6PT29j61trb2RtABEdHBwAoxeiAnTpzoarVaafiJsNAeP6oiQotJSOsKd+kREQUsk/A3JYwOJdE0HSyuR6cF0oNwXA+Nlo2ZxQZ0VUYq7i+S8TpERI/KdT148Ocrua6HluXAdQHP82DZLlzPr6zxNj7Xdjw4rv+53kYnJdfzYDkP3lZJFABF+ul5TJEFiIIASRIgQIAo+p0ZJFGAIvu71VVFgigCWkyCIIBty2lHZhbruBOhNokAkNJl5LJxxFUJksTjnIj2hyQJUBUR+X4dpuXireuloEN6aJ7n5QRBwDPPPJMEgCtXrnTeEGoiCpXQJjQonFqt1gnP856GXx0WWtmMiqFeDWP5UHd1JCI6EJ4b7QIAFCsmZpYa+OarNwOOaG8YLRu3lmx889WbmBjrxcTRHpw5OYxcNh50aEQUcS3LgeN4qBo2DNPB7eUG2pYL03JRrJpbbeb8xLxftVo1LBimDWcjCbb5uQ9KVURk0z+teN1M9Kd0BbIkQFf9TWgpXUE27beMy2Xj0DUJh/t1qIqEmMJEAd3fN1+9Gbn2w+P5ND79sQEMZ3XoKpdXiGh/6KoEXZXwpdOHUTUsfPl3fxJ0SI/ilz3PQ7vd/n82/v2dQKMhoo7HOzZ6IJ7njQmCkPe8cA/tnBjrxehgIugwiIjoA8bzaaR1BZ/52ABmlhqYWezczX+FooFJbCwkZ1R85mODkDYWjomIPsi0XLQtF6sV0/+z2oLjeDBMB0bLT4BVGm1Ytud/ru2i0rDguB4cx0PDtOG4HmqGBdf1q8BMy4FpubBsd6tCzHYeLtFgO97fmefkuJ6/M73ahiAAMVlETBGhKv7inCz6c3wVWURXQtn4OxGZhLI1Y1ISBSQ0eWNBT2Y17QE3t2LAaNmoNe2HPk73m67KODygY+xQGuP5NHSNSytEtP+yGRUpXcGpZ/tQrrfx3q1K0CE9NFEUvwgAIyMj04lEwr1y5Uo76JiIqDPxro0e1JjnecNBB3E/E0d7OLuFiChkxvJpZDMqqoYFvL3c4QmxJgrFJmoNCyldxsTRXqiKyIQYEX1E23JRNSzcWmygaliYmq/41VwV86cfVTOwyhnH9fzz9oYP/vNOqIqfMDvcn4CuShjLp7c2C/RlNGTTKtucH3C3lxsoVswHPraCpGvSVjJs7BC7khBRMDbXvV46lsXcihHphBiAf7zx5/8OwAbAhBgR7QkmxOiBuK57XBCELiGkcwA2d56eOtYHReZDNRFR2GQS/g7GtK7g8aEk/uKNOx07UwwAbq80IEsifufb72OwW8MvTjyGx3o0DPWyjSLRQeInttpYKjdhth1MzdVgmDbmVgy02g6abQdGy4HjejBatj/vy/ZgOX6Vl2WHuzvDvVi2B9t1cGupAUkUMLdiQBAFKJI/cywm+5sFJEnE+KEUVEXCQLeGbEZFNqPicL8OXZPYjq4DWbYLy3Hxo3dXcG2hFnQ4D6Qvo7ItMhGFxssvDmFuxd9ccONOHTfvRHLj4SAAqKr6FcdxFgD854DjIaIOxacKeiCCIHQBSAYdx90osri145SIiMJns11WLhtH1bAQ7/CKKcN0ADiYmqui0XJQqrXRnYwFHRYR7TNzowpstWzCMG1cL9RQMyxMzVe3ZoF1KtfzAAdoOH7bxXtWAXkedE1Gy3Jgux4kUcBgt8bqsQ7leYDjeFgtmygUo7U5JrYxKy+tK0GHQkSEwW4NbcvFQLeGpVIr6HAelrbx54jruvY9P5OI6BGEs8yHQueZZ54ZdBxH8zzvVtCx3MupY33IZlT8zq89F3QoRES0A5tzQ/6b331jozLCCTqkPTcx1ouJoz3cWU7UYWqGjaph4eL1dZTqbUxOrx+YpNd+GDvkz6Ecy6cwOpTE6GAS4/k0Ujr3eEbV5NV1TE6v4eyFhUglxL76hSPIZeM4czL0kwSI6AA6e2EBZ19fwPR8LVKtaD/kHUEQ/jmA2enp6dmggyGizsKnB9qppCRJSdsO9yaNnlQMg93a/T+RiIhCQVNEADLG82nUDBvXCjV47kZFQYeqGRYKxSbev11BsWpi7FAaooDQt/qtGTYsx0W9acO0HJiW38rN9fwZQ5skAVBjEhRZhCIJ0DUZsiiweps6imE6cBx/ttZmm8NSvY1S3cLMYh21pv/vm20Q3c49pe0bv+IWWC61IAoC2pbfbi8Zl5GKy1BkEV2JGGKKyIqykNtsCVqqtVEoNiOTLFZkEaIA5LJxXtOIKLR6UzEcyaVwZ625dc8eQbrneWOe5xmnT59eOHfunAOAd1NEtCtYIUY7cvTo0c8JgjDoed6/DzqWe/nf/tvncGwkg7F8KuhQiIjoAUzPVTE1X8XXX3n/wFRSZDMqVEXEt/7nT0ai3e/ktF/1cvH6OgrFJgrFJopVE6bloGb8dMOMrsrI9+voy6jIZmIbFRwKd9JTR5me83ddT15d86vA5qoorDUjVeXSCTbPoxNHe5DNqDh1rB+5bJzVtyFnWi6KFRPf+sEs/ugHoW5A8ndsHm+v/e7PBx0KEdFdmZYL03LwW//+PVyeraCwFsl7kxaAJc/z/rDdbv/ByMhI/dy5c+HeoU9EkdHZgzto1/T19b0EYATA6WAj2Z6qiEhoMv7Bz+Tw+GASusZDm4goamKyCEkUIIkCak0btuOhgwvFAAGwbQ9ty8XMYn1ry2NY5pEYpoNKw8Ib02t452YZr729jOn5Km7cqWO5ZG5Uv/iv0wcrxCD4u/8N00bVsFGstjG3YqBYaWNmqQ5hYzuWrrFRAUVD23JRaVh4b7aC6fkqLs2U8frlIi7NlDE9X0NhrYnlUgs1wz4QyfxQ2TyP2n6CZXG9hZmlBm4U6iisGZhbMZDWY7AcF1qMzwdhUa638TdTRVy6WcbMUiPocHbshad6cGQ4hc98bCDoUIiI7koQAFEQUG/aGOqJ4/JsBaIowI1euboIoChJklmr1VbW1taMoAMios7AlQjaEdd1BwGMCEI4iwpVRUJKl9GbjiGbiQUdDhERPaBsRoWuyThzchiqsrjRQsn5u4mWDuPPS3PwRz+4hVw2Dsf1MDHWG5rKBqNlo1gx8Vdvr+D2SgOTV9d39P9ZGwvTHzY1V9342YYxnk+HviKOaJNpOVirmZicXtuojjSiPpejY2yeR6tz/mtx8XoJaV1BSpcxfsifL5br1aFrEjKJcGw2IPjVldNrkataGDuUxuhQIugwiIjuaXOD4c8+k4XRsvHKudtwXA9WtOqrZABdAMYEQSjLsnwZQDHgmIioQ3CbHO1INpv9iiAIzwMYDDqW7Tx9OIOXjvXh40/18GGXiCiiJFFAIq5goFvD8dEu3FlvoW25W3NjOlnbcjG3YuDKbAUX3i8im9EQk8VAqqjWa2389Xsr+N7FJfzn1+fx3q0KFtdbj1z50rZclOsWpudruHGnjmsLNfRlVGgxMfTz0+hgKVZMzK00cfbCAr7/5hL+3fdu4fsXl/D2jRJmlhpYLplotOzOrmCNMNv10Go7KFbamC82MXl1DT96dxWvX1nF3IoBw3QgQIBlu6xUDUCxYuJ6oY7/8P1ZFCsmLCf8b6R8fwLPPd6FMy8N48RoF48bIooETRGRTsRg2x76MhquLtSCDumBCYKQBvCE4zjXBgcHxdXV1aWgYyKi6OOdHO2IIAhJz/O6go7jbpJxGQPdGmIcoE1EFFmiKEBXJTzWG0cyLqMroUA9IOd103JRKDZRM2wslVr4pYk2Bru1QGJp2y6WSi3MLjcwNVeFYTpwdmHB0tyYDbdZVeO6HupNe1e+NtFu2jxOZxYbKBQNXLxeCjokegCO48FxPJhWG4CfgFEVEdl1FaoiIZtR0ZdWIYnh7HzR6cyNjS7bVRKHVULzj5tsWmV1MxFFhrrRKjjfr8OObteNNIC0IAi9juOEdk2SiKKFTwF0TydOnOhqtVpdruu+IgjCJ4OO526+ePowvng6j/yADl1l4SMRUScoVkyYlosv/+s3YFouitXoLJ7tlq9+4Qhy2TjOnBze0+9jmH5i6uuvTKFYMXH+8uqefr9N+f4EdFXCf/xfPgFJEqCr3KtF+2vz2P+jH8xiqdTC995cRHsjeUud78zJHHJZHWdODm+1WqS99bX/99LGdSY6na++8tnH8eXPjiCbUQ/MRh0i6ixzKwb++LVZXJop49LNctDhPDDP824AqF+7du1jQcdCRNHHO366p1qtFovFYklBEEKZZRIFAYosQIuJ0DUJUkhnnBER0YPbbKM3nk+j3LBQa1qwHa+j54p9WKHYhGW7uDRTRncyhu6kAl2Td62ywXE92I6H2aUG6k1/ZlilsX9zkcy23w5zZrGBZFzGE48l9+1708Hkuh5alot609o65tu2X6G5XmvDcT0coFPMgbdZpXRpprxR/RNDJhFDTBaZHNtlNcMfXrPf15lHoSoishkVXUm/Yp1FhUQUVaoi4nB/AoViE7oqwbTcqD1TxQFgbGxsRJKk1pUrV9g6kYgeWiiTHBQefX19hzzPe0oQhF8A0B90PB8W23hIOXWsD3/vuT7IEp9SiIg6hRaToGsyjj/RjUNZHRevl+ABB6pyY3q+isuzFZy/vIpG00ZKVzZaSe7OLVyj6aBUb+MP/uImvvPjAt66UcJyubUrX3tH379lo9KwUKq3Uay28cnx3n373nQwNdsu5pYbeGNqDa9O3sGf/OVt/PmPC7g0U8bt5QYs24MbrQUiegRzKwam52v43ptLmJ6vYm6lAUkUYZgOctl40OF1lEs3yyhWTPxfZ69huRyNiu/BHg1nTg7j40d7cSSXYptNIoqsZFzGc6NdqDdtLKwaqLfsSMxw3CQIQloQhB7P8yqO42TX19ffCTomIoouJsTonvr7+58EcMzzvJ8VBKEn6Hg+LKHJGB1K4vgTXRjPp4MOh4iI9oAAAYosIhGXoSoiWm0H7ejtanx4AuB5gGm7WC6ZMEwHi+st9GU0OK63VUn3IBzXQ6Pp4J2bJZx7dwVv3ShhteJ/7SAIggAIwOhQAgCga6zMoN1TrJgo1S289vYyLt0s4/x7q7g8W8HtZWOrNeuBOZ/QPTVNB8WqiZt36qg1LdwpNqEqEgQIbJX3iL71g1ncWmrg0kw0WnWldQW5bByfe3EIuV4d3alY0CERET2ytuUiGZexUDT8OcERu/8RBMEURVEcHh7+iaZpKJfLdtAxEVH0cLWB7sl13S4AI4IgaEHHsp2YIiLXG0daV4IOhYiI9khKl6FrCfzj03mkJhdRqrVRM+wDUynmOB6qhoVLN8sbO+xbyGZUjB1KQ1XEh5qdaW9+zZkyzr6+gGLVDPT3ObNYBwBMzVUxnk8jm1EDi4U6T7HSRtWwcPb1BdQMG1Pz1aBDohAqVkwUKyam5vzjo1A0kMvqSOkKkAVbKD6iH74Vre5WKV1G38a1ls+aRNQpjuRSGOjW8OP3i1itBHv//5A+AUBqtVpdXV1dZQD719qCiDoGK8Tonvr6+iY8z/t7giA8DkAPOp4PG+jW8PlPPIbRoST6urh4RkTUqTarxAa7Nbz4VA9EUcBAt4abd+pBh7bvKg0LC8Um/maqiDevlWBaDgRgx0mkYsXEtfkavvGd67h4vYTF9SYs20PQ+0Md10OxaiKbUVn1TY/Esl2Uam2cv1zEf/rRHM5eKOC1d5Zxa6mBUr0dqRZBFJxa00ZhrYm3bpRwvVDD7HIDCdVPirGKdefenSnj2kINf3p+PlLVCF/57ON4drQLJ57ohhoTIXJWNRF1AFkSoMUkKLKIo4fS+Jv314IO6UHJAFQA/Y7jmMVi8VrQARFR9PBOnu4nJghCEiFNnsqSiO5kDFoslOEREdEuEQRAEgT0d2no79Jw8XopMotqu63SsAD4ia1cNo6jwynksjvfs2JaLioNC1NzVdSa4am0My0HhWITNYOdT+jRuJ5/nC+XWpiaq2J6voaqYQUdFkXM5jFTrPjzriRRwPHRbr9ijHas0rC2WpNGSS4bRzajslUmEXUUSRQgiQJy2fhDdZkIARlACsAYgJ8EHAsRRRQTYnRPrusOCoJwAkAy6Fi2k9ZlfGKsB6oSyQs5ERE9pF/99GEA/oyPQrGJsxcWAo4oGIViE9/4znWkfzCLlC7jzMlh5LJxnDk5/JHP3VyQ/PK/fgOm5aJYNQOI+O5My0Wh2MTUXBWT02sYz6e58Ew7Zpg2HMfD73/nOpZLLXzvzWi1Z6Nwm5qrYmquirMXCgCAMydzyGV1nDk5jLSusJ3iPZy9sIBLN6MxNwzAVhJsu+soEVGneOFIDwDgy58dieJ9UxeA067r3h4bG5vVNO2dd955JzoXGiIKHO/c6W6E06dPS4uLizL84yR0PSJ0VYYWkyBJAtjBgojoYMpl4xAEIN+vo9KwtqqnDhrbdbcSSqbl4tJMGaosbi3sxRQJs0sNVBoWTMuF5YR3p36r7bCtHe1YvWmj3rJRWDXQbDtYLrWwXmsHHRZ1uGLFhCgImJ6vYqBbw2C3hkxCgSKzmmiTYTowWjaMlhOp6rDHejRkkrGgwyAi2he5bByuB6iKCNvxotaBo9fzvLFarXbz9OnT9XPnzrHNBBHtCMtqaFunT5+WZ2dnk7IsfwrApwCE7unuiceSeGIoiZdfHIIkMiNGRHQQjefTyPcnoGsSTMvF3IoRdEiBsGwPhulger6Kt66X8DfvF3Fppgxdk2HaHmRRwDe+cx1nLyxgudwK9eJkIi7D9YCxQ2lkEqwQo3ubmq/iwpVV/OGrN/Gf/noe79+u4s5aM+iwqMPNrRiYWazj4vUS1mttOK6HgW6Ns8U+4OYd//fzV5dWUIjQe/LXfnEUL78w+ECtiImIomp0KImEJuMnU2vwgFA/I3yYIAj9AF4UBOHHa2trxXK53Ao6JiKKBibEaFvtdluLx+M5URRfAjARdDzbGc+nkeuL4+Qz2aBDISKigKmKhJSuYLBbQ71pb80QOqgECDAtF7WmjZnFBqbna7h0s4zyRoVYmCU0GZIo4ONHe9CbVoMOh0KoZthYLrXwl+8sY/LqGt65WcbcioGm6URtZzNFmQB4HtDeaEG7VGpher6G0aEkHNc78NVil26Wcf5yEdcLNRimE3Q495XNqDg8kMDLLw5hZDCJNFv2EtGBIMDzPLiuP893cT1yOSUZwFUAaqlUuhF0MEQUDdzCRtvq7++PtVqtQdd1k0JI+xFmMyq6EmxnQUR00CXjMo6PdiHXG8eJ0S4srbdg2S6qxsFsnwgAVcNC1bBQKEZnV/6mzbjDnrij4FQNC7eXGzj7+gIKa81IHucUfY7j+efaOQtTc1W8c7MMVRHx6Y8NQFVE6OrB3ntaWGticnoNtYhci/syKsYO+VXnuWw86HCIiPaFqogY7Inj8xNDqBoWLl4vBR3Sg9A2Pp6TJCkN4L8EHA8RRcTBvkunu+rq6ko4jvOEIAgnBEF4Nuh4tvPyx4cw2KNh7FA66FCIiCgEFFlESlcw3Kdj4mgvJqfXocgiEysRo8giJFHAZ58fxEC3FnQ4FCJ/e3UNl2cr+Dd/fg2vXynixp06aobFqjAKBcvx0DQdXLxRwpvXSjAtBwL8TXwHSaVh4W+vruNv3l/DpZkyLNtDFN6hp4714czJYRwe0KEqXCYhooNDEgUk4goc10NclVGsmpGo7N0kCEJGEIQnBwcHz/b398dWV1e5U4qI7okVYrQt13UFQRBkQRBC2+tDVyVofFghIqINiixCkYHHBxMwLReqEtpLGN2D5wGOG40FVNpf67U2lkotXJ6twHE9GK3oLNZQ57Nsf/PFpZtl5LJxHB1OHcg5VJbtolgxUTPC36L3g9K6glw2jhifL4nogBFFAboqoSetIpeNR/EZqg9At+M4miTxHE5E98eEGG1LFMWk67onAAwGHcvdjB9Ksbc7ERF9xOZu/LP/6iXMLDbwzVdv4tZSAzOL9YAjo50wLReeYcN2mBI76Pykl41XJxfx3Z/cwfR87UC3QqXoKBSb+MZ3riP9g1mkdBm/+aWnMXYofSBa8W3+7LWmHXQoO5LNqDh1rA8TYz0H4vUhIrqbiaM9mDjag5rhtwKevLoedEg7lQQAz/P+T9u2LwP4rYDjIaKQY0KMtuW6rgi/F29ojxFdk6HGIrdzhYiI9oksCUjGZRzJpeB5/qDoYsWM1I71g0gSBaiKCDGcI0xpnximg3rTws07dcyvGqgZNmyH712KFtt1YVoubt6pw3Y8qIoIRRaRSXTmpr5ixUSp3oZpuZF4v6qKiKQmI5eNIxXvzNeEiOhBDfXEYVouLt4owfMANzqtqbMAek+cONFVLpdbs7OzraADIqJwCm2ygwIXg18dlgw6kLs53K9DkrhaRkRE29NVGU8+lsRv/KOnMHl1HZPTazh7YQGFItvKh5muScimVSgyN70cZHPLDVwv1PB7f3YNtabNyjCKJKPlwGg5+IPv3oQkCvjNL41vVSR1ovPvrWJmqYFi1Qw6lB3JZlQ8mUvizMlhdh4hItrw9z/5GEzLxXcn70StRfVLAJKtVuuEpmmzAGaDDYeIwooJMdqWJEmy67pdAEI3BVqRRYiCAFWRIDAfRkREO5DrjWNirBf1po2Vcguvvb0M1/vpzBcKD3mrQowX+YPoxp06Gi0bZ19fwFq1jVrThmlFZiGGaFuW7cIRBLz29jL6ujQAwOH+BPL9nTVjbPLqOoqVaCTDAGA8n8bjg0mkdQWx6M3MISLaE7omQ1U8nHiiG+V6G+/dqgQd0oPoAnAawDkwIUZEd8GEGG3Ltm1ZFMUM/LaJoaLIIiRR4EMLERHtWC4bRy4bhyQCpVob5y+vwnE9WNEYcXKgSBJbJh5kN+/UsFRq4dvn5oIOhWjXbG6++OFbyxjs1qBIAvAsOi8hNr0WqbbEm3PdUjqXRYiINumqBAA4PtqFQrEZuYSY53k/JwjCbNCBEFF4SUEHQOHU39+f8zzvHwmC0AUgFXQ8HzScjaMvo+K//rl80KEQEVHEpHQFgz0ajg6nceSxFK4X6gAAy4lMb/yOd3Q4jReO9uDEk91sYXWATM9Vcf7yKv70/AJ+fKWISoMtEqkztW0Xd9aamJ6v4cfvF5HNaIjJInQtukmZd2fKuLZQw5+en0fLckM/byaTUJDSFfzWrz6D0aFkpH/3RER7JZfVkU4ouDLrJ8QisuFBBtADYHlwcHCpv7+/vrq62g46KCIKF9750bY8zxPgHx+hK8PSFGlrxwoREdGDSMX9W59jI5mt1nxtWwTAlmxhEVcldCdjkDkn9ECpNm0Uik3Mrxqc80cdrW27WCq1YJgOVsot/NJEG4PdoWvK8UAqDQvFihmV/SZfOQAAIABJREFUxVIosghVEZHLxoMOhYgotHLZOEr1NnRVgmFG5llJhl8l1uU4TpemcccDEX0UTwy0LVEUN2eIhe7pLK5JSHHHOBERPYJcNo7BHg0fH+vB5NV1TE6v4ftvLmGp1Ao6tANvdDCJz3xsAN3JWNCh0B6rGRbmVgz88Wu3MT1fxdRcNeiQiPZN1bBQNSz8r9+6DFUR8W+/+gJ0TY5kG8WzFxZw6WY56DB27MzJYYwOJYIOg4go9A736/jal57G2QsFnL2wEHQ4OyYIwhc8z/s50zS/BOCNoOMhonAJXfUPhYPneSL8ZFjokqabO/qIiIgelSwJ6E4qONyfwMhgAqNDSUiSAJEDrPadIovIZlSkdJkzxDqc63pwXA9Tc1XcuFNHsWKi0YrMzmOiXWXZLkzLxdR8FTfu1FCsmJHZiW+Yjh9vy4lEddjmjMrulIJsRg06HCKi0JMkAWldQW86hsFuv8VvRMgANNd1B5588snhoIMhonAJXbKDQiMGYDDoILbTleADDBERPTpJFKCrMl440oMXjvQg36+jWDHx9W+/D8f1YHCBfl9lEgpOHevDeD7N63yHa1kOHMfD11+ZgmE6mFtpBB0SUWA25+V9/ZUpHO7X8aufPozxfBpjh9IBR3Z/c8sNTM1VMbdqoFg1gw7nvhKqjJTuX/ePj3YFHQ4RUejpqoyxfBqrVRNt241SR40kgKQgCJ+VJOlxAL8XdEBEFB5MiFHk+BVinCFGRES76/BAAn0ZFV88fRgr5Rb+6p0VmFY0dr1HXVpXMNitYWKsF7leznTpVI7rwXE8/PW7q1gpmyhWTVg2319EANC2XKyUTbz29jKKFRNVw8b4oVSoW8UXik1MXl1H1bCCDmVHctk4xvLprXmiRES0M7neOCbGenHpZhmG6UTmvO953nEAwyMjI3+QSCTcK1eutIOOiYiCxztBihxFYstEIiLafZtzW1K6gum5Kt68ug4ATIjtg5QuY7BHw8TRHqRDvPhLj8ZxPJiWgx+9u4qpuSqKlfBXlBDtF9NysFJ28MO3WqgaNkzLRa43Hu6E2FoTk9NrqEVkYTSXjfM6Q0T0EHJZHdmMiv/vx4WNTRvROO8DOAHAhj8SxgbAhBgRMSFGH/XMM88MOo7TE3Qcd6PGJOgaD10iItob2YyK55/qxv/x330Ml2cruDxbwfnLq1y830O/+qkRDHSryGZUyBKHh3Ua1/XQshz89bur+NG7q/jbq+tYr3E9Yi8osoiMriAmC1BkEemEAkUWkVAliKIALSZBkUUo0s42lxmmDcf1YLYdGKYDo+WgZTlwXQ+rVXPj77hpYLdNz1VRKBoA/CTOmZPhGn9SaVh4d6bsJ7arJizbCzqke1JkEZmEgrFDaZw61odMggkxIqIHocgCZEnGP/zZHH7m6Sz+5X+8HHRIOxUH4MVisV9pt9uLAL4bdEBEFDxmFegjHMfRXNeNCUI4F6QkUYAkhjM2IiKKPlURoSoxdCdjMG0XpXqblcl7LN+vozsV4++5Q3nwq8NWyiam5qpYr7VhmHbQYXUkUdg8h/kfXYkYYoqItC5Dkvy5iaoi7fi9VjWsjZmKNmqGDUm0IJn+68n78b1TNSxUDQuFYjPoULZl2S6KFRM1w4pEFfXm+yKtcxY1EdHDEAUBEPzWiRFrO7s5b2UYfoUYERETYhQ9uiohrfPQJSKivTdxtAcTR3vwD38mB6Nl47///YswLRfFKqvFdsOvf/4JjA4l8JnnB4IOhfZIzbAwNVfF11+ZQrFqstLyIR3u16GrEsbyaeiajHy/jrSuIBWXcXggAV2VkMvq+x7XZrKsWDGxWjFhmDZsx8Pk1XUYpoO55QaK1c2/c+A44a4kCpuzFxa2/jlMlWKFYhPf+M511JrRWFvM9yfwz848hdGhZNChEBFF2lg+DcB/RqoZNqbmqwFHtDOCIPwzQRDeGBkZ+XMArdnZ2VbQMRFRcJhVICIiIroPTREByDg2kkG9ZUO+I6DeslGPyGJgWIiCAEUW0JNW0ZuK4bHeOHfrd7iZxQYWik0YpgPLDn8lSRBEQYAgApoiQRIFdCUVSJvtDSURiixgqCeOeExEfiABVREx0K1BV2XomoR4TIKqSPf/RntAACBJfqxpXUFMFuF4Hg73J9CyHCRUCeWGhcrGh2W7MEwHtuP/2bZcmJYDy/bgekyW3U2h2ITreZhZrKM75VcwB6VYMVGqt2FaLmwn/O/ptK4grSvoTsUQj7EKmYhoN4wOJbFSbkUmIQZAFgRBlyRpGMAKACbEiA4wJsSIiIiI7qO/WwMA/PY/fRaFYhNnLyzg0kwZl26WA44sWhRZQDaj4pcmHsPnJ4aQ36hsoc71f796E6V6G3MrjaBDCS1FFhBTRBzu998Pn35+ALoq43C/jr6MP1tP1+RQtigURb8No67KGOqNb/33F458dBzx3IoBo2Vjaq66tau8UGyiUDRQrJowLSbE7ubshQVkMyoW15r4zPOD+PTHgquqPf/eKmaWGpGplB47lMJ4Po0XjnQHHQoRUcf49c8/gUszZfzlOytBh7JTSc/z8pIk/YooiufgJ8WI6IBiQoyIiIhoh1RFQl9Gxaln+zDYrWF0MImL19dRrvvzXujushkV/V0aPnWiH8dGMshmVChS+Bb4aXdMz1VRbdq4tdRA03SCDic0FFmEKPgth+IxCUM9caR1GamN2UaqImJ0KAlFEpBJxKBrfvVXSEf7PpBMQoGuShjPp2FaLnJ9cVQNCzXDxp21JlptB4W1Jpqmg8X1JmqGzfPqBxgtG9PzNaR1BQDw/JHuQCrFJq+uR6r16cRYL3IfSNYSEdGjS+sKBro1TIz1olA0Qjvz8kPSgiB80nGc2ZGREW12drYNIPylzkS065gQIyIiItohVRGhZlScyvRhdDCJYyMGihUTjlPnwu19ZNMqnhhK4szJYX/2EeeBdrTN6p+ZxXrQoYSKIguQRAHHR7vQnYzhhSPdoa8C2y2ZhJ/I2a5N6mb12E+urqFUb+Ota0ABTZ5XP8AwHUzN+a2pqoaFxwcTwSTEptdgWtFZP5w42rOVRCQiot2R0mUMdmuYONqDSSAyCTEAn5Ak6Q3LsrTTp0/b586di84FjYh2DVciiIiIiB5CNqMircv4n/6rMbTaDr59bg7Fionzl1eDDi1UBro0qDEJv/mlcSTjMrIZFTIrwzrW9FwVU/NVnL1QQKFoBB1OoHRNQiah4LnHuzDUE8djvRpGBpNIaDL6Nt4HqbgMRRY3KscO7vtioEuF46noSsVgOy4+98IQSvU2SnULt5cbMEwH339zEa22g+VydKqT9sLt5QZWKya6UypyvXH86qcP78v3fXemjErDQrFqwo1Ad8t8v46EKmM8n4bEaw4R0a7rScXw8ouDqBoWLs+W0Wq7cMN9gZDgt048EYvFfmV5efm7ABaDDoqI9h8TYkREREQPQVVEqIqIoxs7z5kI254ak7bapEmSAFURgw6J9lC1aW/NhYrIbuE9I4kCtJiEgW4NI4MJjA4mMJ5PI8VqlY9QY/4swQ/OFNxsmajKIqqGxXmDGwzTgWE6KBQN2M7+bWyvNCwUK2ZkqsMSqozURjtSIiLafTFFxEC3hrSuQBKFKLR3FuCvg3cBGPY876Ml60R0IDAhRkRERLQLvvqFIzAtF1/9whGcvbCAs68voFiNzuLhbttsi/ivvvwMjo1kuCjZ4QzTwdxyA6/+5A6+fW4u6HACkcvGkeuN48zJYeSycUyM9QYdUqT5yQwZuaw//+nMS8Nbx9mlmTLeuVnG+curkZpntZu+9+YSAP9cm8v6x91eOnthAZdulvf0e+ymMy/lMHYoHXQYREQdSxIFpHUFp57tQ0qX8Sev3cbcSiS6A3xCEITjnue9MTIyUp6dnY3OxY2IdgUTYkRERES7RBT8yrFcbxzHn+jy5+Js7OR3PcCyOz85JgoCFFnAQLeGwwM6UnGZ7ao6nGm5qDYsXC/UsFZtBx3OvhA3dkIPdmuIySJ6UjH0d2no71I32qkyAbwXJAHQNRl9XRpGh5IbbRXbqBk2TMtBsWLCdjw44W7ZtKs2KzELxSbSe1ARZVou2paLVtuJxAYPXZU32pXG+D4kItoHCc2fJ5bQZKiKGIVrhQhA9jyvX5KkYQBMiBEdMEyIEREREe0SRRaRzag489Iwzrw0jPPv+dUL3/jOdZiWi2K18ysZFFlANqPi5RcHcebkMLIZlW0SO1yxYmJ6rorf+7NrqDXtoMPZF1pMhCQKOHNyGIPdGl5+cRCqIiHGY31PqTEJ+X4d+X4dnzrRjzOVHEzLxeT0GgrFJs5eWECt6bdaPCjOXljYqqKbGOvFxNGeXf36xYqJQrGJxfVWJK5hhwd0jB1K49nHuzA6lAg6HCKijvfkY0k8+VgS33tzCdWGhcJa6FtmxzY+PiVJ0iiAywHHQ0T7jAkxIiIioj1yeCCBvo0EWaVh4d1bZSyvt7BUagUd2p7pSav4pYnHcGwkg7SuQGZ1WMc7f3kV86sGak2/SqcTfbDycbAnjvFDKaR0BRNjvUhqMlRFYiVkAHRNhqp4GM+nkcvGkU4oW/PrpuaqByY5VjNsTF5d35rT+MRQEsn47jzqF4pNTF5di8zvMdfrtytN61zqICLaTy8c6UFfRsUf/WA26FB2RBCEJ+DPEyOiA4Z3iURERER7JN+vAwBSuoKlUguCAFxCuaMTYr2pGD4/MYRsRkWKC5IHwvn3VlGqtyOzYP4wBNEfHn94IIHjo114+cVBDHZrnI0XMF2VAABjeX9W1MRYL6bnqpiaq6JqWCgUmx19XG6qGhYmp9egKiJ0VcZAt7Z7CbE1A5PTa6gZ0aj+zGV1TBzt4XuTiGifvXCkG0dyycgkxAA8CWBvB3ASUShxlYIip2U5MMzO3H1MRLTJMB0YLRvXFmqoNa1tBxSrigRJFDCWT0NTRAx0a9A1eWuBkMIjm1GRTijoy6j4hRdaWCmbW+0Uz19eDTq8XXPm5DAOD+jIDySgsFqm452/7B/Db10vwXZCPy/igakbbRFffmEIvekYPjnei65kDN3JGHpSMbZHDKn8QALZjIrxfBqm5eLb5+b8Ct2ZMgzT7ujniHdnyri9bKAnpeDIY6mtROHDaFkOlksmbtypY3q+hkYr3AkxXZVwuD+BfL+ObEaFIvMaRES0n/IDOhzHw/ihNBqmve3za8j0AHDHxsZedl13/dq1a38bdEBEtD+YEKPIcV3Adg7OoGwiOpgcx9uaOVWqtzGzWP/I5+iaDEkUthJhXUkXqsLzYxipighVEZGKy+hOxjDUY237mkZdLhv3j0cmZQ+EzdlCpXo76FD2hCQKkEQBuWwcg90ajo92cU5YBOiqBF2VkM2oAPzE7eY5uG2LADo3IVZpWKg0LJRqj16x6bqAYdpotKLRdlKWRKR0GbomcW4lEVEAdNVfYo5Qh4gYALiuOyiKvG4QHSTcNkXbGhsbO+153l8FHcd2zpwcRi4bx1e/cCToUIiIdtXk9DoKxSbOXphHYa2JQvHBBxKPDiXx+GACLzzVje5kDGdOsgtE2E3NVzG3YuBPfjj70K970HLZOADgtd/9+YAjof1QM/wF8v/xD9/GpZvloMPZdeP5NMYOpfFPPn0Y+X6drdc6gGm5KFZMTF5dx+T02lZ1Y6fa3DDz5//yJaiKuJUcfBAzi3V889WbmJ6vYWquugdR7q7xfBpf++I4cll965pERET7b3J6DdPzVXz9lamgQ9mpcwDeuXr16j8POhAi2h+RSdsTbbIcF6bVeW15iOjgcT0PngcsrBpomg6m56tYrZioGfZDn+eapoNSvY35FQOlmoWL10tQJAHJuAxdk5FQ/d3Tksg9MWGhqzJ6kjGM59NI6wrSuoLby41ItfUaf4S2XBQ9pXobt5cbaEXoGL0fVRGhxSQ81hvHkVwKo0NJP6nA1p8dQRT81zibjmF0KIm1qon1WhvXCzW4HmDZnfVs4bh+tfj0fBWZhIKUrkCWhB1f+03LhWE6KFbM0LdKBIC0riAVl5HWFVaHEREFzD8n+880puVEYf2uy/O8rhMnTnSVy+XW7Oxs5w57JiIATIhRBFUaFhSZDzpEFH227cG0HHzrB7O4Xqhh8ur6I3/NxfUmFtebeOt6CQDw7XO30Z2M4YUj3RjPZzB2KI3xfDpKrSw63uF+HYf7dXz8aA8KxSYKRQO/8+2pSOzI3/S1Lz4ddAi0jy5eX8fZ1xewuN456wXZjIrRoSR+/RdHWWHSgRTZr5I69WwfTj3bh194cRCGaeOr/+biVnviTmK2/WT11195f6Ny6ml/gXKH1/5ixcTcioHzl4t7GeauGTuU8is7uTmDiChwm+fisUOpqHS/OCEIAlqt1glN02YBzAYcDxHtMa6G0bZc17UFQSgD0DY+QsOyWSFGRNHmuB6MloPLs2Vcnq3g/bkqVsp7s7DctlxUGham52soVtqYmqvi4g0dCVVGLhuHrkrI9yceaKGM9lp0KlLy/QkkNAlptpQ7EAzTwdxyAzOLDRTWmjCt6FeIbR7Dn58YQm86hlxWR5rnwo7XlVCQ0CR85RceR6nWxsUbJRSKRhQW7R5IzbBRKDbx2tvLOD7aheNPdO3o/5u8uoaZxcYeR7d7JsZ6ketlEpuIKCxSuoKJsV5MTq9F5draBeA0/PaJs0EGQkR7j097tC1JkmzXdcvwLwqhSoi1bXdr1yMRURTZjoeq4bczPPv6AopVc88S/ablbyKoNKyt/5bNqFAVERNHe5DNqJBEEchGagAyhcThfh3ZjMpj54AwWjam5qq4tViPyuLGfW0ew188nYckCVsD4amzZRJ+Ev/Lnx1BodiEJAmYBDrmuN5UNSygCPzwrSWkdHnnCbHptUjNWJs42sONGUREIZLWZUxsdL/ALnRB2Qddnuf9nCAIs0EHQkR7j098tC3HcRzP8+qiKOpBx/JhK6UWakb4e9kTEW3HMG3M3KnjD/7iJm6vGChWTVi2t68xVBoWRAE4f7kIRRLx+uUiupIxdKcUHO7ToWsyTh3rh65JyPeH7jLQ0eZWGvjx+0WU69b9PzkETj3bh7FDbFF1EBQrJm7cqePshYWOSBo8+3gXnhvtwmeeH8BAlwZdkyNUm0m7KZtRcebkMJ4+nMbPjPfih28tYblkdkwbxUbLxvR8DX/5zgqMluMf893b73esNCxYtouL10uRqADN9/sV7+P5NOf9ERGFiK755+bp+Sqm59K4vRL6+chJACc8z7vwzDPPDAJYv3LlSjvooIhobzAhRtsSBMEDYAMIXW/CluXCAxNiRBRNjuOh1vSrLGpNO5AWsJbtf09zY/f34npzq2Viu+36u8hHu/c9LvJb0hUrJiwndJffbWUzKmctHRCm5aLR9Nuv1ZrRvw/rSirI9+t4fDCBwbskB+hgUBURuWwcpuXAdT1MTiuR2ZSwE47rV6WvlFu4vdK4533HZmv6Ur0Nx93fzToPI6HKSOkyUqwOIyIKFUkUkNKVjQ8ZsiQCCHVCTIbfISvpOI7WarXEoAMior3DhBhtSxTFluM4s/DbJQ4GHM7fYZgOZ4gRUWR9/ZX3UayYKKyFq8KialioGtZW5cfZCwWoiriV8Mj1xnHqWD+yGRUTYz0BR9t5TMtFsWJicnodZy8Ugg7nvsbzaYwd8j+YEDsYNivDwnbuehC5bBxHcin8xpmnkM2oyGbUoEOiEBkdSmJ0KIkTT3TDtFx89fffhGE6uL1iBB3arrh0s4xLN8tQFQmjQwmcOTn8kc+ZmquiWDEj043jpWf7MDqUCDoMIiK6i4mj/ozH3/n2FKpz4d9s4nneJ13X/Q1Jkr4B4EbQ8RDR3mBCjLZlWZYnCIItiqLreeHaHbi5W9G0XIgCoMjcuEFE4WfZLlzPbzv2wXleYeZ6/rm2Ztgoyn67tGLVhCQJkEUBuiZBi0mIxyTomgxJFKAqPCc/DMf1UDOsSLSoAoBUXEEuG+frfQBsnrsKxWakZgp9kCKLEAU/kXtooy0s7x/pbjaPjWMjGZQbFkzLRb1lo94BlZEAsFxuQZaEbZ+lihUzEi1RN+9DulMKE9tERCGmKqLfiSQuI60r/mzLEPM8LyEIwqCiKPHTp0/L586d64yLPxH9HUyI0bZEUXQANDzPC93Vymz7i4XFqulXL6T5EERE4VfZWFQ7f7kYdCg7Ztl+1dLmIvhm7Cndf6AZO5Te2FGfwPihNFK6wmqhh2S07K2d+VEwnk/jzMlhLkQeAJvnrrMXFoIO5aFlEgpURcTXvvj0VuUr0d1kEn77vd/+p89hbsXAH782i0szfnVVJ/jhW8uQRAG/curQR94P5y+vRuLn3GyV+MKRHhwf7Qo6HCIiuovNivzxvD9zePLqesAR3Zsoik8CGPY87z/Mzs7OAwj/RZGIHhgTYnQ3bQBLAOpBB3I3xYqJhCYzIUZEkTA1V0WxGo1kx/20LRdVw8KtpQbK9TZuLdW32jCN5VPQYhIe640jFVeQ1hVkEqzGuJ96y8almTKWSq2gQ7knXZVxeEBHLhtHWlcgS0LQIdEei/K5S1VEqIqE08f7MditIa0rkHjM0gPIJBScerYPCU2GqkiYnquGfnf7/Vi2C0cQ8OrkIga6NXzuxUGU6m2Uam2/XWIEKuFy2TjG8mmk4lzOICKKgrGNzZNhT4jBXyfXADylaVoLwLlgwyGivcA7SNqW67ptSZJCnRBbLZuwU+Fq50hEdDfT81XMLIb2lPpATMvdaKX40Z9n4mgPulMxPH+kG8NZHbleHbomQeEdxz3VmzYuzZRQrLSDDuWedE3amhuW0vmiHgRRPnepioSULuPnj/dvLMTwmKUHk0koOHWsD6oiQRIFFIpGRyTEAOC7P7mD8XwaP3+8D0vrLcws1lGstiPx8+WycUwc7UFaV4IOhYiIdmA8H5m5wzIAWRCEpzzPE8GEGFFH4lMhbUtRFAdA3XXd0K7MFasmRJG7fIkoGq4t1HBppvM7LkzP1yBLAqbmqlAVCaoiYqBbgxoTMX4ojWRcxlPDafRlVGQzMWiKdODP5bdXDMytNHB7xYBlh3ujR19GxZmTw1F5oKVHYJgOjJaNi9dLuDxbCTqcB6LIIjIJBaeP9+Pnj/fj2ce7ttrgET2M8UMp5HrjyCQUrJRNfPPVm0GH9MjmVgy4noc/u7CA5fUWlkotVOqhffQD8NP39tihNE4d6+P7mogoIvIDOhzHw/ihNBqmjbkVI+iQ7snzvGMABgD8XtCxENHuY0KMtiWKouc4jg3ADTqWuzEtd2uHIxFR2NWaNkohX2jaDZs7y9drP/1Zl0otv3WZLKI7GUNfRkNCleAkFXhcy4Jh2miYDoyWE3Qo9xVTxK12idTZHMeDabko1duRmW23SRT8domD3RrGDqW3ZogRPayUriClKxgZSCCpdcYjtGHaqDYsFIrNrXmhlhPuTRmb7+20rnAWIBFRhOiqf+2MULV+BkC4L4pE9NAicyaifVd3HOcdURQ/GXQgdzM5vYYjuRRefnEw6FCIiO6qUGyiUGxiudRCzQj/XI69sLmYfrZYAAD8u+/d2vq78Y02ZhNjvUjrylY7voNUgfSt79+KRMLhzMlhjA4lD9Rrc5BNzVcxOb0WiWPzg3LZOMbzaXzti08jrStRWnihCDj1bB8Av/XT1HwVX3/lfbQ32ghH0VKphW/9YDboMHYsl9Xx658fxXg+HXQoRET0EL76hSOYnq9i6pVq0KHczwkAGBsbOy1JUvnKlSvvBB0QEe0ePiHStkqlkptMJluCINieF85NETXDhmEezMVlIooO1/PguB5CeioNXGPjPF4oNlHS/KqytZqJpVILmiJCEgV0pWKQRAGaIiGmiB1X6eFfz8JfHTbYraEnFQs6DNonRsv2K0ZC3sbzw47kUjjUp0NVREjSwW7HSntH12T0pGIYz6exuNbCnfUmXF7r95SqiNBVCdmMulVpQERE0ZLWFaTiCtK6AtNyQr+hxPO8rOOEvHyaiB4Y7yRpW0899VR7dnZ2SVXV0E5Rn5qvQtekoMMgIrony3HRMC04Lu+jt7PZP35q/qe7BFVFREwRcbg/AV2V8OnnB6CrMg73Jzqyemxqrhr6h0EAePnFIV53D5C5FQPn31tFpRGtVq+/ceYp6JrMdmq0p/L9OrIZFQNdGs5eWMCfXViAYTrgmtneyWZU5Ad0nDrWF3QoRET0kMY2KnzHDqVQWPM7qYSZ67ovCYJwA8CPgo6FiHYPE2K0rXPnzrkjIyMtAHUAZQBJhOx4aVsuWm0HtaaNmNx5FQNE1Bkcx0PbcuFy2/iO2a4HWC5Wyi0osojXLxehSAIyiRi6UzF0JxVkEgoUWcToUHLr76LWHq1YMWFaLmpNG7YT3oTY5u86m1GhyKy46XSG6WBuuYFC0dg4NqNx7nr28S50JZWN45T3hLT3FElANqPi+SM9AIC/fGcFK+VWJDY4RNF4Po3D/YmgwyAiokekazLG82mYlhv6hJgoiic8zxNHRka0kZER+9y5c2xTRdQBorNqRPvNnZ2dbR09enQzIaYhZMeLaTloth1UDQtpncPSiSicHMeD2XbZRukBOI4Hx/GwUvZnF33wQele1WPIRmpQM4qVNqqGhaphBR3KPWUSsY02VWyXeBAYLRtTc1UUis3QH5sf9Nxo11bVDtF+2Nwo8MKRbhzu1zE1X0W50WZCbI9szhglIqJo01UJY4fSoU+GbTguCEITgDY7O9sCwIQYUQeIzqoRBcLzvCUAlwRBSMJPioVK3bBx8XoJR4dTODqcCjocIiLaY5btwXYd3FpqQBIFLJVa/nyx2OZ8MQn5Ph0JTUK+PwF9489MQkFX4qeVZWHw7q0S5leNoMO4r48f7cFwHxchD4pKw8L5y6u4vRL+YxMA8v0JHO7X8ZnnB/D4IKtHaP9lEgp0TcavfW4U67U2fvshd8sAAAAgAElEQVRPrsBx/c0wtHtOHetDMs7lCyKiqMskFJx6tg+zyw38eKqIVtuFG97xAkkAuVgs9jlJki4DuBx0QET06HhHSffTgl8hFspdEJbjoVRr4/9n726D47jvA89/+2l6pucJDwMQJEDwSSRBiTJpWUsnkbXxxVa8ayfnou+uNrlcxXe1dVe5ulztvrqrpPZq3+3Wvsube6XaqyR3qXivdqNNZaOL4jhhitbGZiSZskgDEkUIHBLC0wCDeerpnn66Fw1AT3wWiO7B/D5VqJIJSvxZmkZ3/39PTi9IOhQhhBB7IIwiCKATxLelu3WwtDoeRUsn4qPFzbqqkMtopOldq9HxqDXcpMN4oJFihonh1NXEiCfE80NqDRfbTeWj32fks9rOLif5nIokGLqKocOxiQIHhnw0VUbLPgmVsikTQYQQYh/Y7rAu5HQ0VUFJ921Tj6IopyjKBLCQdDBCiN0hCTFxX5qmLYdheDWKoheUFN6lWrbHlbl1xsom544PJR2OEEJ8RmXIZEYpYZla0qEMjNnbTQCuvLvxme9tH6jNHC5RsgxmpouMlbNUSiZHDlhYpkbRMvYmzmqTt29u7smf9ThMI+66++q5cb50cjjpcMQeWKx1mV/u3PXaSRvTiA9TvvbFA1x8YUpGJYrETY9bAPzurz3N/HKHl1+9mXBE+8OLZ8eolE0ZlyiEEPvMuRPDfPelY7zy+p1Uj09UFKUCfDuKok3gR0nHI4T4/CQhJh6kF0VRW1GUVLZg+WFEy/ZxvVSGJ4QQaKqCaajomoKmKQRBilqUBpDnxyOs6u14z4u1qu10atVbLmYm7jZRFQVDV3aSQllDQ1MVrKyGAqifowPA9UJ6XojTC1K9ayabUSnnMxha+gpixJPRsj1spz86w0xDY7KSY7iQwTRUpClHpEWlbNJxfKbHLRodj0anf3bxpZEkw4QQYn8qZHUmhrNkM1ra35N1YCiKotIzzzxTuH79eheQQ0gh+pgkxMR9RVG0oarq+1EUpbJcw3Z9Zm83ebExlnQoQghxV5YZj4IoWDqWqdGy++Oweb/aPpjcHlX4w7tMgZ85XNrpPpms5Jis5Dgynscydc5MF9E0Bct8/EeoWsNlsdZlacOh1kzvyMRDozlmDpco5PamY04kb7ba7JvdYZWyycUXpjgzXZLuMJEqLz47xsmpIkEU8cNrNS6/s5Z0SH3txWfHZBKIEELsQycOFZgay/EXby6xuumk+T25AJwHnu71ek8988wz71+/fr2ddFBCiMcnCTFxX2EYtoFlRVF6ScdyN1EIPS+k3u6xWOvKbHkhROromgJoDBcyjJXNND/oiy21poumKrS6PrWmywfLHd6xGhi6yg+vmVsJMQ3L1LGyGuW8gaGrTI5a6FvJMiur3XNMZq3hMne7SSflnTiVksmZ6RJWVsZ9Doq5202WN5ykw3igM9Mljk0U4mRYSZJhIn0KWZ3zJ4ax3bgTeK7avOvOS3FvJcugaOkMFwxKezTKWAghxN7Zfk8+eiBPzwu5Mpf6kd0VRVFmHMf5EJCEmBB9TBJi4r56vV4b8E3TTGVCLIwiXC+g3uqxWLMpWbokxIQQqaKpCpqqMFLIUCmZzC91kg5JPMB299i9bCfExsomlZLJ9IE8lqlx4fQoprH165j3Tog1XWarDWw33ZM2KmWTmcNF8rL/bmDMVpt9kbSfOVzi+MECM4dLSYcixF0Vcjrnjg/heiFBELFYsyUh9oiKls7kaDwWtWjJsYUQQuw32+/Jxw4UUBWlLxJiwIxhGLJHTIg+J0+W4r4WFhZ6X/3qV/2lpaVqFEXvK4ryVNIx3c3SRpc3b9SZGrMoSgWhECKFvnJ2jJnDJa68m/oHffEAYRhhuwEfrjvUGj0+WO6gqQp/97N1VAUMXd35OjBkYhoa+ayGaWgcGM7ys1sN5qqt1O5qMnSVct5g+oC11SEmj4v7ndMLCKOIudst/CC9e+22XXxhipIckIs+cOZwkcnRHI1Oj4XlDpev1ZIOqW+cOVzia188ICNRhRBinzs1VaBSzvCH319IOpQHOaMoymgYhn8OLCQdjBDi8cmbpHiQ8NKlS+GpU6dsUtwS3O0F1Ns9/PQu4RRCDLgxGem6b0QRBEFEEAQ4vY+6vJbrnx01Nz0ed4+VLB0rq+N4AaubLk3bIwjTec9SFTANlbypS5HJgAijCD+I+qaDZbKSk5+noi8ULYOiZTA+lKXdTWcRRFoVLUOudSGEGADFnEGUzteiTysBGUAqNYToc5IQEw9FVdW3oyjqEC+STJ25aov5pQ7feP4g0+NW0uEIIcRnzEzHo70unB6hZfvM3m4mHJHYC9XV/huReWA4x2987QjnTgwlHYrYI7PVJvV2Kqdjf8KLZ8eolE0mK7mkQxHikfzG147gBxFz1Sa2G3Br1U46pNQyDZVKOd5heWFmNOlwhBBCPGEff08G0jxRJQtkFUV5fmZmRp+bm7uUdEBCiMcj5VbioYRh2ABSO+MjjCKCMKLj+LT6pLpZCDGYjh8s7FQ8a6qSdDhCfIahKQwXMmQzsjtsULS6fl8kxCQZJvqVqijomsLJySJTYxaapqAq8gxwN6ahMVnJyd4wIYQYMMPFDMPFTNJhPFAUReUoiipJxyGEeHzylCkeimEY7wRBcDtKaR+z54d4fsjCcpusoUo1oRAitf7Hb55grtpkttqk1fX7ZkSZGBwFS+dLJ4cpybjEgXHjTov5pdROxt7x4rNjnDsunYui/2wXGPyz75zm2kKDn36wSc8Lcb10vlslqVI2ufjCFGe2OgaEEEIMhudODgPw2hvLCUdyf4qiPBuG4TDw75OORQjxeKRDTDyUbre7EYbhMuAAqS0hnq0209xeLYQQlCyDqTGLb335EDOHi5iGKlXiIjUmKzkmhrOULIOM7G0ZGI2OR63pJh3GPQ0XMhw/WGCkmJFErehrJcvg8JjFty4c4uRkMelwUqdkGYwU4+t9uJD+LgEhhBC758x0iTPTJUxDxdDT+x4SRdEJVVVTuU5GCPFwpENMPJRcLrfR6XSapmk6xJ+bVL6hzFVbLNa68O2TSYcihBB3VbR0DmsW37xwENcLmL3dxA8DCJKOTAiYHI0TYjKqarA0Oj1qjRQnxIoZjk3kGS1l5LMp+lrR0jk8ltt6Bgi5ttBIOqRUKVo6o6UMxyfymIaM7RVCiEEyczjuDM4YKkEY4fkJB3QPiqI8BaQ0OiHEw5CnTPFQ1tbWgvPnz3vtdvs7gAukcl6u7fpstDx+42tHCMMIXUtvVYkQYnBpqkI+Z3BoJMeXTo6wUnfx/BDblayYSNav/RfTnJgscmpKOhcGgeeHuF7A//u3t5m708Lz0zm+7dyJIX7x2XHOTJfJZyUhJvqbrqkM5Q28IEJTFeqtHt2e3P8Bvnx6lBOHinzl7BiapqBIB70QQgwMXVPJ6Crv3m5RtIy42D2dNCAzMTHxZ+Pj44W1tTUZUyVEn5FsgXhYwaVLl3ygDaT2rmS7AU3bIwgigpTuOxNCCFVVsEyNyYrF2aNlhgsGpoynEylQKZuU8zKSblCEEfhBhNMLsJ30Hshbpk6lbGLocjgu+p+mKhQtg5FShgPDWTIpHgu114qWQT6ro6mKjJMWQogBo6kKmqpQKZsMpft9RAP0IAiGgELSwQghHp10iIlHUqlUhhVF6QAXko7lfkxDY3XTlWXMQohUMw2VkmXwzS8f4ru/fAyA4wcL1Fs9FEXB9cKEIxSD5nd//WkmhrNY0oUzEFbqDh8sdfibt1dTOTLRNFQmRrL8o+cPcvErU+Qy8uoi9o8j43lefHaMpY0upqGyuJ7amsM983/+r1/i7NGy3IOEEGKAmUbcKXb5Wi3pUO4rDMNGGIaF9fX1K0nHIoR4NPKkKR5JFEXLwEjScTzIct0hm9EIwghFQSoMhRB9YbKSo5DTadoetYZLrdmjZXv4QUS93Us6PLGPWaaGrqmpX2ItdlcQRrheSBims6teUxVKlkFGOmjFPnZwJIfrhbz5fp0oIrXX45Mk9yAhhBDbSpaBldXRNIUohDCl058URZkAZFyiEH1IEmLikfR6vb8wDKOtqul+UXntjWXOnxjin/ziYUxDI2NIQkwIkX4XX5ja+eu5apPZapM3b9Spt3v84CcrCUYm9rsj43mKVjyWTgwO2/GpNRy8IJ0HDVZWZ+ZwiTH5XIp97Fd+7hCuF/LnVz4kCKNUjy99UuQeJIQQYtvMdImOG2CZGj0vxPXS+ZyqKMo3oijKJx2HEOLRSUJMPCoHaAILwNDWV+r0vJB6q8fb85tMj+eZHreSDkkIIR5JpWxyZrpEuWDg9EKmKhauF1BruKw1XGpNl1rDlbGKYlccHM0xPiQHkYPG9UJaXR8/SOfPEdNQmazkKFqp3iMhxOdiZXVMI+LCzCj1Vo+3btSTDmnPnThU4OBoLukwhBBCpEQhp3P+xDC3VjpUV+2kw7mXrKqqpZmZmaPZbHbz6tWrm0kHJIR4OJIQE49kYWHBOXny5HZC7CgpTYi5XkC93ePqzU0yhiYJMSFE36mUTSplk5mtXYjnjg/Rsj1mq03mbsfdYy3bl4SY2BUHR3NyrxxArh/StD2ClI5oMw2NyUqOkiWvLGL/ssx4N96F0yNUV+2BTYidnCwmHYYQQoiUKGR1zh0fwvXCVCfEoigqKYpy1HGcBUASYkL0CXm7FI9MVdUG8LqiKGoURUeTjudeNlo9XntjmZJlcPZoiayhoaoyOlEI0Z8qZZPhYoZK2eRLp0awHZ8PNxycXsBstUm95fL3726w2fFodLykwxV95tRkgWeOlpMOQ+yxRrvHrVUbp5fOxLplapw5XKJSku5Fsf994/mDvHenxVvv1Vnb6gLf76yshmXqPHO0zLPH5B4khBAiVs4bvHh2jOW6w5W59aTDuZ9yEARfAULixgEhRB+QhJh4ZEEQeJqm1aIo6iYdy/30/JDluhNXPgcRkUzbEUL0MdOIdzduV5JDnCRzvRC3F7BialxfaGC7g7d7RHx+RctguJBJOgyxx7wgwnZ8wpR2iGmaQtEyMA3twb9ZiD43MZxls9WjaOk0u4NR2KKrKqahUs7LPUgIIcRHDF2lUjbJm6k/tjaAShiGMmpDiD6S+p8sIn2mpqaWFxYWft80zQngG0nHcy9BENGyPa68uwHAxRemmKzIbHohxP6xvXz+4lemAPitX32Klu3TtD3evLFBvd3jP/7wDrYbcCu9oyZEgkqWQdHSmazk5B45gFwvoJXSkYnbSVr5XIpBcuxggX/9T8/xvUtVvnfpFrYbEATpuz53y8x0iQunR6QLVIhd5nohtYa7816wvXe42e0RhBG283AFdJVSFtNQKVo6pqExVjYpWTpFS8fK6mgygUc8Idt7ZGemi1w4PcLc7RZNO5XFIhOqqn5XUZRl4C+SDkYI8XAkISYe2aVLl6JnnnnG9zzPVhRlEyiQ4s9Su+uzXI/HigVhJA9tQoh9TdMUTEOlUjIxDZWzR8vYvYChYgbHDej2AtpdHz+I0vpSIfZQNqMyXMiga3JvHERhGBGEEVGUvgN3y9SkM0wMHFWJDwGHCwaTlRzVFRs72L+d35apUSmbGLqadChC9JXtZHnH9fH8EM8Pd37N3frfjY6H7fjYbsBm28MLQmzXJwgj3Iccldzu+hi6imVqGLrKSj2zNepUw8pqaKpK3tTQNAXL1DENFdPQMDMqmqrI2Yv43LIZjeFiqt9VFEBXFMU6f/780NDQUPvSpUt+0kEJIe4vtUkMkWrB9evX2zMzM9Uoiq4C54GhpIO6l5sftrm9ZvOPnp9gfMikaMnsRCHE/mWZ2s4BE8Q7SbarROeX28wvtXnrRp16q7fTQSsG18HRHOeOD1HMyb1xEPlBFB+OpTAhdmTcYmJYukbEYNkeEfWlUyNomsIf/eAW1X3c4X1kPM+LZ8co5+UeJMSjqK7YNG2P2dsNao145+BcNe6gWVzfm80WcUJM4czhEiXLYGa6xGTFYnI0x5EDFpapydmL+NwOjeZ47uQws9UmG61e0uHcjQYUoiiadhzn/Obm5lVgM+mghBD3Jwkx8djCMLyjKMqPgeOkOCHmhyF48N6dFgBfOTuWcERCCLG3dE2hZBkcGc9TsgzGh7I4vYAz02VcL6DWcFlruNSa7s5IFTEYhgsZjh8skM1Idf4g8oMI1wuJUnjJm4aGLl0jYkAdGM5y/sQwf/v2Kl03YK3hJh3SrrJMnSMHLCYrOUqWkebKfyES0/NCeludXrWt5/QP17s4vYDFmhM/wzfdnS6wtaZLbw+f4T0/IlAiFte71Jouza5PqdqkaBmU8wYZXeXYwfzO9V7MGZQsYyeRJsTDqJRMzkyXsLLpPr5WFGUIOOp53lzSsQghHizdP1FE2t2JouhHiqJ8K+lA7icIIoIg4MZiG9sNJCEmhBg4mqpQ3Jr3Pz1uce54XMOweLpLy/aYrTaZu91kttqkZfuSEBsgw4UMxyfy5DIymm4QbY9NClPYIZYxVAxNEmJiME0MZ5kYzjI5mqPe6u2/hFhWY+ZwiclKjqIlRxJC3I3rBdhuwGKtu/Wc3uDNG3Xq7R4tO/mJbJ4fvy8s1uKOtPmlzmd+z4XTI1TKJi8+O8ZkxQLi+7skxMTDqpRNipZO3kz9u8pQGIZHgWzSgQghHkyePsVj6/V6y9ls1omiaA1oE+8SS62/f3eDawsav/bVaQxdldEcQoiBVymbDBczO+OZbMdno9Wj54dxcqzrceNOe6eDrGF7Oy+/Yn+olPuj6lI8GT3/o30iaVMpm5QL8qwmBtvXn5vg3Ilh/sXvv5N0KLuqmNN57uQwB0dySYciRGrEow97vHunSbvrc+mnK3h+RKPj0dnqAmt3Pbwgfffse5m73cJYajN3u4VpqGQMlacOFijkdL7y7BjFnM6pqSKGpsouQXFXhq6gazrHJvLYTsDs7WbSId3LAUVRzimKkupzUSFETE4/xOfhOI6zaZqmCyRfovQAG+0emq1I54MQQmwxjfjF0/pYxZ3t+gRBhB+E1Nse9ZaH64U0bQ8p5tx/TEOV/Q4DLIoi/DAijUdrpqGSkQ4xMeAODGfJpb8q/pHpmspwIUNWupOF2LH9vP3hepd6u8fVm5sEYYTtBEmH9tiatgfAevOj3U+9XkjR0pmZLm1N84mQXJi4F1VRQIF8Vk97R3EWGPJ9P9VBCiFicqGKx7awsOAAzsmTJ/+doig/VhTlXyYd0/3YTpyz+51/+zZnpkv8zq8/nXBEQgiRPpYZPxp8/bkJAP6bf3h453tz1SZN2+OvfrJCy/aYqzapNfffKKdBULIMZg4XmaxIdf4gc70wFWOX7mZ7z4gQg2xmugTAxRemqDVcLl9bSziiz2+ykuPkVIGvP3cg6VCESNwrP7yzc20vrnd3xg/uZ9sdPlfe3cA0VCplk8lKjsnRHBdfOBz/tTyfik957uQwhyo5rry7kXQo93J062vq6NGjCwsLC5vJhiOEuB9JiIndsEYffZZatk/T9mjZHhlD2+mQEEIIcX/bh9NHxvPYro+uKqy3eqy3ethOQBBGNG2PIIiwXR8/iFI5ik2ArikMF6U6f9CpioKmKYRhRArXiAkhtkxWcigKaJpCFJLKvX8Pq1I2KeczSYchRCJsN8B2fGoNF9cLmV/u0NjaCTaIk2zC6KPinJruMne7Sa3p4noBpqFRKZvomiI7xwTlfAa/D94rVVUta5pWASQhJkSK9U0SQ6RXJpP5206no5um+XLSsTyM2dtNUGC22mSyYkn1kRBCPKTp8TzwUcU6fFRksN09duXdDVq2t7WDzN8ZlSLSpZAzeO7kCIdG5R44yAxdwTI1bDcg6KOdJEIMmosvTHFtocH331qm54W4Xv9ery+eHZP3LzGwqisdZqtNXnn9Dou1Lovr+78j7H48P9zanRZPm7h8rQbAxRcmmaxYXHxhipJlpH1UntgDXzhexu+DZ9Uoip5VVdUA3k86FiHEvcldReyGHvEOsQXiubkTiUbzEOqtHj/4yQo//3SFsbKJrivxbGIhhBCPJGOolCyDYwfz9LyQUt7A9UIuzIxSb/Wot+ORij0/ZH6pjeeHNDoefhjJAXyCTENlqmJRzMn+sEGmqQqmoeH0QoKUbRJrdX1st3/3pgixm0qWwfiQyfkTw9xa6VBdtZMO6bGdmS4xVJAOMTE4FmvxTrC3btRZrNlxIqzWpdVN58jiNJi73Yr/Hdk+xw7mOX6wwFMHCxRyOhmZ8DOQDE1FU+OOadcLd5KoKXRAURQn6SCEEPcnCTHxuV2/fr0HcPr06QVgiH5IiLV7/NVPVqiUTb50chhN00HyYUII8chMQ8U0VIpWAfhk99h2xefs7bh7zO0F2G5AtxeAF0pCLEGmoTI5mqNkSUJskOmaiqmrpHESUdP2JCEmxJaipTM+lOXc8SFcL+zrhNjM4ZKMrBcDZbHWZX6pzR/85QcyPeEhzVY/2jN2YWaUC6dHGC4YGLoiCbEBZejxf/fJ0Vw8YjO9CbHUn4cKISQhJnaRoih/EEXRDHA+6VgexPMjag2XH82uEwQR/+UvTMrYKCGE2GXlvIGV1amUTfww4sunRwnCCMcLWd10WNt0uLVqYzsBc9Umjhewsung+RGeP3h7FPaKldUp5zNMH7AwtBRmQoQAbMfHkYSYEDtGihm+8fwETdvj2sImTi8k7IN9KtvOHI4LZiplM5VJeCF2y/aesO+/tcJK3eFvf7pK1w2oNd2+GPmWNnPVJos1m6s36+SzOv/1PzxMOW/whWNDSYcmEnBmusRy3YlXoaSQoijPRlH0VNJxCCHuTxJiYjctEHeIpV4YRbhexEarx63VDk5PDlyEEGK3GbqKoYNlagBMDGd3vhePi7EBhabtsViz0dx4aXagyGHBk6Spys7uKCHSyg8igj467BfiScsYKgeGs5QsA01V6Ldp79s7gKQ7TOx3QRDheiG3V21urXZ2up3E42naXjxpwgsxDZWvnhtPOiSRoKJl0LRTPW60rChKPukghBD3JwkxsWvm5uYunTx5clNV1UvA0a2vVJutNpmtNrGyBtPjFt996WjSIQkhxECYrOSYrOS4MDMa/8K3T+58bztZdmvVxnZ9fvDWCrYbcGu1Q88LcT3pHvs8zhwucmTcSjoMkQKmoVLK69Q7PUjZBKe5203MjBycC7FNUxVKlrFz33zl9Tss1roJR/XwLn5lKukQhHiilusOr72xxJV3N7gyt47tBjIefBdtj8j7nX/7UyplkxfPVrbGKY5SKZuSbB8QF06PMGc1eeX1pCO5pwLAyZMnz4dh2L558+b7SQckhPgsSYiJXaUoihNF0YKiKH3RKbat1nDRVAXXC1GVj+YTCyGE2HumoVKyDMaGTNyezpnpEk4voFI2sV0f2wlwegFhFFeNhmGE0wvwAhm1+DCGixkKOdkdJuIDdtPQUFPYauJ6IT0vJAgjFIVUxihEEgpZnYnhLNmMhqYpqT9wV7e62SplM+lQhNh1YRgRAbdWbFY2HaqrNvVWjyCMiNJ9afY1zw+pNVyqKzYly+AZtUwpb8j0gwFQsuKR/JqmEIXx9Kc00jStr85EhRg0khATu8qyrGXHcf4gDENFUZTU7xLbdvnaGpqq8N2XjmIaqrywCSFEgiplk0rZZGY63jfyjecP7nyv1nCpNdyt3WM+V97dwHZ9qisdas0ea+ldsJwaz50c+cT4SjG4rKzOaMnk1oqddCifUWu41Fs9bMfHNDQyhiTEhAA4cajA1FiOv3hzidVNh1a6R0fFiTtV4cWzY0mHIsSuc7y4C+zlV29Sa7hcvraWdEgDodHxuHytxtvzDYqWzj+/eIqTk8Wddwexf81Ml+i4AZapbU0OSWdCLIqi86qq3gGuJh2LEOKzJCEmdtXm5qaTzWYXVFVdiKJoAZgAUn/q5vkhgaLwyut3ODia41e/fAhNi3fZCCGESA8rq1Mh7uT1/JBS3sDzQxqdeL9Ay/bZ7PTw/IjF9e7O92zHx3YDOo4/8HuJxsom5bx0iIl4J1HJMtC0dD7veH5EreEyVMyQMTJJhyNEKuiaAmicmiyioHD5nXQfwB8cyUpXsth3truY//rqCqubDnO3m3Qc2Uu+11wvABv+8q0V3rxR55tfPkQpp0tibJ+zTI0z06WtMfupHR18VFGUdFesCDHAJCEmdtXCwoIDLMzMzCwAC8AQfZIQg3gW/9mjZX75uQOYaJIQE0KIlLFMDcvUdjp5P/7CG1cJBp/qHgu4tdLZ6SxzvWDgE2KVUoaSJYeTIh5PWrR09JQ+73hByFrDJWNoDBeSjkaIdNDUuGjv5GQRy9RTnxA7NJKT6Rti3+l5IU3b4/tvLjNbbbK4ntpD+X3N3dot/P03l4F4ysRkJScJsX0un9WZOVzC9cJUJ8SiKGonHYQQ4u4kISaeCE3TrgZBQBRFE8RJsb5Qa7i8d6fFH/3gFs+fHuH5UyNJhySEEOIh6bqCpukcm8gThhGTFYsgjHC9AM+PdvYNuH7IrZUOrhewUndpdDw2Oz1W6w5OL6TW3N9jF89Ml1LbEST21nZyOa27UzuOz9ztFqahMVnJJR2OEKnS6HjU+mBM8LPHyjx1SDLaYn+w3YDqis0Pr6/x+vU13rvTpt31kg5LbHnl9TtMjOSwnYBnj5f5wrG+OYoSj2CnQyzdiehziqKkOkAhBpkkxMQTEQTBJnGHmJNwKI/E9UJaXZ9bqx1OThWTDkcIIcQjUBUFlLhqEKB4ly6ouEssJKMr2G6ArqmYhoqiQMv2iaL9P9nibv9exGD6+Oc/jYIwoml7uFud/EKIj3h+3BWddkMFQzrExL4RBPF96c6azbWFBrYb7xAT6bBY6xIEEbdWO0wfsJIORzwhmqZQtHRMI50FXVuGwjCUahAhUkoSYuKJmJubWwAWTp8+fQnYBL6aZDyPohVOhSAAACAASURBVNZweeX1RRbXHWarTS6+MCVVyUIIsU9sH8rd7+d6y/Y+GrXYdFnbGbcYMldtxt9b7WyNaOyfg/rp8TyWqSUdhkiRoqUzWclhGun8XLRsnytz6/H1elq69oX4uDdv1HnzxkbSYdxTyTIoWjrnTgxz7rh0aYj+98rrd5hf6vDyqzeTDkXcx3Ld4Q+/v8APr9X43kSV/+mbJzh+MC8FYftIyTK4cHqUt282kg7lfoYURZk4efLkec/zlhcWFpaTDkgI8RFJiIknKoqiqqIoWfooIbatZXss1rosbXTRNIWJ4dSvQhNCCLELNE0ho6uULIMwive15DIanh+hAE4voFI2sV0f2/loJ1m91aPnh2y0esn+H7iHrKFiZeXRT3zE3Pqcp3WEph+EtOz4OnO9EENX4k5QIQaY7QbYjo/TS/dOzJ2RrFqqK/iFeKDtoqj5pQ5LGzIBrV903YB6u8fNpTauF/ClUyMogJrSvani0eiaQi4TP8d2HD+t90Nd07QhTdM2kw5ECPFJcioinijDMP44CIJsFEW/lXQsj2q22mS22sTK6kyPW3z3paNJhySEEGIPWKaOZcJwMXPf31fb6hyzXR8/iPirn6ywUnd47Y10FgAeGM7K2CrxCZVylqJlkE9p56DtBszeblJds6k1XSolE9OQgywx2KorHWarTVY3XWwnvSMTpw/kuXB6hHJeujJEf7t8bY3FWlc6w/rM0kZc3Fxr9LBMjf/7f/8ymqZgmXIM2u80Nf7veHA0x8zhInO3WzTt9O3yi6KoAJxXVdUhXikjhEgJuROIJ62dzWadbrf7t0AZOJ90QI/qp/ObVFc7fHlmBMuMk2NCCCGEldWpAJ4fd5KZhoahp7cSvix7XMSn6JoCaOSzOiXLSOVhAsBaw2Wu2uS5k8OYxv0T1ULsd/V2j/nlDl03vckwgErJ5Mx0CSubzoS7EA+yWOuyuN7lytwGi+vSGdavGp0etqvyyuuLjA+Z/NL5A2iagiadYn2vZBlMVizmlztJh3JXiqJkoiiaCIJAdokJkTKSEBNP1PXr19sAp06dugQcVRSl7xJi73wQdzd/88JBKmVTEmJCCCGAeBzUx3dymYaa6tFQ5XxGEmLiEzQ1PhAq5HSKOT21CbFaw2W22mTmcIlhOVIQA67e9phfauP00p0QGyubzBwuSTeG6FtxMmydK++us1iThFi/anTiZ5s/+eEdzkyXeOGZCiaaJMT2gaJlbO3CTe37VwY4AMjTqxApI0+nYk8EQfDvNU17DviviG8KfVfe+/Kr8zvJsCPjeUmMicTEI9oCbq3Y8Q4j16fR8fD8EMvUMXSFct6gnM8wlM8wfcD6xKG9EOLJuLVqs95wkw7jng4MmRyRe5e4iyPjeXpemNoK+Pc/bFNv9fi5M6MMFw05YBcDKQgjXC/g1kqHt27UaXXTmcC2TG3nXalSNjF0OXQW/aXR8fjpB5tcenuVS2+vUkvxs514eNXV+N359/7kPX7xC2P8wy+MJx2S+JwqpQxnDpd4Lb3PhWXgK4qi/CTpQIQQn5TanxpifwmC4I6u61OAT59+7uaX2kCcjBiTCnuRINcLsZ2AWsOl1fVo2t7WsueAomVgGirdnkkQgqooBEEqF8wKse/Yjo/jpbdiP5tRJTku7srK6hSt9O756XR9PD/E6QVyTxMDzQ8ibDeg3u4lHco96ZpK0dKxslqaq/aFuCfPD6k1XFbqjnSG7SO267PZVrix2OLssXLS4YhdYBoaRUvfGgGeSoaiKJUoiqQiUYiU6cvEhOg/CwsLm6dOnXoD+B8URfk14J8kHdPjuLXa4V/98SwvPjvGi2crvHh2TMZPiSdurtpkttrk8rU1ag2XK+9uPNLfXymbmIbKb750jLGyyYtnK5iGRkYOKYTYVR+u29gp3ukyM13mwumRpMMQKTQ9niNjKPB60pHcnesFuF7An/94ias3N/ntb59MOiQh9ly91ePyO2t8sFWkl1aVssnFr0xxZrqUdChCPLK5apNrCw3+xe+/k3Qo4glo2h5X3t3A9UNmq03+u68dlck/faxSNilaOqPlDEVLp2X7SYf0aTowFEXRxNGjR48CywsLC07CMQkhkISY2EO+73u6rteADWCTeI5uX30GoygeV7LRdJlf6nBysgggSTGx61wvroRfWu/y3mKL+eUOG83eYz3keX4IxGMiWrbHcMFgfCjL+JCJldVlfroQu8T1wp3rLU0MPd5tlt7iSZG0Ys7A9dL32f20jVYPTVNwvRBViT/bQgwKP4iot3t0U747TFMVSpZBRq5P0Uc8PySM4MZiizs1O+lwxBPW7vqs1B2W6w4ZQ2ViOJt0SOIxqAromkIuo2GZqUyIAaCqatYwjKFMJlNLOhYhRKyvkhGiv83PzzeAH87MzDwVRdEZ4DwwlHBYjyQMI2zH50ez6/xodh2A4wfzXHxhKuHIxH5Ta7jML7V5+dWbLK53P9e4ju1Fwn/0gwVMQ+WVssnXv3iAr33xAGemS6kekyVEP1lruARh+sa5lfMGlZKJmZFxieLuTk0VOeLlkw7jgf7+vQ00VeF//pWnMA1VCpLEQGl1Pd68UWdpI93F5VZWY+ZwiZI8X4o+0uh4uF7I7/3Je31RICI+n5sftrn5YZtKOcv0uMV3XzqadEjiMRi6iqGrHBrJ0Wh7rNTTeX+MomgCON/pdJaBdLd5CzEgJCEm9pyiKHNRFP2poijjURRlgb4tx3nrxgYfLLeZrFiUcjozMhpEfE6Njofnh7zy+h1qDZfF9e6uVjr5YUTL9rk6v0nT9rHdgImRLDOH5bMrxOOy3XivUc+Lq4vTxjRUSpYh3aDinqysjmlElCwDPwhTO/rT80MCReHytTXGh7L80vnxpEMSYs+4Xsjiepem7SUdyj1NVnJMDGfjDjEZzS36yOV31uL3rq6PH0hCbFD8dH6T6mqHr3/xgBTa9LFK2WSyYsEjrpbYQ4UoiiZUVc0kHYgQIiYJMbHnTNOccxxnGfgWcIg+Toi9eaMOwMzhEpOVnCTExOfW6HjYjs8rP7yD64XUmu6u/vODIKJpe7x9c5O3b25SKZscP5iXhJgQn4Pt+LhemNqK4j5YOC0SZplx92Axp+N66U6IQXxweXKyKAkxMVBcL2SxZtNL6b0GYHI0TogVLTlmEP3l8rU13r65meqEs9h973ywCcBizaZkGZIQ61OVspna97AtBUVRJhRFkYSYECkhT6pizw0NDbUXFhYc0zT/DLgO/LOkY/q8Xnn9TlyRApw5XJLEmHhkS+tdPtxw+A+Xb3OnZlNrunvSafKffvwhuYzG9HieYk7n1FTxyf+hQuwzjY5Hu5vOmfUQj0w8ciCPacjIRHF/z50aZr3Ro/az3S3G2G1v3aiz0erx2hvLnDhU4KlDhaRDEuKJevPGBnO3m9huQJTiM78Xnx3j4Ggu6TCEeGg//WCTd+YbvHenteuFiKJ/vPz/zfPUoQLTBywMTZUdpX1metyilEvvmF5FUYaBE4ZhyA1SiJSQhJjYc5cuXfIB//Tp0x8C++JJY3u/02Ktu5MYE+JRdHsh9VaPm0tt5pfae1bhtLQef3brrd6e/HlC7EeeH6W6KtHQVSxTk5GJ4oGGC5lUd59sq7d7FJsGy3WHiZG+HTQgxEOrt3s0bZ8gSOFc3o+plE3K+fQeSgrxaY2Ox63VDu2un+pnOfFkzS+1sUyNIIiQXFj/yZt62u+PGUVRCkEQSHWiECkhF6NIzPr6+s/W19d/VKlUvgpsAhMJh/S5tGyfK+9u8Pb8Jv/5ZzWmKhb5rCYV+eK+Fmtd/vD7C/zRX9/i5VdvslJ3EjmMvHytxsJKh39wagQFBVP2Pgjx0GarTVbqDj/4yUrSodzVuePD/PzTFY4csMhl5J4k7s00VDK6yuVrtaRDeaC24/OT9zexTJ0j43EHpIwFFfvVy6/e5OaHbaqrdtKh3Nfv/vrTTAxnsbJSdyvSrdZwee2NZf7s7z7kldcXaTvp7fQXT17L9lnbdLkyt46mKZyRiT99xcpqjJRMXn51PulQ7iULVID/sL6+Xk06GCHEPunOEX1vDlgAHKDvn0S7bkC93ePGYotrCw1cL9zZeSEEQBhGBGHE/FKHhZUOi7UurYTn1QdhRNcNWKyle1m7EGnk+endHwagawqmoaEqkiwQ91eyDAo5A8vUUj8uKIrie9fqpsPc7SaNjpfq61CIz6Pe7tFK8WjeYk5nuJDBNGTUmEg/1wtpd3157xGf4AchLdun3upRa7hyhtNHVEVB1xSsrEY2k8p7kAroqqpazzzzjMz5FiIFpHRLJE5RlH8ThuF5RVHOA0NbX31raaPL0kaX6qqNaaj84f/2c5iGKgtaxQ7HCwiCiJdfvUmt4XL52lrSIWE7PndqNq+8fpuvPzfBZEXGWwvxsBq2l+q9E5apM1Y25ZBSPNDMdAk/jDgyblFr9lhrpPdzHYYRtuPzN1dXeeO9DX73159m5nBJ7l9iX3rzRp1gL5bLPqaTU0WGCxl53xF9odZwuflhm1dev5PqRLPYW7YbMHu7yeRYjuFihhfPjsnPtD6R3ZqAcWTcwnYDbq2krps6A2TCMJwOgmAVuJp0QEIMOkmIicRls9nNTqezoCjKn0ZR9GVFUX4u6Zh2g+369DyV712qMlzI8KVTwxwYzjIxLLsuBpXtBtiOz+V31qg1XeZuN+k4QdJh7bAdn7nbLc4eHaLnhei6Ih0lQjyERsejluLEgWmolCxddoiJh5LLaBw/WMAP26lOiG1zvQBs+Ju3V5mtNvnuS8fQNAXLTOd4UNsNHrjnomjJK5qI1RourhfS80JSnA/j0GiOgyOSjBb94e35TRaWO7S6fnwPEeJjbq3YXL5W48zhEiXLICOrBPrGZMWi3uqlMSEGgKIoI0EQ9PWqGCH2C3nbEom7evXq5vnz5xccx/mPURQNAfsjIeYEQMD3LlWZrOTQNIXzJ4YkITbAbMffmVd/Y7HF4no36ZA+wXaDnV1IrhegaTrI+bkQD7TZ9lKdODANlaKly34l8VCyGY1jBwusNXtJh/JQXC8eWXrp7VVMQ+XiC1OYhprehJjjP3C0oyTExLZao0fTTv840IMjOY4fzCcdhhAP5erNOit1R8Yliruqrtos1x2+88Ikk5WcJMT6yKHRXKoLAKMoGlFVVRJiQqSAvG2JVBgaGmpvbm5edV33L6IoIoqibwD74kZhuz7VFZs/+sEtrr5f5+kjpZ32e2nBHwwbrR5//+46b96o89aNOndqNl03vdWIt1Y7XL5W48szo4yWMkmHI0TquV6A7aZv5I6qKmQzGrmshpXVpeNTPJSRYoZvPD9B0/a4trCJ0wsJ09yasqXR8VAV+Nff+xlHD+T573/5GFZW37XEWBhGOF6A7QTYbsBK3cHphdSaDp4f0uh42I6P7QZsdryd3SOeH9H42KGr54eE0f3/fZqGhmVqHBm3mB7PM33A4sh4HsvU5NlxwPz0gzq319JZ6f5xp6cKfOF4X0+9FwOgsfWz+S/fWKa3z/dDxfeQPOWCQTlvMD1uYZk6Rw5YqEr8fGjo9975F9/PfBptDy8IubVqYzs+t1Ztag2XWtPtm+eDR+X5IX4YF9rcXGrz3ZeOJR2SeEhHxvOQ7o/kJJC+l0YhBpAkxEQqXLp0yQc2Z2ZmloEFwEk2ot0TBBF24FNd9clvLfk8d3yYomUkHZrYIz0/ZLnu8MFyh2sLjaTDeSDbDVhruHjB/n5RFGK3hGH0wBFoSVAU0FQFXVVTXS0p0iVjqBwYzlKyDDRVoV/yqNsJqNlqE4g7x0xj967LiPiZrueF2E7ARitOgC2ud3G9kFrDoWX7NG1vZ8zddhyPs2OwZBnYTnxmYmU1xkqmXMcDKO0jebcVcgbDBSmiEunm+XFH8XJ93xw13JOuxdMBRorxbr/jEwWKls6Z6RK6pmCZOqah3bP7qWV7n7ifRbB1j4sLP7R2r2+eDx5VGEUQwFrDRZX7bl+xTA0zk84JAQCKouSiKCokHYcQQhJiImXm5uYuAZdOnz5dBs4DX000oF02W20yW21y+VoN01D57W+fpFI2efHsWNKhiV1W3aqi+1d//DNats/s7WbSIT20xVqXK3Pr/MLTozLiU4iHsNZwWaylawQqQN7UmTlcpFKWQ0rx8DRVoWQZnDsxxEV7ir98Y7mvDg8Xa12W6w4/ntvgwswoF06P8I3nJx54P4sP/3xmq00W17ss1uydg8C5avOxE1uPq2l7XHl3gyvvbgBQKZuYhspvvnSMieEs33h+XwxSEA8wW23y9s3NpMO4p8lKjsnRHBPDWSn2E6n3//zgFjcWW0mHseu2r8PnTg0zXMjwnRemtnZpPv5xX9EyKFoGkxULgAszo5/5PXPVJk3b45XXF6k1XC5fW3vsPy+NXntjGYDvvnQM01ClQ7sPXJgZTXVCDDihqupnLyYhxJ6ThJhIqw+iKNIVRfk5QAX21WnedhXz/FKHlu0xOZqjtPXQaeiKjLXqQ1EUV5O1uz7trs/c7SbNjkfL9umkcJTa/Xh+iO0GBPtwBIboX9vXWBhGPOxH09yjmf+eH6V2v4umyT1FPJ5CVmdiOIvRh7szogiCMKLe6lFdtXnvTovNVo/pA3miKCIModsLcHoBHccnCCNqDRfb9bm18tE4qO3Rh64XJt41vf3sWF2Nxy7PVZuMlDKMlkxUpX86+cTD8fwQL4hwe2Fq7y8AlqlTKZv3HLsmRBq4XkjPC9ns9Ki3+2M/5oOULIOMoTJWNpkczTFZyTFVsSjmdDRNQduDm4KVjRMPxw8WGC5kaHa9nU7pxsdGB/e7+aU25bwhCbE+YBoqGV1F0xSikAeOqE5ADhmZKEQqSEJMpJKu6/9Xp9PRTdP8FSDLPtkntq3RiXdJvPzqTSplk9lqc6uKeXSrAlhONfpNGEXYjs87H2xy9eYmr7x+J5UdIw+j0fEIo06qD2DE4Nm+xlzv4Q8HJyu5JxxVrGF7e9o58rA0Na4OloNK8TieOlRkfCjLa28uc3s1/TuMPi4M458Xb93YiL/e26Bo6fzurz9DEEZ0HJ/55TbzS23mqi2atsdcyju5t58d/+gHC5Qsg/98fY1vffkQ37xwECur78nhp9g7DdtjreGysumk8v6y7cgBixefHaOcl+4wkV61rU7+t29u7ozV7Xczh4tMVnJcfGGKyYq1Z8+8Hzc9no9jmS5tjQ52487muXUuX1vri3GvD+PlV29yZrokexL7QKVsMlzMYJkaPS/E9VKXEJMdYkKkhCTERFr1AF9RlD+Iougw8N8Sf1733WfWdnzmbrdo2T5z1RbPnRxmuJjh/PEhFAU5yOwDc9Ummx2Pdz7YpLpqc2vVpmXLc44QwdZurZ4fEkXxaMEgjDsQXS+Iuy62vte0vXjnohvs/P3bnRsQJ8R8P8J/hH1dReujW4amKeiqgqGpqKryie+ZhoppaFimhqaplHLG1qgZDSurkTd19Lt0725XHAcp3bdn6HHlsGWmenSISKmMoVKyDI5PFOh5YV8fIq41XZpdj+9dqhJGEZ4fUm/HnQIf3/fVL1wvYHG9y4/n1nG9kF86P874UPaeu2BE/6m3enyw1KHbCx78mxNUzMUj1faqI1uIx7FY63Ll3XWatpd0KI9t+zn22WNDDBUMvvbFA5S2rr+SlfwRia7F45bPHC5SsnQmKzlats/la2t03YCljf4sFAVYXO9SsgwWa11Kli7jYVNu+7PYsr00Pt9lAP3o0aND+Xzev379ejvpgIQYVMnfOYW4i+vXr/cAZmZmfh94HvgOcafYvvvM2m6ws1sM4kPhyUqOM4eLaJoiCbE+MFttsljr8srrd2h1/b5+2RJiNwVBhOsF2G6AH0TML7W39vA4OyNVbNcnCCIWa92d6tJttebuHVSbhkrGUMmbOpqqfKKSNh5Zq1MpZzENlclRa2dXwFjZRFcVNE2HTzVg9LyQpu3hp3S8qKErVMomVnbf3TrFHogTxSrHD8a7v/s5Ibb9c+V7l24lHMnucL1w52fm/FKHmcNFynlDEmL7SL3tMb/Uxkl5QqxkGUyO5sgYUngh0mtx3ebK3HpfFyzqqkLGUPkHp0eYHre4+MJU0iF9grZVbDYzXWJmusS540O4Xsidmk293evvhFhtOyFmQ8WShFjKxbtwdXpeSAqbsbZXwQx1Oh0HkISYEAmRExKRao7jLJum+aaiKP9HFEX/GPhm0jE9aZevrWEaKjcWW4yVTX7x3DhHxvNMj1tJhya21BoutUaPy9dWtxYI13C9gFrTxX/IzhUh+p3nhzQ6HpudeE9AdbWD7QSsNVxcL2Cl7tDp+rQdnyCEiAjbCXa6M7a7x4IwIiJOLm1/76M/Y/euJ8+P8MMAtxeiKNDqfvSCpKnKTgGCqoBpaCgKZHQVQ1MxdAUrq6GpKkfGLUxD48BwFkUFVVFotNOZBFdVBSurY2gySk08vhfPVjh3fIhXXr+TdCjiUxodD9sJ+E8//pC3btT5rV99KumQxC5ZWu/y1o2NT9yr0sQytZ33k3iHmNxnRPrYbkB1xWau2mLudouOk87r6X62r7Wff3qUX3imwvS4hWWm/xivnDcII/jn3znF6qbLX19d4afzm7zzQSPp0B7LZtvj8rU1fuHpSiLjKcXDs0yNmcMlZmmxltKxnZlM5kQYhnVgOelYhBhU6b+TioG2sLDgnD9/vu44zrUoip5XBmA/wse7IyYrOZ45WmZMFrimirvVFTK/1GGxZjO/JIU9YvCEUXwtdLo+9VaPxVqXpu2xWOtuHUB0UtUxGUYRBBAQJ9ketfMsTogp2I6PldVxvADT0DANFS+lIxMVFDRVQVX3/71TPDmVsinV0Cnl+fHY2aX17ieKCUT/c3oB9XYPP6X3F11TKVo6VlaTcYkitYIgoml7O1/9aPtaO3Igz7njQ/HOyD54rtuecnNyskjRMnj/wxbVPttH+nFeEE+x+Phod5FO8TVjpPrepChKQdM0J+k4hBhkkhATqXf16tVN4NKZM2ecMAyvRlH0vyiKsu9LYBdr3Xje+dzGzjiveGluLnUjEgbBlbmNrbGIt1lcj//b7FdFS2dyNIcp4zoH3vYIw/nlNvNLbaqrNrbjc2VuY2v0YTqr7p4E24lfgK+8u5FwJA8vHv+Yo5iTZIZ4fJWtopzffOkoK3WH196QYta0uXytBsDFF6YoWQYz06WEIxKPa+e+u9RhttpKOpx7qpRNLn5lijPyWRMpttZweOX128zdTu+1dD+//e2T++Ldf2I4y3dfOsa3Lhyi1nD5vT95jxuLLRbX++d9ut7u8Vc/WWWyYnHh9EjfJCYHkWVqnDlc4sN0n9ccA+QFTYgESUJM9A3P85qapt1RFOUW8Wf3aMIh7Rk/DD+xL+Lt+U00VcEyta1kmYGhK6gD0EH3pEVR3EliOz4dN6DR8fD8kLnbTdYaLi3bT+Ny1l1laCpWVpeukgGx/ZnvugFOb3vfV0i97dHzQ+qtHh+ud1na6LJSd3B7Aa4XprYrSnxEUeLF0nIpi90wWckRhhGaphCFW12XIlUWa13ccshM0oGIxxaEES3bw/XS3YUQ72gxyEjxlEgp1wux3YBaw+27UYmVshkXNVVyO0Up+4Ghx++Yxyby6JpCrekSRvRFh3MUffTzebnuMFWxyJmyOzGNdkbGp/j+FEVRNoqizIN/pxDiSZGEmOgb77///s+An83MzBSAo1EU/cukY9orthNgO8HO/o5Xr3wYVwAfLnJhZpQLp0e3Hpzl1PPz2k6Gzd5uMltt8sN31qg1XGb7tLLwcZQLBtPjFtmMPOQPgu3P/PxSh/mlDnO3GzRtj7/6yQpBGO10Ron+s104keYXQtE/Lr4wxdvzm/zp3y3S80JcTxJiafPK63c4M13ixWfHkg5FPCbb8ZmtNj8xQj2NrGy8o6Uk41RFStUaLtVVe6eDtp+8eHZsX3SGfVo5b1DOG/zTf3wc1wuZ/Tc/6puJE2G4fUbQ4rU3luPJPabsEkujbEZj+oBFuZDe+1MURROKosjeDSESJAkx0Xc0TbsaBMEC8FWgDJxPNKAEfLxLqWX7zFVbnDhUoJDTmTlcIpdROTgqD2gPq9Zwcb2Q+eU27a7PzQ/bLNcdVupOPCJuwGaFDxcyHD9YIJuRQ/T9JggjgiDi1moH2w2YX2rjuAFLGw71do96y2Ot4dDzQ3peSCjn3X1NUxVK+XTP0Bf9wzQ0RosZLsyM8sFSm/mlTtIhiU9ZXO9SsgwWa11Kli673/pQtxcwv9yh3u4lHco9Vcomo0Uz7hCT+4tIqcVaN/WJ5U+brOTikXwzI0xWrKTDeWKsrI5pRFz8yhTLGw5/+eYyrhf0xRSWWsNl7nYT2+2vrsNB0g8dzIqiDAGFpOMQYpBJQkz0nevXr18FmJmZuUTcKTZwCbHtpcC1hststQnAcyeHGS5kyOgqw8WMJMQeQa3Ro2l7XN7qBrt8bW2r+j39D+VPwnAhw/GJPDnpENt3giDC9QJuLLZYa7j84K0VWnbcESn2H01T4qXSci2LXWAaKiMlkwunR+h5oSTEUihOhBks1myoWJIQ60NOLy5Wqbe9pEO5p0rJZKSYoWjJUYJIr8WazVrfJcTi/VQXTo8yWdm/7/LW1qjBiy9MMVdt8nc/i7v4+uHdOy6kDQauYLaf6JpCMadjGul9/5GEmBDJk6dY0c9+HziqKApRFJ1jADvFPu7GnRb6/8/evQbJkV13Yv/fvPmqrKqsru7sF6q70GiggeoBSGAealECsZrVkB4FLQcXsj5Q9saSsiyvIpaOsL8ozAhvWBF2kJ+8uxGWP23Y1jJWQTocoZHCG/RK4oh0zGLXgjgvEpju4cxgGtXoQT8K3V2vrMzKlz9kVc+DeDSA7s6bVecX0YHh9GDmEJ2VefOee87hEqpbNjIax8x4TpH/VAAAIABJREFUBuOmBqug4XOnRjCSVVEp55MOM3Er1Sbaro/qVhvVTRu3t9q4u+PA6QbYbXbRDeJ+85H46/FDp8gSClkF5UkDi2UThk6PiDRzuwGCKMJytYmdZhc/efcetvZcbO052OvNxttrefBpFtjAUrgEy9Qgc2qnSw7HaF7Fyy9Mw/Mj1Pbc/WpTIo6242NlrQlN4QO9oTqobCfAylpj//CbiJ4/W8TJiWzSYRDyUH/1+l2hE8ufZBU0XLkwjqXK6P4ohGFgFTScnyvgv/mts/jR21v48U+34HRDhAK3qGi7PlwvwPvrTWiyhErZTDok8hkSY8jqMgpZBZapoW57Is6pOw1gJ+kgCBlmtNtJUmtlZWW1UqkAwCqAuUSDEUCzE5ft77a60BQJ9xpu3HbBzqA0ZkBitCEKxNV1TdvDeq2D99ab8ZyGhpuKE2lHTWJxBUBWozZLgyCI4vaIu80utnYdLFcbWL/XwXqtk3Ro5JhIEqN2ieRQqbKEqaKOMTOuDpG5BIASYiIJwggN24Mr3uYPOQC/9/PrCrwuLeaoOoyIb2PXSc2BDU2R9tslDtNBBk2RYGYVLJTyuLFaB5cYRN+yCIL4/art+EIfXBhmjAGcMaiyBE2RIIl5TeUYY8PzYSdEQLSSJam2srKyCuCPKpXKiwBejKLo66DkGFwvxHrt443vV66tAwDyhgzTUFCZNTE/ncP8dBYnJ7IwNHmgqseatofdlofXf76LWsPFdt3BazfidohNm/p9P8j8dA7f+triQPesH2RN28dytYFbGy3cutuia54QcmS+9OwUls6N4b//k5/ixmqd7jMCsZ0Ay9UG5qepE0/aXF/ZwcpaQ/jP05eenYKhi9uKigy3/mzo5Woz6VAOpGRlcPH0CL751YWkQ0mEoXFUyia+4p/ACSuDP331NqpbdtJhPdLr7+3iTq2DpcpY0qGQB7AKGiplE2+8twvXE24u51wURXfm5uZGADirq6tO0gERMmwoIUYGAud8LwiCVcTVYgAlxe4rCCO4XojdVhd3d+JkWdsJoCscbdcHlwBd4VAVCZrCoatSr8Igfunt9/tOkueHCCPAdn2EIeAFITw//rLdIK6IaXXR6vi4tdFCve2h3u7C6QYIBG6/kLSSlcFkUYdpKFRRkiL9a369ZqNh+1hZa+Cjex1s7jp0zQ85TZGgUKtEckQ4Z/sn2m03wNsf7CUdEumJECEII6FbTpH72211hU6GKXJ80t7QOXSBZ7OQ4Wa7AWxH3M9Rn9Srhlosm9SCFEBWl3sV6Bqato/dlnAJjE9pdnyoitgxDjve65TBxN3aYKqqyq1WS9wICRlglBAjA+HmzZtvAXir10JxLoqi/yHhkIRkOwFsJ0Ct7uKN93Y/9b28IcPQZJycMPbbNZQnsjA0jplexZAIVWT1ttc79deA64WoNRzU6i5qdRcr1SYatof1e9QS7nFdvTyDkpWhPugpU9200bA9/PFf/DyuEFtrJB0SEYRV0FDIUetTcjQMjcPQOK5ensFus4tv/vEbSYdEesIQsB0fHs2HTJ3X39vB5q64h8QL2fjQVHmCOgkQcd3ebKNWd5MO45F0VQKXGL71tWfoMCKAMydyOHMih+VqE6N5Fa++uZl0SA/18ztN+rkJztA5rIIGlYv5c4qiiHe73Zyqqj4A8csiCRkwlBAjA4Vz/lavUuxFAAUAlxINKEW6Xogo8rF+r4NmJ/713bUmFFmC2ZsnZRVUKLKEQlaBLDFwzmBoHDKXoCoSJMagyBI0WdqvKjsIPww/1ePddvz9ajbPD1Fve/CDEEEYod724PkRtusugt7vsx0fthtgu+EKPXNBROWJLLI6x1JlDGaGHgki63oh2q6P6paNjR0Hm7sObm+2YbsB1u91aA4e+RRN4VAEfQEkg+PEaAbFnIqlyhiatoflKiXlCXlSH93rYLcpbsXBeEGjGbNEeNUtG9WtdtJhPNLp6RxGcipMQwGniv59n58fwdSojn93YxthFHeHEZHt+uh6EpodH1xiQnTSIZ9maDLGCxoUWcz3IcaYKsvyFAAfALVaIOSY0e4nGSi9SjFUKpUfI64Uo4TYAbleCNcL0er4WMeDK6wMTUZ5woCmxENKrYIGTZGQNxTInMHQ4jll+czBX5j7lV59ce/3AA07TnRVN9tw/RCuF+y3iCOH4+SEAaugYencaNKhkEdwvQB7zS7e+mAXb3+wh7c/2EOt4VIijNyXKkuUECNHbnosnge+dG4U67UOJcQIeQrrNftTB8REY5karIKWdBiEPFR1q52KZ9GZE3mUrAzyBm3JfdLnTxXgenn8z4qEIIzgCdr90nYCAAEatgdNkSghJqCsxmGZ4ibEAKic88koiigZRkgC6OlLBtWfhGE4K0lSK4qiXwKwlHRAg8L1AlS3bEgS4oqwuy0wxiBLDGBxr2YuSZAf46RbGEafau3TnxMWBFGvUixAGAFhRDMxDsvpXluK//TK7H5LTCIWzw/hBSH+7t0d7DS7+MH1j+B0Q2zuOmg7PlodH55Pnwdyf1k9ngNJyHG4enkGH9xt4fZWG3fvOftzSgkhjxZ3Pwhxe8sWep27MJPHqSmadUTEtrHr4PaWuN3HDJ3D0GT8+qUJPHOykHQ4wilkFYQR8PIL09jec/H//nQr6ZAeaqXawEhOhWXSYQHRyLIEQ+eQxH0dUgFMM8bWkw6EkGFECTEykFZWVlbPnDnjM8beB3Am6XgGSRBGsF1Bj2qRA8tlZEwWdcxNZmkWhKCiXlJ4e8/Fxq6Dtz7Yiz9/jrinx4k44sMJ1IKHHI+SlYHt+ijmVOy1vKTDISRVPD/u0iD68z2fkVHMqUmHQchDuV4o9LuqLMVdViaKOkpWJulwhNOv5pkq6qnoCtOwPag0S0xIkgRwzsAg5vtQFEUSY0yXJIn25QlJAH3wyMB6//337wD4F5VK5c8Rt0/8HwFcADCSbGSEJKdkZXD18gyWKmPUJlFQtbqL1362jdduxF/UJpQQkgYly8A3/8EC/s8fV3HrbivpcIaWoXFUyia1tkuR5WoDtbqbdBiPtFg28fxCMekwCLmv9VoH67UONncdNG1xE2JLlVG89OwkSmOUDHuYf/TlObx9aw8/fHMD3d5oBxFdf3cH89M5XLkwnnQo5DPGTR2azGHoYrazZIzpYRjO+b6/knQshAwjSoiRgcc5dwDs+b5/kzHmRFH0RQAS4hJlQgaeJDEwBpycyGJ6ND6NaGbo9i+SftLr1t0Wdltd3NpoY6fZRRBGiCgXRp4A5wwSVYiRY7Lb6mKv5WGl2sB2Cjb2B5nMGYo5FRlVzA0g8ots10fTFreyMp4bzKHKEvhjtEQn5Dh5flwZFgjadlRiDIrMkM8osApCzzUSgswZdJVjqqjjXrML1+smHdJ9NW0PtiNuAnaYcc6gKRIkJuxzS5IkSQftyxOSCPrgkYF38+bNDQAb58+f/6MgCHQAPwKgA5hKNjJCjoeuSuASw+9/ZR5WQaMTbAKqbtpo2B6+9b+9DdcLUWvQhjJ5OoYmQ1NoQ5wcj9d/votbGy38yx98gK6gp7iHRd5Q8PxCEdOjVH2QFtUtW+iqSqugoTSWwWhehaHR9gERU932cHurDacrZutRRWawChoWyya9ix2Aock4MZrByy9M4/q7O7jeuJd0SPe1XG1Qy0RBGRqHoXGRk88qgCnGWC7pQAgZRrSiJcOkpeu64zjOv4qiaBzArwOwel+EDJz+id4vXrAw3nsBo40MMfRngd2628KtjRZWqk00bA/Njg8/oM1k8vQ0NT7NT8hRCMIIQRBhudpAo+PhB9fvYrfVRdcL4Qt6On8YmIaCkZyKkmXANOh5nxa1uov1WifpMB6omFMxP52DrtEhCyIu1wvQtMWtENMUjpJlIE/35gPTFCnubFIV98+saftod3x0vRCc0/xeERkah2koaIhXiS0DGOlViRFCjpm4TxZCDtnNmzdbAFCpVP4kiqIzjLETACqghBgZUJrCkTdk/P2LE1go5VGZNZMOifT4QYSG7cW98d/YwMpaU8RFOkkxTZGg0IlVckSCIILrBXjr1i7Wax384PpHSYdEAOQNGcW8gpJF1WFpsi16Qiyv4tR0Djq14SQCc70QDdsTdu6uqkgojWVgGkrSoaSG1vszywv8Z9awPbQ6PlwvgAZOCTEBGRpHPiOL+K4tAyhEUUQJMUISQAkxMnQcx9nI5/N13/f/aRRFvwrgV6MoehnUQpEMCEPjODmRxeULFi6ft3D6RA65jLgvEsPC7QYIogh/+ZMN3Gt0ce3mNrb2XGzvuWhT73lCSAp4foh628O/f+ce/sM7Ndy8XUejLdwGw9C6enmGkmEpUm972Gt72NxzhW6VbJkaFmdNZKnLABFYveWhumXD8cRsmVjIKrhywUJ5wkg6lNQwdBmLZROvv7cLy9RQtz14vnidNDw/Qq3exUhepfaJApos6ihPZrF+T7iDJzyKohxjTE06EEKGEa1qydBZXV11ADgAdiuVigXgRO9/EzIQZC4hb8iYHTdwYa4AQ5fptJoAgihuMbZe62Bj18GN1Tq6XgiX5u0QQlIijOJT+Ju7DparDdzZ7sB2KaEvipKVgVXQkg6DHJAXhLBdH243EHotoClxuynOaS1JxOUFIWzHRyjoR0mVJVgFjdrXPwYuMeQNBVldhqZIEPV1NowiuF4obHXisNOUeJaYgBhjTAZAWVRCEkBPYzLUVlZWfgzgx+fPn//zIAhGoij6PwDooGoxklLf+p1nMFXU8fILdAmLomn7aNgevvO9d7BcbYh4Oo0MoPVtG2aGlnnk8Fxf2cF76038i1fepWS+YKyCBk2RcPXyTNKhkMdQ23OxUm3AdsWsaNGUeAN/fjqLSjmfdDiEPFSt7mJ5TczPU95QMFnUsVQZSzqUVDo1ncVLz03ir36ygY1d8c4xu16IOzUbqiLBKlCxj2iyuixqq1IdwBxjbCTpQAgZRrRTQkisxTmH7/tvAegPWsr1vggRFucMssQwYxnIaBxTRR2jeVqIiyAMIzheiPWajdtbNnZbHm0gk2PjeiG6AraVIemz0+yi64dYWWvgzraNIIwQ0iFoIfTXAHOTWYzkhNzsIQ/R6QbYbXXhC3qv5hKDaSjUAoykQhgBQRghEvD5ZGgcmiJkhUoqaIokdJXqfoWYqOWJQ06RGTSBn2NRFMlzc3P66upqFwBdRIQcE0qIEQLg5s2b7wNApVL5bwHMhWH4DcbYJQAXk42MkIfLajLyhow/+M3TWCjlUSmbj/5N5Fg4XojqZhuvXLuDP7t2B7YbUCsNcmxqDRd18YZHkxT6u3fvYWPXwXe+t5x0KOQz+muA3335FCqz9PxPm7s7Dl5/bxfNjphtRw1dRmXWxDi14SQp4PkhbEe86jAAODlhYKpIn6MnZRU0VMp5GD8Rc/vS8yPUGi5mXJrhKaJCVhG6nXQYhjkAU3Nzcxu98S6EkGMg5hOFkITour7nOM4qgD8HcAfABuKk2AjikmZChJDLyDh9Iof5qRzmp7NYKOWFXugNm6btY71m45Vrd/ZnhUV03oscI9cL4fmUgCVPbr3Wwfq9Dq7drOHuDr2fi4Rzhqwm4+LpEVycH0F5whC1HRB5iIbtYf1eB64n5iZ+RuWYn85hJEedB4i4gjCC7Yg9h88qaChk6R79pAxNxnhBhyKLWSEWRRG6XgifDj4KydCEbZkIAOjNEdO73a64ZWyEDCBKiBHyCW+99dYegD0Aq4uLixthGNYATCJOhlFCjAgjp8u4OD+CX66MYencKAxdBhd10vAQatgebm/Z+LNrd2jWDklEnBCj6448ufV7HVxfuYdrN2tYr9HsQ5HIEkPeiNcBVy/P7M8QI+nStD2s12y4gt6rdZXj1FQWRUqIEYH5QYSG7aEr8Fo7TojR5+hJZTUZlqlBkcV8zsUtEwME1E9aSIbGkRd4rjJjTFYURc9ms9JHH32UdDiEDA1x7wqEJMzzvHcA3JFl+Z0oiswwDP9LSZJGAfxS0rGR4VTIKlBkCf/VV+YxklVx6UwReUOGocuQGCXDRPKd772D3ZYH2w2oMowkIqtz6CrNqyCP7+69Dv7N397FjdU93Fito1Z3kw6JfMJzC0WUrAx+6/IMpscysAqasKfmyf05XoDNXRfbdRe2GyAUdBPV0DkWyyZMg7YMiLg8P0St7qLtitl6FACsgo4CzXl8YobOoSoSFC5mQqzfMtF2xL0Gh5muSjB0od+JspzzSQDVpAMhZJjQ6paQB3j//fcbABrnz5/3gyDQGWO/GYYhJEnMhRgZfIosQVMkVGZNmIaC8oSRdEjkAZarjXi4MrXOIAnhEgM9rsiT6HRD3LrbQnXLpsowARVzKqaKGVyYK0BT4k1Cki5hCNiuj64v9jpBlhhMQ4amCL2RSIZcFEH4NbcmcDInDbjEeutaMQ9/xBViIVWICUqSGDgX89oB4gqxKIp0z/PoJkHIMaKEGCGPcPPmzY3eX37j/PnzU0EQ/EYYhi8yxn4NwBSolSI5IpwzGBrHpdNFXJwfwcsvTGGqqCMvcA/sYffaz7ZRq7tYv0ebyCRZpbEMxk2aK0gOxnZ9BEGEf/K/vI6m7WN5rZF0SEOvvwaYn85hfiqLKxfGYRU0LFXGkg6NPKWG7eH6yj2hE85L50axWDZpzUnIIViczQs9wygtLFNFaSxD71nksVgFHYYu7tZ3GIaZKIqKnueJGyQhA4g+cIQ8nm4URRuMsY3er6OghBg5AqahwNDj2Q2np3MoWRlkNC706SaCOBkm8AYXGR6GTqf6yaOFUYQoAm5v2mjaHpq2L3TbKdFJjIFJgMolMIZPbcDIvRPKksTAAMgPqRYwNA5FllDIKpge1XFiLINRU6MN1QERBBGatg/XC5IO5YHoGUIIIQcTRfF9PYyoQkxEXIrXYKKSJEkOgkDXNI0qxAg5RpQQI+Qx3Lx5cwfAv61UKk4URR3EFWJmwmGRAVSZzWN+Ooff/8ppmIaCPM1vSIXXbmzj7Q/2kg6DEJQnDEwW6bwGeTjfjwfBf/evV7FcbWCFKsOeiiIzqIqEcVOLWxyXP14ixs/y+LALlxjMzIOTW4tlE4YuU2vkAWW7PparDdTq3aRDeSB6hhBCyMGEYYS248PzKSEmIl3hiI8iiSmKohxjbIoxpiYdCyHDhHZYCXkMc3NzI7quXwrD8NcYYy8CGEk6JjIY+kmvxdm4Pc1SZRTFnArTUGg+SArYbgDb9VFve2h2qLqCECK2MIrg+xFurNZxY7WO9z9qodZwkw5LaFxiyOoy8oYM01BQyCpQZAmWqUGRGUayKlQlnvVpaBwyl2AVPm5bGn+PQ+lViWnyg5/tVkGD8pDvk3RzvRDr9zpo2F7SoTzQ/HQOEyPUdpcQIg5Di5+/orVMDKMIXS+EH4RJh0LuI654FjdZGUWRDEAPw5AWfoQcI0qIEfIYdF0f+UQy7MWEwyEDJG/IKI1l8NKzkyhZGZoRkjK262O77qLe9oTe4CKEECBu7+N6AW6s1vFn/+4Oqls2bGqV+FAyZ8hn4md1ycqgPJmFoXEszsbVXCcnDGgKp0Ms5JFcL8R6zUbXE3fzdH4qSy06CSFCyepcyK4p/TVVEIqbdBlmhiZ8+185iiJKiBFyzMR7mhAiqLNnz349DMM5xtg3QJVh5BBYBQ3jBQ1fvDCOhVIOZ0t5WIW4zRJJl+26i5VqgzaUiTBsN4Aj8Hwakhzb9XF708Z3/3oV73/UQnXLFnqW0XGSJAZdjau+rIKGkxMGDF3G8wtFaLIEq6BDUySoigRd5ZAkhqzGe7+Pg4nbkYcI4vaWjbs7HdhugEjcfBgWyybNrSWECMXxAiHftSQprkJSHjIblCTP0DmCMILbFevhyxhTAGRlWRY+c0fIIKGEGCEHN/eJL0KemqZIyBsy5qezODuTR2WWxtGlVdcL0bA9+AGdDCRiCMIIdFCV3E8QRGjaXjzDqOEKubmUFMbi1oiGLqOYU1GyDOQNGRfnR6Ap/FMtEAl5Erbro9MNEAi+XshTdRghRDBhGAlZhcXAwKW4HTIRFxf35yMhrhITNkBCBhElxAh5hLNnz34dwBxj7I+SjoWkW39O2NXLMyhZGVy9PJN0SOSQNGwP67WO0O2PRFcay0BT4pk7/c/K/vcsY/+vTUNBPvPw5Yvt+vDDCE37443+ph23s6zVXbheiKbtwfVCbDdcdL0QLv3syJD49veWUau7WFlrJB1KovqVXv3ZnV//8hy1PiRHbuV2A9VNO+kwHij+PNAWASGHqWH74FQ99NTaToBGW7xDPJwzmFmFurwIzswocL0QtiNcV4QMY6woSRI9fAk5RvSBI+QBzp8/nwOQ832/HEXRXNLxkHQyDQWqImG8oGEkp6KYV1CyMnTKfMCEYVyRI96ZxWRxiUHmDIYmg3MGQ+OQGIMiS1Dk3q9cgiQxWKYKRZYwklVgaByG/vES5ZOfF0OTH9kL3vFkhGEE0/j4hcd2VNiujzFTg+eHsB0fXhBhr+3B9QJ0vRBON0QYRfCDCEEYvzB5QQjPj+B0AwRRJPypfkIeZHPXgeuFqPXmHQ4j01Agc4ZcRkYhq2Akp2BuMoesLsM0FGiqBM4ZtT4kR2a31UVL4Fmjhs5pdhhJFxYnJCSBb9yuF8Lz6eDV0/L8iA6wkScmcwY/EPI+wRhjVCFGyDGjhBghD9Dtds8wxi4yxv4zxlgl6XhIOlVm8/vVYCXLQMnKJB0SOQJ+ECdPRGzjkaSsLiOfkbFYjk+cV8pmXAVmxvPzrIK2P5MnSXGFWIDbWzZsx0fD9tC0fSyvNVCru6jV3fh7rv+pqjNC0uSHb2zi9lYbr93YTjqUxFRm8yjmVTy3UMRi2cTirAlDl0Vuo0MGzOvv7WK31U06jAcqT2RprUpSJW5zy6Eo4t7Haw0XMs3ke2p120Ot4SYdBkkpQ+eAmB9DNYqibBiGNEOMkGNECTFCPuP8+fMqgFHP815gjP3HAKykYyLii6teGIo5FcW8ivKEAUOTsVQZhZlRULIMmNSCZmBxiUFTJKFPpx6VfnvDQlaBIkuYn8pBkRlGsup+pZdVUPfn73CJ7f/9rMaF2CDgnEEDx8SIBs9XYXkBXC+ENaLBduIB3vW2B88PsV7rxFU2DRfrNRvrtQ48P0IYiZUMdb0QHp2iJQDWax2s3+vgzQ92sbYtbqu2o9C/P/XbIi5VRqGrHCfGMrBMDZrCqRqMHKta3UXLEfdghVXQKCFGUkVigKZwoQ82NG2P3gOfgu3Ga3FRq+xkie13hSHi0hQOzxfrfa1HjqJIl2WZLiBCjhE9lQn5RSqAKcbYCwD+QdLBkHRgEqAqEiZHdcxP5XDlggWroGGpMpZ0aOQYcM6gKhIEfhc/MnlDRmksg/JkFobG8aVnJ1M3h4dL8TDsiRH9kf/sSrWBhu1hea2B6+/uYLvuwg8DQLB29G43QFfQjQNyvNbvdXB95R7efH8X67VO0uEcq/796aVnJ1GyMvRMJonrz7EU1XhBRWmMEmIkPRhj0GQJsiTuerNheyg6atJhpJbt+tiuu8ImxDhnyGdkaAoV+IhM7bXqF5DMGNPDMBQyOEIGFSXECPmE8+fPT/m+/wyAfwpgLuFwiODKEwaymoznzhYxklXw7Jki8hkFeUNBIatAlYcwOzKkDC2uflIG9GBXf+bX2VIe+YyMSrmAfEbG2Zk8chkZOV2Gpsanc4s5BZLEoKuDWXlRnswiCMLerxE2dxx8uNFGOxDrxL/t+nA9wbJ05FjtNLv4u3fv4drNGq7drKFWH442Q4uzJqyCiiufG0dpzNif25l0a9a0sl0fYQg43V+8n9hu3CrY7d5/k1KSAF3lUHj8DPkkRZZQyA7PrKp+lXGt4ULk7srliSwWy2bSYRByYIrMYBW0uB2aoKpbNnRKljyxtuOjVnfhBWImxCSJwdBlKAJ0vSAPZhV0SJKQa2E1iqJcFEV0kyDkGFFCjJBPCIJABzAK4BKAR5cKkKGW1WTkDRnlCQPjBQ0X50dSUxFDDpfMJWiKNJAJICBuR8MlhpGcgmJOxfxUFsW8iucXikN3zRsaB8CRNxQU83FbSBHb9ARBhFDkXVdy5Lp+iI1dB3d3nKGqDMsbMqyChsqsSbM7D0EQRHHS6z5VTf3Zme0HtACUOUMYApoSIYyG5zlxP54fwvVCoavDAMDQZeSN4UlUkvSTGIOmMCHXYn22Q4eUnkb8DAoQCnr7ZIivP0nga5AAmiJshZjEGJM5p4wqIceJEmKEIK4MC4JAj6LoR4gTYSNJx0TEUhqLT5hf+dw4SlYGpbEMFssmbRoQAIBlalicNZHVB+exunRuFCUrg6uXZzBe0Hqnb2WhNxzIxxq2j7ZDmy/Dar3WwY3VOv74L95DV/AN+KfVfyZfvTxDbREPqOuFcL0Ar93YxnbdxfWVHdhugOpmG64ff892AwTB8SXV45luEvKGApnHsyb7M+Csgt77ngxDk3FyIgtN4dAUCeVJo3dQQWy3t9rYbXWTDuOB+p8jMzM46xgyXExDQWksg1pDvLaky2tNaCpH0/aG7iDZYfjwbhuvvrEp7D00q3MszuZhmVrSoRBCCDkgWvESAiAIglMAxhAnw6jB9xDjEkNWl6EqccWPocmQOcOpqSwKWTVuvWRqMA0FdIiH9GmKBNNQoMgSOGfHuon4tCTGoMgMhibD0DlG8ypUWcJi2YRViK91XeXgnIGu+E+TGBP2PhCEEcIoPdchORyeHyKM4ll3tzfbvesg6agOH+fxzBiroGNuysCpyez+/YrcX/+Efa3exW6zi91WF+9/1EK97WG31YXbjauXvCBEEEY47ttHvxUWdwNw6ZOVaQG8IILCJRg6h6ZwdNyg14ZRwnbdgaZyGBrff54pvTkhuirFraw0GRJDom2NbTdA0xarte4nxX++MlU4kNRSeNw96nDnAAAgAElEQVS2ThIwaRKEETw/hO0GYIxRQuwxuV58/xT5/UrmwzlLOk04F7aKTwagR9GQl9ITcswoIUYIgDAM/wsALzDGppKOhSQrq8uozOb32ywtzprIGzKdOCcPZfUqqEZ7LfRE3vT6rP7shcWyicqsiZdfmMJUUafqxwNQ5DhpLmLVnO36cKg9z9Cptz24Xohvf+8duF4Ie0CrBA2No2QZuHp5BpdOj+DiPBX2P4rt+FivdfBn1+7g7Vt7ePuDvaRD+pR624v/ovFk8z0qsyY0RYJV0ParmssTWRgax2L54+8lpbpp4/ZWO7H//qMUcgrKEwZ0VfxqO0Lup5BTUZ4wUKu76LhiPftsx0e97eH2Zhsly0COKjEfS63exXK1AdsV8/2K9w5eKDLdP0VmaBy6KmTOKdf7ooP5hBwjehKToXb+/Pkzvu+fAXAGwMAlwzhnkCUGz6dKgU/qV4GN5OIZQAVDgSpLmJ/OQVclTI9lem16FFimCo2GIJMDOn0ihyCM8NrPtpMO5aGsQtyaauncGAyd4+REdj+pN5bX6Jo/IC4xaAqHJOS7FRlGy9UGag0XzY4PX9Dh809jejSDjMbxlaVpFLIKPj8/gskijXx9mHrbg+eHeOXaHew2u3j71h42d5ykwzp0tYYLLjE0Oz42dx0Yuox315pQZAl/9+4OFJmhkI3XdqahwCrE67vSmLH/vaNUb3dRqz9Zsu84FHPq/jqYkDRSe90aRK3cbzs+VnqtE2m25cG4Xoha3cV2vb+uEXM/Q5GlXmt5en8SmabwRCvFCSFioYQYGWq9ZNjLGNCEmCzFLRn8MADEOiiXKJkz5DPxDIpT01mc7J0g/tJzk+A8PuFFyJM4cyKHjMqFT4iNmxryhoyrl0swDQWVspl0SKkkcwZNkcCYmJsvZPisrDVw624LDdtLOpQjMT2mo5hT8fUvz9Hz+oDqbQ+24+P7P6rGm4tPWIElukclm3hvLlnJMj4xB1aGJnMYOj+GhJgnfkJsKosMVYiRlOrPGZQFrNoH4rapy2sNSoY9hq4XYr3WQa3uCr2uiRNiVNwjOk2J2ykTQghACTEypM6cOTMuy/Lfi6LoNwD8BoDxpGM6TIYWV3y8cG4UL5wdRT4jQ5YlrFTrcLohNvec/dNWjd7J4dtbdtJhHxrL1KCrEiaK+n7bnEJvvtNi2ewlxBToGkdGjYeycynuOy/mKxRJi186N4oLcwG+/6MqvCD8uAVUwvr3hEo5v98a0TQUlKyMsCdp00DuzbQRsWVire6i3hLj+iNHb6XawPJaA3/z1hbWtgfneS5JDLoq4bkzo3h+oYjnF0ZRzCv0vD6AWt1Frd7Fv/6bVVS32qg13IGcJ3dQYRjBdgNUN9vY3HGwstYAlxj+7//wERRZQiGrxJXSpoZzM3nkDBmLs+b+957W7S0bK2vNQ/h/cjQKWQUnJ7PQKCFGUqpgKDg5Ie413Or4eP29XSyU8rBdH7rCRZ1nJIy9dhev3dhCVeB2s+WJLCZHkmvHSwgh5MlQQowMKy2KohkA/a+BIvP4hNzsuIELc4X99miI4s0ATY0TQH4QIQzigeWDRFMkZDQZxZyKyaKOkpWBZcZ/Bs8vFOlUOTkyo3kVvhHFnzeB9O8JJctAZdbsnYynGWFPS5Litokibme4XghP0NYy5PA1OvF8qK3egZdBwVj8GRsvaFgo5bEwk0MxR6ewD8L1QjRsD7futvDeehOuN3gtNB9HFAFBEMEOAthugN3Wx9/7bPWYmZVR9FS4U4f3Z2a7gdAVDqoswdDEPOBByEGIfg17QYjdZhe24yMIIkS0DH8kz49bJtqCzYT7JEPj1GqeEEJSiHaEydCpVCpzURS9AOCPAAzc4Ilv/c4zmCrqePmFX+wAuVQZe+jv7Z+cbdgeGraHWsOF22tVAADrtQ6CMILt+GjaPhq2B9v14YcRmvbhDbntV1yYGQVyb5Mi35vple19r1I2IfcG2ParwPqJP9roJ0npJ1q/83ufx8paA9/+3nJisSzOxu2gvvnVBWqLeEQ0hQs9ryIIQjRtD5rCoQqWpCWHoz9f49U3NvGv/vrDpMM5VEvnRjE/ncPvf+V0b64nvbYcRP+a+P6Pq/j+j2/DdgMElBx/qCCI17Er1QZWqg28+ubm/vdMQ0FltlddXTZ7z1blwG3P1msdrNc6aAqaDDM0GeUJAyesDK2fSapZIxoqzIShiZmciO8zHq6/uwMAuHp5htonPsR6rYOVtSZeubaedCgPtVg2cXIym3QYhBBCHhO9WZKhE4bhJUmSFqIokgGkfoeQcwZZYpixDGQ0jqmijtH8k52e5gwwdHn/3ytJDJ4fQpbiPyZDkxGGcUVZ2wlguz4cL0AYxsm0KIoQhhHCCAijg2++MPSqLFj839xvYdg75acrEgxdRkaTofeq26aKetxKSYnnPhi6DEWWhN2YJsPFNBSM5jXMT+ew2+xit9U98v+mxBgUmaGQVVHIKjg3m0chq8A0FBryfER4734l0QwxkhDbjTfxtweoKmw0r0LttTieHs3EawJ6th9Y/5rY2nMQhBEeYzlG7sMPQjRtHxu7DlSFIwgiGLoM2/WhcAmFnIKMyqE/oE2b54ewXR+BoP0quRSv/WmuCkk7hUswtI/fB0U9CNDqxPcTpxsgCCNhK9qS1p8dJrpiTkUuQ9uqaaApEhRZ3M+b7/vq3Nycvrq66iQdCyHDgO7cZOgwxv55FEU6gFzSsRyGrCYjb8j4g988jYVS/qmqQDSVozxhPPHv71ePuV74WG0Y5V4LQ6piIIOiUjZhFTR4fohX39zEDz9x2vyoKDKDVdBw5cI4vnhhHM+fLVJrsSOW1TgsU4Mi032LJKO6aePb33sHzc7hVWkn7ZfOjWKyqONbv/NM0qGk0ievCdsRt81UWthugOW1eEbfJ7307OT+M3d+Oof56ftXCNRtD7e32nC6Yv4sNJXj5ISBkRxVh5F0K2SV/S9D44faveQwffBRC2vbNn7jhSlMjGhUmfkAr1xbS0VC7LmFIopPeBiZHC/L1NAQ9L4AAJIkjQKYArCacCiEDAVKiJGhsbCwcIlzPhJF0QgG4NrXFAlWQcOFuQIuzBWwUMrDKiQ70JWxuIUY5+yxZigxxqBSdRcZMIYuY7FswvVD5A0Fr7+3g72WdyQzRJYqYyhkFXz+VAHz0zmcmsohI+hQ8UHCOYOmShCxQCw+YMD378lk8Fx/dwfv3Wmi2fFTPQu0X91ansji5KSBv/f5CUzQgPonslJt4NbdVuqviTT4cKONzV0HTdvH1KiOqaKO8oQRP/tnzf25ZA3bw3qtg66gM9w0RUKJ2iWSAWIVNJQsAyvVxqP/4QT4YQh4wM3bDbheiJeenUw6JKH02/yurDXRdsRNXvSNFzRkqUKMEEJSh+7cZGgwxi6GYTjHGBtJOpbDoCkcpbEMfvUZC19Zmoahy4m3XJAYg6owqOnvREnIUzM0jko5njUyP5VFre4iCFpHkxA7N7o/O5AqLY8P5wyqoC0TVUWCpkh0LQyw6yv3sF7rHMk95TgxKb5eF2ZyuHJhHFcujCd+wCetlqsN3Npop/6aSINbd1sAgBur9f0Zd/1rtzQWt/rsV6ms1zpwhU2IcZSsDEya0UcGhGXGn0FRE2JBECEIArxzu457DZcSYp/R7zazLOjP77P6M8wJIYSkC618ycA7f/78FIApz/N+mzF2Iel4DsPLL0zhxFgGX/2VEkZNFYYuC7khSwiJX5RMQ8bvf+U0mraH7/+4inrbw08/3Huqf+e4qeFLz01isqjjV56xoPZm7dGt4PgUDBUnJ7LQVfFehE9OGJgc0ZMOgxyBetuD54d45dodYTfZD8rQOU5OZPGPvjyHkxNZlCcMFLJUqfKkXruxjZ3G0c+sJJ/WduOKvL95awuKzPDajW0UcyqeXyji3bUmqls2HEEr9jRFwsmJLAoGtfwig+HkpAGZM7x6DO3Kn8bfvbsDVZbwD1+ag65ImCjSmg0A/s3/9xFWN9tJh/FIkyM6NJXDKmigMXCEEJI+lBAjAy8IAh3ACGNsBsBcwuEcismijhnLeKp5YYSQ46H1KnXmp7NwvfBQKh80RULekLFQyqM8YaBkZQ4hUvK4VDke4C4J+CZsaFzIRB15ep4fwvVCrNc6SYfy1LjEkDfiFnNWQaPKsKdUq7vCzs0ZZHHFR4StPQcAsF7rwCpoKOYUbO05sB0fYRglHOX9cSme40uzMMmgMDSOfAoqHnea8eEF2/FB23Ifu7vT2a/AFZmmchgap+owQghJKXrykoH14osvyqurq7kwDL/GGPvHiAdUptrVyzMoWRl886sLSYdCCHlM/Y3e7/ze5xGEEWzHx627bdy628LtLRu269+3vUu/FUelbGK8oOHKhXFqiyiIvCEjb8g4eyKHbjfA8loz6ZD2vfTcFKbotPFA+vb33sHbHzx5hakI+ve17/7hF/ZnopInZ7s+/CDC9Xd3kg6F9NTqLl65tp50GA+VNxRYBQ2Vcj7pUAg5NFc+Nw4/iPCd7y0nHcqB/JM/fh0X5gr4n77xuaFe319/dwfXV+7hh29upuLAz2I5j0laZxNCSGpRQowMrO3tbV1RlDnG2BgAHUjvYKv+bIKSlaFKEEIGAEM8fyqXkWEVNARRBLcb4n51RoWsAkWWMFXUUciq4JxRW0TB5AwFxbxY7aaKORV5GvI9UGw3gO34sJ0gta0SOWeQJYa5ySxGcgo0RaLKlEPgdEN0/XReEyQ5cXUDTzoMQg6VxBhkHr8/+0EI2xWzXWmf64VodnxUt2yMj2iYGLJ2134QodnxsLXrCD1v8bMKWQXjdJiHEEJSi3ZKyCCbkiTp61EUfYExlurqsErZxNK50f0KMUJIukm9FkWnT+Rw+kQu6XDIUzo7k0dWl/Hv37mXdCj7nl8oUhuXAVPdbGO52kB120at4SYdzhPJanFV5e++fAqVXptE8vS2dl00bC/pMEjKnJwwMFWkzyAZLLoaJ3krs3k0bR/La7/YfUEktXr8PP/Xr67iS89N4aVnhysh1ux4eP3nu/ibt7bwg+sfJR3OgX3+VBEX5gpJh0EIIeQJUUKMDKRLly6NtNvtE4yxL/Rmh6VSMafi+bNFXJwfwcXTRZgp6IdOCCHD5vSJHKyCJsRp5PJEFlmdwzQUcE6lhIMgbrEa4NbdNq6/u5PKxAfnDFlNxsXTI7g4P4LyhAHTUJIOa2C0XR/NFF4XJFkly6CkNBlY89M5bO05wifEgHiO2MpaE1ZBR95QsDibR34InpG1uou1bRuvvrmJWxvizw0DAEOTYegcVkGl+ychhKQY7a6TgeQ4zghj7ARj7AtJx/I0inkVLz07icWyicqsmXQ4hBBC7uPMiRz8IEI+I8P1kk2InZyINzjTMFCeHIwfRGjYHm5ttHB95V4qEx+yxJA3ZFycH8HVyzP7M8TI4bAdP5WJUpKskpWhDV0ysE5NZ1NzMMh2AyxXG8gbcSvh0lhmaBJiq5tt/PDNDXRT0irR0DksU4NV0GAVxGqXTggh5OBot4QMpCiK/jljzEo6jqdx9fIMZscNXLkwDkOnjyohhIhKUzg0Bfj9r5zG6mYbf/JXHx57DIbOYWgyfv3SJLXhHDA7zS7+8id38dMP91BruPD8KOmQHotV0DA3mcXvvnwK5V7CVpHTsUlJyCBbnDUxkh/8TXcynK5cGMfN23W8cu0OPD+Cl4I5iyvVBtZrNoA4YX31cmob3TzU1q4Dxwvx7e+/g6btw3YDROL/eADEh+B+eXEMo4LNDiaEEPJ4aJedDKpLAFLdgLtkZTA9ptPJTUIIERyX4s39+eksun4y1WGyJEFTJEwUNZo1OWA8P8TGroN620vNsPlP0hQJIzkFlVkTZu/0OyEkeXlDRlaj7QAymKyChpGcCi4xBCwdB0katoeG7WG91kk6lCPleCFsx8dytYEgjBAE6fj5AEAuI2OqqEOVaS1DCCFpRitgMlDOnTv3G4yxqSiK5pKO5UldvTyDkpXBN7+6kHQohBBCHsNSZQwly0DD9nH93R1cX7l35P9NTZFgFTRcvTxDregG0HqtgxurdXz3r1eTDuWxGToHlxi++4df2L9OCSHiWCybqWkpR8jjMg0FJyeyuHp5Bm/f2sPbH+wlHdKBvXLtDoA4QVayMvityzPQFA415eu7lbUGlqsN/Omrt3F7q42m7Scd0oFxzmBoMk5N5bB0bmwoWloSQsggo4QYGQgvvviivLq6KgM4AaCcdDxPwjQU5A0ZJStDp/sJISSlNEWK7+O1+F5eq7tHVtWjKRIKWQWLZRNTRR2aIkGivc2Bsl7roFZ3kw7jiUyPZpDLyNAUCQqdpD5SusqpvTY5MEWOnxWcM3BGDw0yuGTOUMypyKg86VCeyOaugygCbqzWMT2WwfRoBorMIKXocxuEEVwvQK3exYcbbdy620bb8RGE6akKAwCFSyjm1P11Da23CSEk3ejNiQyEvb29nK7rI1EU/SdRFF1KOp4nUSmbWDo3ul8hRgghJH361Voly0DJyuCVa3eOrPWNVdCwWDbxra89s3+oggyWV66tpTYh9pu/fAILpTxVhh2DiaKOHH3+yQEVsnHrUoPaJZIBl8/IeH6hiOqWnXQoT+Qvf7IBTZHwN29tfqYTQHqyMbbjY73WwZ9du5O6Sr1PyvWupTMncrSuIYSQAUCrYDIQbNueAlABMMUYG0k6nseRy8g4fSKH5xeKWKqMwaQNDUIISb3SWAZLlTFwiWGv5eGVa3fgByFs9+lnjJ0+kUMuI+NLz05iYkSHaSipb6NDPs12AwRBhJW1JtpOeloKAehVuhs4N2tibjKbdDhDYSSrIKtzaIqEMIrnzhHyIIWsglyG3jfI4FMVvn9A6air9o+KH0Zo9lpxN20fzy0UUcyrWDo3mnRoD9X/s/7B9Y+w2+zi7Vt72Nxxkg7riZmGErdGH6ODy4QQMghoJUwGgiRJU2EYXmSMTQFIV0JMl3FxfgTPLRSFX9gSQgg5mP7my/xUFq4X4odvbMD1DichduZEDpNFHV97sbw/04AMFtvx4XohlquNpEN5bCXLwNK5UZybyVPF+zEpZONZJqoiIQgjeOnKoZJjVsgqKObUpMMg5Mjtt7G2MiiNZdC0/dQlxIIgQsP2cH3lHq6v3NufKyb6vkGt3kXD9vD9H1XheiFqjXRWu/flDRlL50Zh0uwwQggZCLSDQlLt/PnzKoBR3/e/yBj7BoCphEN6LFZBw9mZPP7hS3P7mxmEEEIGRyGrIIyAf/YHz6Ll+PjgoyZub9qobtm4vdWG7QQP3SQ4OWEgl5FxdsZEecLAycksTk1lkdVlGLqM9DTNIY/jtRvbR9Zq86gUsgo+f2oEL16cwIsXJ6ilUAKuXBjHvWYXf7t8L+lQiMBOTmQpWU2GyuKsCVyewb/8fz5Aw/aSDuepvHZjG5oi4dZGC+Omhi9+bhwnJ7IoTxiJxmW7AaqbNpardaysNbBcbaLZ8VBruEjZuLBfcOXC+H4LaJnTyjutag0X9XY36TAeiDHWUVW1lXQchAwLSoiRVGu325Ku6zoAC8BcwuE8Nk2RkDPkxBewhBBCjoYix60ML54eQdP2oHAGgMF2A9TqLoLg4bsEhsZRyCooWRmcncmjMmv25kdQi8RBVqu7WK+la+aJIkuwChqmRnXabE+IVdAQpH3nkRw5Q5eRpyoHMkTyRryO0hSedChP7ZNzRUtWBpWyiXEBDqD0K9nW73WwXG1gZa2Z+uRjn1XQUMyrtPZOOdcL4fnirpHCMAw8j2r8CTkulBAjqaaq6lwYhv8dY+xS0rE8jv5m5nf/8Au0sCKEkCGR780fWKqMfervN20PQRh9alaUVdDp+TCEmraPhu3hh29upmrwfMnKYLFs4ptfXaB2Qgn6+pdP4e1be/jLn2wkHQoR2MmJDCqz+aTDIOTY9Nsm/trnJ3BiLINX39xMOqSntl7rYL3WwfWVHZiGgrwhY3HWRN6Q8fUvz8PQ+ZEduu16IVwvwGs3trFdd/HqG5to2j6W19LX5vkgvvnVBVqTkyPHOW+999576Vn8E5JylBAjqTU3N6czxnJhGE4ByDKWnvL1E6M6Crn4lFG/eoAQQshw4pyBMXzq5LKUnkcaOUQN28N6rYNuymacLJZNzE1moSkSOLUTSoymSMjpMkpWZj+5SshnaQqHodM2ABk+k0UdXS8E5wxRBIQDUlHrhyFcL8RuqwvXC3BjtY6MxrHb6kLhEhQ5njfLOUNWkwEGcIlBYsCD9lCCMEIQROj6IaIogu0GCMIIbjdAy/HR6vh4/6MW6m0PTdtH2x28wpb+IWbasyGEkMFDK2GSWrquT4VheEaSpJeTjuVx/eYXTuy3vSKEEDLcDC1ejuWoy9zQW1lr4IdvbGC7nq7h89/62jPQFInWNQmzChpOn8jh6uUZXH93B9dXaJYY+UWTRR0nqV07GUJffm4Srhfi/3qtiiCMYDtB0iEdCtsJ4pm0vbXDazdq+89kq6DBMjUsls1eFVkBMo8TZJoiQX1A5VP/UEWt7sL1Qiyv1XtzwtpYv9dJ3ZzTJ3HlwjhKVobWNoQQMoAoIUZSKwiCFyVJqiQdx+OI2zUYODWVQ8miF1FCCCGEYH9jbmPHwa2NNpxuOjbp4g02BaahUGWYIExDxlJlDLutLj6828Je24Pnp6vikByNuNKBI6PygZilRMjjMnQZmhLh0uki9lpd/OzDetIhHRk/jNC0fQRB/Guz40FTOFaqTUiMQZHjim75AS0JXC+A64VxZVgQYbvhwPPD/YqwQda/V16YK2BhhtrLDgrXC+EFtB4ihMQoIUZSizH2YhiGU5KUnvL1kmVg6dwo5qdzNHCeEEIIIQAAvzeMfmPXwa27LXRSkhCrzJooWRnkDXqlEEXeULB0bhQf3m3hjZ/voO34oBHtBIhbJeYNGbrGH1gVQsggM7Q4EXxxfgTrtc5AJ8SC3rqi3zr31t2EA0qR/r3ywqkCLs6PJB0OOSSuF9ABIULIPnp7Jalz/vz5UQCq7/svM8bUpOM5CEWWUMgqeH6hiKuXZ6jsnhBCCCH7bNfHSrWBu/c6sN1A+Lkmhs5haDJ+/dIEnjlZSDocch9fvDCOU1NZ/O//9hY+3Gjj9paddEgkYYbGYZkaFKrmJEPu5RemsLLWwGs/24bt+rDddBxCIcejUs5j6dwYLJP2bAaJ7QZwukImxFq9r27SgRAyTCghRtJIDYJABzCVdCAHJbG49L6YU6kyjBBCCCGf0j/J7XTj1kSik6V4yPxEUad1jaCsgoa8IaOYV7G56yQdDhEA5wyaIkFilBAjw22yqGO77kJTJHR9CQAlxMjHTENBycpAo0ragRIEkagHznwADmNMyGwdIYOKEmIkdTzPexnAHEvRy1ylbOKf/eNnYRpK0qEQQshQ2x8OXm3sz21qduKWMrbrww8iNHvtZR6E7w8j59AUCYbOwSX2qUHlpiEjb8gwdBn8AfMZCOlbr3Xwx3/xHpqddPS2e+nZSVy9XML8VDbpUMgDxDNQJHzn9y4CAL79vXewuevgL3+ykXBkJCn91u15eh8hQ840FFw6XcT/+l8/j+//uIrv/7iadEhEAFNFHf/RC1O48rlxXLkwnnQ4hBBCjhAlxEgajTLGUlMdVrIymBjRoSkSDZwnhJAjFIQR/CBCq+PBCyLYjo8wjOB4ITw/hBdEqLe68IIItzfbCEPA8QLYTgDb9eF4cas623l4UkKSGHTVhyJLULgETZXAJQYGBokx6CrvtZTjKGQVKHK8MS1JDHoviaYpfD+RRoZb0/bRcny4Xghf8GHf/RbQxZwC01BoXZMiJyeyyOoyLp4eQdP20bA91NsezdMYIkrvwAY9dwgBOAMMXYZV0FCeMLC158JJyfxOcvg0RUI2I6NkZWBm6NDAIHK9EJ6Y6+wwiiLf930hy9cIGVSUECOpI0nSUhRFX0g6joO6enkGJStDc8MIIeSI2U6Ahu3h9fd2sNvqYqXagO0GuL1po9ZwUau7xx5TeSILQ+MoWRkYuoyTEwZKloHSWAaLZRN5g5Ziw2652sAHH7VQaxz/9fm4ClkFVy6M4/mzo6iUzaTDIY/hP3/pJFwvxG9fmcX1d3dwfeUeXruxnch9kSSjkFVRnjCgqdQGjBBN5ShPGLjyuXHkDRl/+uptVGnW4tCyChrOnMjhty7PQFN40uGQI1CrO2jaQnZi6DLGWowxysgTcoxoF4akxvnz56cATPm+PwVgJOl4HsXQOWRJwlJlDGaGPmqEEHIYgjBCEETY61U23NpowXYCVLfasN242uujnQ6cboBa3UXXD1Fve7CdZN4x6u0ubFdC1w+hcIbNXQdmtYG8oeC1Gxo0RULJykBXOU6MZVDMqSjmVKoeGyIraw3c3mwnHcaBmIaCpcoYSmM0NyyNZM5gGgoWZ/MwDRlzU1m0Oz7u1Gx4foj6AzaKuMSQ1X5xg1DtzaNS5PsnWMIogueH+/ftPtcPEYYRvCBCEITwe+1rgzCC68Vz9Gw3gOsFcD0hT3OnkqZIMA0FskQJMUL6Jos6Lp0u4trNGoIwwnqtk3RI5BgpsgSJxYeYp8cy0BRO1e/kuPlRFDmcc1rwEHKMaJeepMlUEASXAKQjIabJ0BQJS+dGkw6FEEIGRhDEG6Zbew5sJ8BrP4srHF67sY2uFwq3eVpvx/PIHlaFsXRuFMW8iucWipifzoFLDKoiUUJsSCxX66mp0skbMpbOjdJM1JTiEkPekFEpm6iUTfzKM2MIggh/u3IPths8sDpCUyRY5i92Osgb8v7cxPsJwghtx/+Fe3Oj4+3PcHS9EK4X7M93bNoeXC/c/0yIdk9PM03h1OqUkM+YKuqYKuo4NZmF4waUEBsyiszAJYarl2egKRJUhQ4MkGPnM8Yc36ce1oQcJ0qIkdTwff8MY+xlACusQooAACAASURBVKnIMP32lRmcns4lHQYhhKSW2w0QRBGq/z97dxsbV5beif1/7kvdW7fIKlIsUuRQotiSukU11Rbtnsiz6VFGWHs9hpHA7myS9QK7O5MN/GERB7HzxbGRDTYJ4Cz2Q9YfJsAuEmNnDCxmEdiWJ7AHaXtmLFstu1sz3SONxBbVkqgSRYpvRbJeb91b9+XkwyXV8yLqrUneU1X/H0C0RiJGj4p16557nvM8z2oLlWYbN+5XsFRuYWnDRbURIohibNXbaEcxXD+C7NDHiLmHdRi6wK2FGrIZHbal40jRQTaj44v/0SgcK2m16NgGnCdUaVBn++DOFvxA/S4p588M49XxfhQLFgxuqHcF29QhTeDN1w4hjiXefPXJH6KawBOrwHRdQAC7Ju+lBCIpEceAlJ9UiIWxhJRAHEvEMvl1O4whZVJJllSWSYSxRBRLrG158Nrbsx7bMVYrHspVH+tVH7XtauEHbHX2TIWcgYnDDmxu+BL9hL9//ijqrQD//f/5fQRR/PhAE3W382eGcXgwGW/Bc2jdrVz10eKcQCLaxoQYdQwhRJ+UchRAJu1YnseRooNXx/vTDoOIqGNF25ujNTfAZq2N+eUG5leamF9uwPWjH2nB1clqbrLpsllvP/69rXoAx9Lx5muDyDsxRgdtWGZ3/HvpR2012ohi9X+2xYKFwf4MLG6mdw1te/dvsE/tpfXCmgvXC1FzA7h+BCuTVNCGkUS8XTVMz2YaGg9VEO3iyHAWYWTzHtdjigUb48Usf+49wA9iBKH6620iOhhMiJHyJicnbdu2R6WUMwAupB3Ps5yeyGPqaB4/8+ohHB/LpR0OEVHHqLshbi3UMPewhlsLVXxwZwtbjbaqA5D31cJaMlPqt3//B9B1AcfScXysD8dHc3j7raMYL2YxXuQcp072wZ3Njnh/FwvJrLtf/+VXuWFEqZgYcZ75PfXtZNmD1SaWNlpYKrcwt1BDzQ1w9fbmAUSpLscyMDHioFj4ybaXRJTYaf36B7/1OdwsVfE/ffUHSrbipr1xbmoI504dwttvHeF6ukfstGtWUEVKWRJCeGkHQtRLmBCjTmADmJRSDgihfh17f9bkKSMiomfwgxjtIEa9FSCMJNarPppeiNJKEw9Wm9vzZCJVH1z2lK6Lx+3DnkTKZBZPoxWiXPUx97CGci15fSxTf9zCjjPHOku9FWKr0X72N6bMsXTk7GQu6pPa5hGpQNcFMoaGvGM+3sCOIgnXDxHFSftF14vgtSO02hEaraTtbrdUGj+NpiVz4HiPIHo2y9RQyJk4PZHH8oaHR5stxNttXqnzZQwNh/ozGDvEyrBeE223YVZQjGSOmJLBEXUrJsRIeZlMZjSO4y8LIWbSjuV5nJ7I4+23jvAUJhHRU5SrPpbKrcdVMhevLCLa3rDsNY6lP/XfHm//2b1HDdx71MDlm2UAwNtvjWO86ODtt44g75jod7is6yR3FuuYX26kHcYzHRvJoViwuK4hpTmWAccCBvszmPqxP6u7AWpugFsLNdxfaWJ+udkxFZp7wdQ1FAsWcjbvEUTPUixYcGwDv/Orr+PilUX88ZXFrmrT3esO9WfwC58dxfk3hnH+zHDa4dABUvUZU0oZSCmbURSpGSBRl+KqmJQnpbQ1TZsEUEg7lqdxLAPHDjsYL2aRd0wOnCci2haEMaQEbj2soeVHWN5M2lktlVtY3myh1Y7QDmKoeWhv/73sv33uYR1L5RbqboiJEQcThx2cHOtDX5bJsU7waKOF+ZVm2mE809REHsfH+tIOg+ilWaaOvAMcH+vDYL+F42N9eP1YHl47wvV7FTT9CAtrTdTd8PFMx25iGhqGCxbnhxE9J1MXKBYsTE3kcb46jPfnNrBRU7+im57u9EQeR4YdnH9jGMdGONqiV3RAQjsUQni6rrM/K9EB4m4JKc8wDDuO42MABtKO5WkcW8fU0TzGi1luRBIR/ZCdtlTX7iUzwT78eOvxjBfCS8+nuLVQAwBcvb2JsycGcPb4ABzLwOggeB/qAMubXkdUiJ2eyOPscaWXYERPlTE1ZEwN/Y75E3928d1FlKs+oijGElpdmhATj6teiOjZTCOpqjx9NA/I5AASE2Kdb+pocsCHlWG9xfVCpWcBCiFCKaWnaZq6QRJ1Ia6KSWnT09MzYRi+DmAUir9fhwsWh7ISESE5ibew6uLuozruPmrg/koDrh/iwaqLMEpmYfkBu0LspXuPGljd9HBnsY5c1sA/uDCBQs7ET73CRIZqylUf5Wobm/U2XF/d62BiJIdjIw4mRhy2S6Sudf6NYQRhjPNvDGOr0cZWI8DlG+soV318cHcTUSzhtzt7j8o2dUyM5FB4QkKQiHY3cThpGez6EVa2PPz775S64jOh1/zUKwMo5Ez82i+dQDbDmWG9xgsitBRebwshGnEcr0gpmXUnOkBKJxiIoigaAJAHYKcdy7NkTO1xu0Qiol4WRRI1N8Dypoc7S3XMPayh5gY9MaslLY1WiEYrRBhLWKaGctVPOyTahR/EqLkBgjBWuoVLztaTqhLL4NB56lo7yd6xoezjlok7lZu61h3tzzVNwLF0mAavY6IX4Vg6HEvHxIgDx9K75jOh1xRyJooFC8fH2CaxF0UxECrclz+O4xCA5/s+M+1EB4gJMVJaHMdfllKOapraD3Bvv3UEx8f6WB1GRD2nHcTwgwiXb65jverj2x+uou6GuPWwlnZoPWknEfbbv/8DFAsWzp8p4tzUEM6dGkKxYDGxoYD5lQYu31jHVl3tg6Bnjw/iVy9MYPSQ8meSiPZEv2Og3zHw67/8KgDg18uvolz1cfnmOuYWari1UEO55ivdeulJLFPDkaLDQ3tEL+n8G0mLvdMTedx6WMPvfv2j7fVvZ30W9JqdduL/6OcmMTHipB0OpaTlRUofytQ0rSWl3MpkMuoGSdSFmBAj1Q1omqb8JPfxYhbFQibtMIiIDkQUS7SDGJv1NrYabVQabdx71EClmVSBNX2u51UQhDHKVR8Lqy7yjokTUR/6bIPt71LmBzHqbqDsaVVdE7DM5FS8Y+vQBU/EU2+yTA19WQPjxezjje+7jxpoeGFHVeHqmoBj6zANXstEn4ZjGxjqz+DMZAHLGx6WN1sIQolYqnk/71WWmcyAOzrs4NhIjofBelw7VDt5LaWM4zgOdV3nBwnRAWJCjJQmhDiLDmiX+PZbR7jQIqKe4XohVrY8vPO9FVyfr+DavS24fqR0+7deVG0GuHyzjOvzVfQ7xuM5l2+/dSTt0HraRtXH3MMaXEUTx5aZtIeaOOzwRDX1tGLBQrFg4cRn+h63U7x4ZRFL5RYuXllMO7znZmV0XstEe2BixMHhQRsnPtOPi1cWcfHdxe2qUa5/VVLcnu2edEg4lHY4lLJqs630IRYpZaDretO2bXUHnRF1ISbESEnT09OjURTZUsoBKPw+nRjJIWfryDsmdJ2nLomoO+1sBC6sNeH6Ea7fq6DRCnF3uYGVzRbaQQyp7sG7nucHEeACV29vIP/QxHjRQT5rYGoin3ZoPSWKJVwvwlajjXK1jSBUcwOtL2tg5sQARgeVP49EdGAypoa8Y+LcqSHUJwLkHRPrVR/v3lyHH0TKnj4vFiwU2CqRaM8YukDeMXH2+AAA4PKNdZRrPpbKrZQj622moUETwM/99ChGBiycmxrC+BDHWRDg+hHqLTUPoQGAEMKLoqgSBIG6QRJ1IWUTDdTzRgEMbH8p69iIg2LBQr/DS4mIulfNDbBUbuFvPiqjXPVx8cpS2iHRC/C351xcndsEAEwdzWO8mGVC7ICFkUTNDbBVD7Cu8EnVvqyBsycGODuM6IdYpgbL1HBuKqk2mDqax9xCDdfvbQGAugmxvIVCjgkxor2iawL9joGZE4M4PtaHctXH/HKDCbGUmYaArgn80rkxDPZn8Oarg2mHRIpw/eRgp6riOPaCIGBCjOiAcReflBQEwTkAx4XicyveeKWAk59RfsQZEdELm1uoY73q4d2b61gqt7C00UKlESCI1Nz0o+d38coihvIWHqy6ePPVQbz52iBsU4emqX3P7XR+EOHBWhOVZjvtUJ7KsXScPppHMc9Zc0S7KRYszJwcwP/2X7+Bb/zNEr7xN2oeFCkWLBT6mBAj2muOrSNjavjyL7wCrx3ha39RQrnq4/LN9bRD6ymFnIlCLoP/6gtHcXTYwZuvDcLQOcqCPlFtBkq3TNQ0rQFgpVQqqf2AQNRlmBAjVR1CUiWmtIE+E8UCN4yIqPvU3ADlahu3FmpY2mjx5GsXWSq34HoR7hTqOHbYQRRJSO6X7rsolnD9UPmksq4L9DsmLFNPOxQiZVmmBkPP4MxkAX/70Uba4ezKMjWY3Bwm2nO6llQkTY7mAADjRbbnS4NpaHAsHSc/04dXx/sx2JdJOyRSTBBKZau4AUAIEZZKJS/tOIh6DRNipKoTAM6mHcRu8o6JfsfA2RODj/uHExF1sqVykvS6eGURS2UXV29vph0S7aOtRhvf/v4qrs9X8LU/L+E3/vPX8Op4Pzd09lHdDXF1blPp5PK5U4dweiLP9wHRc3C9CHMLdaVPnvN6JjoYv/7Lr6LuBnj7rXF8+/ur+NaHqyjXfKU34jvZeDGLt986gnNTQzh36lDa4ZDCylUPS2U37TCeJATQiOOYyTCiFDAhRkq5cOGCUSqVDAA5AMr2IsxlDYwO2sgYPHFJRJ2r7obwgwjlqv+4LWK56qPusoV5rwjCGK4f4f5KE1EsMXrIhgDYPnEfJBViEYJQ3c2xYoHzhoiel5QSUSwRS5l2KLuyTA0mn1eIDoSuC+QdE0eGHZyZLOD+ahNNL1T6IEwncSwdhq5hYsTB4UEb48Us8lluadKPiqVEEEq0gxh+EKHpRaompmMAnqZpfPAmSgHvHqSUSqXSZ9v2QBzHrwghTqYdz25OfqYPnz8zjMF+luQTUee6tVDbrgp7yLaIParaDFBtBvj9/28elqnh3KlD0HUBx+ISca/57QgLq01Um+oO9j7/xjBbQRM9p0hKNH21Z2syyU10cBzLwNREHq+M9eGX/+Nx/Pn3VrCy5eEr37iTdmhd4dhIDv2Ogd/5h6/DsQ1MjDhph0QKCkL5yWHPcgsLa66qldxtACtSykbagRD1Iu52kFI8zxsAMCmEsNOO5WkG+zI4PtaHbIbzNYioc/hBjHYQ44M7m9hqtHF1bhN1N8DSRotVYT3O9UO0Aw0XryxhZMDC3505DF1P5mPQ3vCDWPlrbbzo8LQ10XMKwhjlahuuF6Udyq7yjgnH4vMK0UEydAFAx+vHCpg4nMOX3BA1N8DcwxrWq76qm/PK0YSAaQiMFx2MF7P42akhDOUzKBYsVr4SgKTbSc0NsLzZQqsd4f5yc7v7SRs1N0DdDbFUdlFvKbn2NgAMADj72muv/Uocxwuaprkff/zxXNqBEfUCPvGSUnRdH4iiaBKA+gmx0RxsJsSIqIO0gxg1N8Cl62uYX25wThg9lmzoRvjjdxdxeiKPt6aLsKAzIbaH/DBWvgpzfCgLy+QmE9Hz2DmF7vrqJsT6swZyrPglOlC6lhwoev1YHkByb92Z0wvUmBB7TkIDMqaGV8ZyOHdqCF/87ChGB5XeJqIDVnMDLJVbjw97fvvDVfhBjHKtI64xA8CAlHIGgK1p2hUAZQBMiBEdAK6OSSlhGI7GcTyjaZqS88McS8exkRwmRpztk0ncKCQitbl+iHLVx+UbZdxerOH2Yh3LGy14bXVbPFF6FtZcxFLij68sYub4IM6eGEg7pK7wYM3F6pa6M7MLOROmoaFYsMAcKNHzCaI4SYh5Sp48BwAcO5zjzGOilBULFvKOgWLhBBbWmlhYa+LyjXWUq23celhLOzylWBkNuibwxTfHMJTP4HOnh3CoP4NDeQuHOK6ipy2suXC9CB/c2USl2caN+1U0WiGaXoi6GyKMYmw12ojVHev543QAfUKI1wFMAvg7AILXXnvtvxFCVAHcAHDPMIy7AO7Ozs6ytSLRHmJCjJQipbSFEANQ9L1p6Br6HQOOrfMENRF1hCiScL0ID9aauL1Yx/V7lbRDIoW5fohaMzlteXxMybMpHcn1Q3iBulUkpqHBMjWubYheQBwnrVAjhXffHEuHrjPLTZSmnftrv2PCMjU4lo5bCzX4AQ+n/bid6rrxYhajgzbOHh+AZerIcH3S81wvQs0N8GCtiXLVxwd3NtEO4k6+jgSSfc/89tcoAAghjkgpywACIYQfRVHZtm0l90eJOhkvKlKKlHJUCHEWgJK7cMWChbc/fwSnJ/Jph0JE9FQXryxiqdzC1/7iPqJYKj3jhNSysuXhD/6ihPsrTcwvN9miZg8slZUd6A0AOH00j2LBSjsMoo7SDiIslV3U3CDtUH6CYxvQNYF+x0w7FCL6IePFLMaLWZybGgIAXJ3bSDo53Cxj7mENtxZ6q2LMsQxMjDg4PtaH42O5x2tOfnb1troboFz18dc313F/uYn55QbmHtaVvN/ug4HtIoGTACClRKvVWjl16pQnpfwXmqatzM3NvZNyjEQdjwkxUoW4cOGCvry8bEsp+5CUDytH1wTyjsnWI0SknJ2k11ajja16G6WVJtYqPqJYKn16ndS105e/5UeIYsl5Yp+C60fw2+ompR1bR56bT0QvJJYyqRCL1LvHmrqAyecVIuXlHROxxOOq/IypoeGGCKIYq1seYgkEYcdWwPwITQgILZltaOgahgsWHMvAK6M5fGYoi7EhG1lWtfakOJaQAFY2k/bi91ca2Gq0sbDmYq3iPW6J2MN2+oVOASiePn26GgRBDUANwPrdu3fVPXVHpCgmxEgJFy5c0EulUp9lWaNCiJNpx7Mbx9YxdTTPTSMiUo7rRbi1UMO3v7+Kb324gnLN7+QWEqSAuYU65peb+E/eKKKYz/C07qewsOpidUvdZ9WJkRyOj+XSDoOoowShTGaI+eoluwu5DBxLyfOFRPRDprY7z3zu9BDqboiaG+CDO5vYarTxB39egh/EKNfUXT+8CNMQyJgaZk4MYLAvg7ffOoK8Yz5+Dah3eUGEKJK4eGURANjh5CcdAgAhxP8opfSklCuGYbwnpXwviqI/ArCYcnxEHYcJMVLCxx9/nOnr6xsVQvRJqd4pSyBplzjUbyUVYuxhTUQKcP3k4eHyzXVUGslw4fnlBuqtEKGCJ9aps4RxDATAx4t1AMDnzwynHFHnKld9VJvqtnkZyJkYLrAtJtGLCGOJeiuEr+B8QMdi1SdRp8mYGvKOiVNH8/DaEcQvCLT8CMubraQDRCNAuerBD2IslVtph/tUpqFBE0nlm2PpmBjJIe8Y6HdMTIw4yNkGxosOZ5f2uJUtD6tbHn4wX0G1GeDq7U0AQDuIwQYnuzIADEgpzwAYMAzj0KlTp7biOL4Ux3Hj3r17d9MOkKgTMCFGShgZGcl4njcax3GfEGqWyBfzFg71Z9Dv8LIhIjW4Xgg/iPFn7z/CVqOND+9spR0SdZEokoiiCHeWGnD9iAmxT2G96qPSbKcdxq4KuQyKec4QI3oRUSyVnWfi2DqfWYg6jGVqsEwNp5x+AMDZ4wNw/QgLq03Mr2zPUVqoPW5prTLTENA1gamj/SgWLJw/M4zhgoViwXo845BodcvDtXtbj2df190w7ZA6gQFgYPvrjJRyBoAnhNgyTXMFABNiRM+Bq2RSQqPR6NN1fUYIMZp2LLs5PZHHxGEn7TCIiHD3UQP3HtXxnWtrWKt4mFuo93pfddpH3729iZslHf/0F1+BLgSsDNtwvaiNmo9GS72HfNPQYBoaxoZsrnGIXkC56qPaUDnJbaJYYJKbqNPZpoaJwzmMDNhJguyzIaJIYmXLg9+OsFrxsF5to1z1sbrlwQsibFR9eO0Iq5X9abWYrB0EBhwTpqFhaiIPy9RxeNDGcCGDYsHCYH8GGUPHYF/yPQM58/GaQ1P0ADQdjHLVx6ONFv7s/Ue4v9pEaaWJctWH3yWz8lJwCEC83U6xMTU19WUAfxkEwXd8319aXFxUO3tOlBImxEgJhmEYcRwPCCGU7dfT7xjIWbxkiCh9TS/EypaH24s1nqajfbfZaEN3BaJIAsyFvRQ/iBAomLTWRHKC287onDdE9AL8IEagcGvijKGxFRlRF9A0Acf6yXv0eDEL14/wYLWJfqcFy9QQxhKuF6Ll7e9zgSbweO1gmRoOD9pwLAPHRhyMF7MYL2ZRLNj8DKIn8oMY1WaAWws1LG20lK927ACZ7f9OAfCklEUADzRNu1ooFPTFRY4XI3oS7u6TEoQQfQDOAjicdiy7OXdqCIP9mWd/IxHRPlgqtzC/3MD/9c17fHigA+Vub6x87S9KGC9m8fZbR1KOqPMslluIFByGUCxkMD6URY7JMKIXslRuoVzdn+qLvVAs2BgvsuqTqFv1Oyb6HROHB59+nrjuBqi5QVKBE8SouQGiWML1nm/2YbFgwdqebWaZ2vb/1jlTnV7YwpoL1wvxj//Vey/0HqQXYgOYBPBbmqb9VhiGf3jq1KlF3/f/l1wuF87OzjZSjo9IGUyIkRLiONYA2FJKQ9UZYnnH5OlpIjpwm/U22mGMm6UqHm0k1WB+oF6lCXW/lS0PdkZHFEsIAba8eQ47SbAolkomxDQhoOsC4I+S6IX4QYy2wu2dLFPjcwsRQdcFLFNHX9aAZUroukAcSzjW831+FXImMoYGxzZg6smagcs/ehFRLBFGEqWVBjbqbWXXxF1qGAAymcxngyCoTk5O3picnAwvXbrE9jLU85gQI1VkAIxuV4op6fREf7JpRER0gL57ewMrWx6+8o07PE1HqXrneyuYOTGAf/CFo9ung3lPfBY/iBBG6l63pqHBsTjcnuhFlaseqs0g7TB2NTpo4dgIK8SIep1jGXAsgzMFKTWuF6HmBvh3f34fN0tVZdfEXeoLACCE+CyAa7Zt/2alUqkAqKQbFlH6mBAjJQghMgBGASiXECtsD4C1TJ2noYho3+0kveaXG5hfaeC9WxtJlVgQg4fpDowHIAbQfsKf2QA0fNKvvWe0t1vtzK80MTpoP7NNDwFNL1K6isSxdAwXLJgGWx8RvYh6K3zcTlZFpq7DMlkhRkRE6YilRBhK3CxV8MGdLSxveGizy0laBgBMSSl/o9VqzU1NTc15nnetVCoxMUY9iwkxUsVOQkw5hVwGjsU+2UR0MMJIouYGuD5fwbc+XMHcwzpqrrqn0LuUByAE8KQ+6wNI1k89lxDzgwh1N8T8cuPxEHV6OteP4Prqbpo7dnJq3NS5xiF6ETU3gOure8p95zAfERFRGqRMnh1ulqq4+O4iyjWfbf/TM7D9NQXgUhzHl2zbLoGVYtTDmBCj1J04ceKklHI87Th2U8iZKOTMtMMgoh7wzveWsVbx8Z1rq1ir+Fiv+GgqfAK9E0kp7wohGgDuSSlbQoglACtSyhUhRCuO40gIURFCSE3TfmK3M4oiA4DQNE0H0BfHcR+AQ0KIjJTyBIA+IcRJKeWoEGIUQBZA1+xKVpttXL6xDscyMHU0n3Y4yvPbkdKtYRxLTxJiBkvgiV6E64fwAnWv7ULOQLHQc+c2iIhIEZv1Nv7q+hp+cL+Kcs1HELLViSJmhBCTUsrsa6+99tA0za9Vq9VocXGxlXZgRAeJCTFKnaZpfVLKrFC0H6FpCFisDiOiA7Cy5WGp3MLNUhXtIOYpun2wnQyrxHG8qGlaQwhxF0BJCFGK47gRBEH4vO0jZmZmBjzPGxBCjEopbQBSSjkAYGB7JmYIoKue/oJQolz1la56UkkcA1Gk7lvA0JM1jqboGoxIVWEkESvcxzipEOPzCxERpaMdxFjZSuZt8plWKTvVYsc1Tcs0m02jUChgcXEx7biIDhQTYpQ6XdcHpJTKzQ7bcWwkh/FiNu0wiKgLJUmvCL/3xx/jzlIdV29vph1St7kEoAzgXSHEdc/zrk1OTjYuXbq0J9mca9eu7QwlLv3Q3/cjpqenZ6IoGojj+MtSylFN0764F393WmpugKu3NzFzYhB1N4BjG9A1JlN20/QD1FpPGkWnhv6sifGhLDfOiV7Q3EINdVe9gwGWmbR573dM9DvscEFEROkoV31cfHcR9ZZ690oCAPyXUkpkMpkLQRDMTk1N/XPbtivbz7dEXY8JMVJBnxAiK6WapyztjAbH4qVCRHsniiVcL8JaxcNaxcN61VdyY62D7Mz7cqWUrhBiE0AbwDUhRBXAYhRFlVwuF166dOmgbzYNXdcRx/GcEKIspSxsV4/1IZmd2ZGDuPwgQs0NkTF1JsSeIo6l0hVimgAMXQNYIUb0QqJYIlLw2UXXdqo+046EiIh61VajjaqbVIaFEavDVLZdnDAcx/GM7/t3JycnvVKp1AbAHxx1Ne7yU+qklCeFEMrOEBsZsDEx4qQdBhF1EdeLcGuhhm9/fxXf+nCFQ4Y/vQaAawDmhBBzUsp32u32yvO2PtxPs7Ozd7d/eW1yctK2bXtUCDEjpZyRUn4JwGSK4b209WobtxZqePO1QVgm59TsxmvHSs8QMw0djsUqP6IX5fohfAVniDm2jmLegmmw6pOIiNLxwZ1N3FlqoFzz0w6FnkHTtFcBHAXwWhRFX7Nt+2uTk5MrpVLJSzs2ov3EhBilTkppCyGU3U3L2QbybDlCRHvk6u1NlKs+Lt9Yx/xyA/VWiFDhChIFVQBUpJQrQggfwHtSSlfTtAUAZSFEOYqiMgDlFvGTk5NhpVKpuK47p2laBUllWxHABSllTghxMuUQn1vdDbC00cKZoJB2KPQp6LqAlWE1CdGLqrlqJsQMjXMBiYgoXUvlFspVJsM6iAFgUAjxuTiOkc1m/2hmZmaR7ROpmzEhRiqw4zjOCEUf3ByLCTEi2jtX5zawVG7h4hUOrn1JFQAlXdevSykrnuf9Xi6XC2dnZxtpB/Ys27PLduaOzU1PT89FUWTHorR7RQAAIABJREFUcTwgpRztpIRYrRVgqeyizcrGjmboAhlTg6prMCJV1dwAUazeYRZdZ8tEIiJKFxNiHccAMADgc0KIU1EUXfc8r4HkmZWoKzEhRqkTQowCOJR2HLs5PGhh4jBbJhLRywnCGEEU4w//ehFLZRff+v4q2yM+vxaACMA7cRxXNU27IaUsSSlLhmE0oigKJycnGynMBdsrm57naZlM5l/quj4qpbwG4CyAGST3RWWrp8tVH3MLdTQ9zr57mmozULpdjKkL5CzOgSN6Ua4fQcERYnAsA8UBmy0TiYgoNQtrLiqNdtph0IvrA2BrmvabUsrN6enpfwagPTs7u5l2YER7jQkxSp2U0pZSZjRNzQc3K6PDsfS0wyCiDiUlEEUSD1abuLNUx1K5lXZInSQCEMZxvIikHeI1IURpbm6utPMNc3NzqQX3ac3Ozu48Kc5NT09XoiiajON4VAjhQfFBxn4QK1shoZIgipVOgGtCQNcEWCBG9GIiRVsdG9sVYoJJbiIiSonrhfDb6q5/aVcGAENK+SoAL4oiW9e5F0rdiQkxSp0Q4pgQYiDtOH5c3jHR7xiwTDUTdUSkNtePsLDaxDevLuPP3n+Ecs1XemNcERUA1wDMAZiTUr7TbrdXSqVS17drmJ2dXQHw1ZmZmT/xPG9ASvmvkVSKTaYb2ZPV3RB+oHayh54tY2roZ1tooudWrqp9L+93TIwPZWGxQoyIiIhezhgASCm/E4bhB5OTk78GwCuVSsrN6CZ6WUyIEe1C3x5KzVPTRPSiVrY81JoBbj2sYWWzBT+IwUKaXW0CaANYwXZCTEq5oGnaYhAEbi6X66mefEEQhLque2EYfrz9W5NpxrObWEpEsUQ7TJJiPDxCRL0gCKXSCbGd5xdFG28QERFR57ABHDIMY8YwjBKAUrrhEO0dJsSIduHYOop5CxmdT5RE9GLe+d4ylsotXLyyiDaraJ5KSnkVwIqmaV/Tdb0yOzt7Le2Y0jQ7O9sA0Jienv7XURTZUspfSTumJwnCGEEYY6veRrnmY3wom3ZIRET7rtoMUHODtMPYVc7WUSxYMPn8QkRERJ/OGIB+TdP+jyiK/i2Af5t2QER7hQkxUsGAlLJPsBSLiDrcD+5XUG0GePdmGTU3QDuIEbI07Id5AGoAbgFY3P76aPv3Stt/TomGbdteq9UqITmdN5pyPE8UhDHaTPgSUY9oRxH8MEo7jF1lDA15x4Su87mKiIjSkXdMzhnuHhkhxJgQYmZqauqLuq5/d3Z2djPtoIg+LSbESAUDQgg77SCIiD6tG/NVPFhr4vKN9bRDUZUHYE0IcUlK+Z7v++9NTk42Ll261FNtEZ/HdqUYTp06VQIwAGUTYpJDs4moZwRhDD9QNyFmmTr6swYMjQkxIiJKR79jskNK98gAGJVSzgghWgDuIRl5QNTRmBAj2oVjGSgO2DA5lJqIdhHHEl4Q4b1bG3j/1gau3t7EVr2ddlgqaW9//bUQYl1K+R/iOHZ1XV8wDKM2NjbWuHTpkro7iwoQQrwD4LiUcibtWJ7Ea4dwfeYziQ6K64cIQolqM9huXfrJCWzH1mGbOkYGrRQj7G5+O4brqXvbMg0NOduExoQYERGlZOKww1mWXUYI8bqUcjwIgrVTp07dvX379h+mHRPRp8GEGNEuDD0ZSi34QElEu5AAokhiveLj1kINS+WW0rNFUhADCAEsA1j0ff+9XC4X7lQ/0XNZkVIOpB3EbmIpEUY8AUp0UKJIIgiTpIwfqF2t1I2iWCKK1G0DpQkBXRNgK3oiIkqLY+mwM3raYdDeyiOZJ3ZESskxB9TxmBAjFUymHcCTZEyNLUeIaFdL5RbmFmr43a9/hHorZCLsExUAi0KIP2JbxD1RQtIykWjPtYMYdTeAYxvQud5RShRLuF6I6/MVXLtXwdxCDTU3wNXbT+9SY5kaigUL48UsxoeyePuto8mvi9kDiry7lWs+ljZaaYexKyujoT/H65mIiNLz8z89iuvzFfz7bz9IOxTaW0JK+U8AhFNTU3+i67o3Ozu7knZQRC+DCTGiXWhCwOBAaiL6MX47QiSBuYUa7q824Qdxr1fIxNtf6wB8AHNCiDUAJSnlZi6XCy9duqTucXrFSSltJL3bqQOZugbLVLdnTCwlolhC8gpVysqWh5YfYans4uPFOpbKLWw12s/Vqi+WgB/EqLshyoaPuYc1lGs+/CCCZeooFiwYumDC5CVFcXLNqErXkg4X/PESEVFaLFODndGRd0z4QcR5Yt1lp/TvTBRFGwCYEKOOxIQY0S5MQ4Nj8YQlEf2o1YoP1wvxu1//CH4Qo1zz0w4pbW0AHoBvCiEWPc/7PbZF3DtCiFEp5aG046CXU8iZCEJ1NwGCSKLpR8haBg8BKeSd7y1jqdzCxSuLaAfxC20kBWGMctVHuZrcmy7fLAMA3n5rHONFB2+/dQR5x0S/w8fAl+G3YzQ9dQueHUtHMc8ZckRElJ5iwcJnDtmYOtqPpY0WlsrqVlbTC3MAII7j/xXABwD+Nt1wiF4On4SIiIiew1ajja16gO9cW8V6xUO9FfZyZZgHoAbglpSypGlaKY7ja0KIyvaf9ewLs9eklDMAxtOOg7pTGEm0gxiSJWJK+ODOFiqNNt69WUbNDdAOYoR7VI009zCpNKu7IYqFDIoFCyfG+tCXNXF8LLcnf0cvaPoh6q56CTFNCJiGBp2JbSIiUkC/Y+Lc1BCuzm0wIdaFhBBjAI5PTU1dAFCam5srpRsR0YthQoyIiOg5bNUDzC838BcfrmB+uaHkhtgB8gCsCSEuAXjP8zzOCds/Z8EZYrRPokjCb8dQuANcT/nwzhbmlxu4fGN9z/+/by3UAABXb28+ni/2xc+O4fCgzYTYC3C9SMmZoUJL5h8bmrotWomIqHfkHQPnTh1KkmHPmH9KHWkUgBfH8QVN0y4hmXtN1DGYECMiInqKzXob3729gau3N3F1bhPLmy202s+e49KNhBB/LaVcB/B/x3Hs6rq+YBhGbWxsrHHp0qXefFH2yfT09EkAfWEYzkDh9drhARvHDnMzfTd2RoNj68/+xpS4foj1qo+xIRuw1I2z2713awPv3drAX/1gDevV/W/DW676qLshVis+MoaGb373EYbzFj7/xjCG8xaKBQuFnAnTYHLlx/lBBNdX7+yHqWso5i04vI6JiEgBjm3g9EQey5seXD/Ed29vYrPeTjssAElL84GciYkRB45tYGIkB9vUcHjQhmloMA2BQi6z6zqo2mgjiJIW1e1QotoMUG22UW0GWFhtwvUjPFhzD/hflYpRIcSXpJTB9PT0HIDN2dlZNX7IRM+g7AYLERGRCtphjJUtDwtrLu4s1dMOJ1XbybBF3/ff45ywfdcXRdEAFK8OszI6N2CfQtOE0i3MwkjCDyLEbJmYqs16G3eW6ljZ9LDV2P99BH97LtlOpZPrhxgvZjE1kYdl6uh3TFYN7iKOJaJIvRdHEwKWyZaJRESkBl0T6HdMHMpncHjQRkahQzYZQ0tmbhYs9Dsmjo/m4NgGjo04sEwNGVNDsWDDMp8cc7nqww8iLJVbyUzxqo9yzYCd8bGlSNLvgNgAjgEoRlFke56nzg+Z6BmYECMiItrFV75xB0vlFi5eWUw7lLRUAFwTQvwVgEu2bV+7du1aJe2gekEURb8lpfxc2nHsxjJ1ZEwN/Y6JfsdMOxxlFQs2HFvd5XY7jFBvBUpu8PeCnftLUoG8kWocS+UWrs590tLo9NE8+h0Db3/+CPKOiamjeeQdE/2Ouu/ng+D6Ieot9VomGrpA3jF23bwjIiJKw/kzwzh/ZhjDBQvzyw1cvLJ0oH//znrm537mMIYLFs6fGX78HPOyigULADBedHb9nmRua4BbCzVcn6/g+r0tPFhz4fpd11RFAPgVKeVZ0zT/BwDX0g6I6Hn09hMNERHREySnvmIslVsoH0D7KsVEACSAuwA2kSxqS7quV4IgUK9PVJc5efJkHkAeQD+SU3dKMg0Bx9Kha6xGeBpdAwyFX6OkQixmhVgK/CBGwwsfb5ioprndFnB+uQnH1uEHMQb7TAz2ZdDnGDB0DXnHhC4ErEx3JmHqboggitFohWh6IVw/wnrVV3YzS9cFNKHu5w0REfWusUNZAMB4Mfu4qmo/6JpAzjbQ7xjbB3r6kXdMjA7aKOQy0HWBg7hVWqaGyDZQLFiYPJxDFMXI2Qaa22uJIIxRbaq3/ntJthBiQNf1gZmZmQEeoKVOwIQYERHRj7l8c72XK8NaAEIp5b/UNG1lbm7unbQD6iWmab4ex/HPxnF8SggxmnY8uynkTIwPZWGzGuGpbFOHgLob1K4foVz1EYRMiB20ctXHvUcNZe8zC9uzL249rD3+vfFiFuNDWfzMa4MY7MvgZ08V4dg6JkZ2PyHdyW4t1LDVaOODO5uYe1jDrYUaXD9SsqJS1wQcy+DcNyIiUtJ/+rnPAMDjQ6f7tf7J2Qamjvbj3NQQzp06hNMT+VS6WexUkU2MODj/xjAAYG6hhpob4OKVJZSrPi7fXD/wuPbJqJTyMIAZz/MA4FK64RA9GxNipAIPgAYgk3YgP8wPItRbISIOUSDqGQtrLh6sNfHerQ0sb3pph3PQFoUQS3EcX9U0bTOO4+tBEHBG2AG5cOGCUalU+jzPmwJwQQih9Owwx0pOPHLz9elUf3241knP1dsbmF9uph3GC6m7IZbQQnwbyFo67i+7sEwNxUIG/Y6JvGOikDNhGhrGh7IwDQ0DORO6LpSrJt1JbK1XfURxDNePsFVvY6vRRrUZIAhjzC834bUjPNpMqsXbQQwZpx35k+m6QN4xP1ULKCIiov12bmoIK5tJdfxSuYWljRaa3qdbixYLFixTw7lTQ8g7BqYm8hgfymK86CBjqjPreGdm2c//zGHU3ADHx/pwa6GGuYe1T/0aKEBIKc9KKQtgQow6ABNipAIPyXtRqYRYe3vYeNjZNyUiegEP1pq4fGMd79/awMpWbyXEhBBLUsr3pJRf9TyvVCqV2OrgAJVKJcO27QEp5RSACwD6Ug7pqRxbZ0LsOZiGgBDqvkZc66Tn6txGx7XkrbkBatsbWDt0PWmfOl50MD6UxbHDOTiWjnOnhuDYOrIZDRbUa6/qeiH8IMb8ciNp3VTzcH+5ifnlxvaMjxB1t3O6BBuaQD9niBERkeLOnTqEctVHFElcvb2JmhvAD6JPlQwazlvJ3NO3xpM2iRP5PYx473wyeyxpG3nulI+LVxaxVHY/9WugAk3Tzkopj6UdB9HzYEKMVNAAYEHxzT8i6l7LGy386fvL+MH9Cm7MV7BZb6cd0kFZAbAA4OtxHH9smubHAFbGx8e9UqmUbmQ9ZHp6ui8IgtNSyt8RQrwmpewDoM5xxico5i2cPpqHYykdZuosU4dlJgnEKJbw22qVl1QaAR6suvDbas5E6kZeO0IsJS7fLCMI1Xo/vIw4lnD9CAurTaxueph9UIWuCXz7+6vQhICd0ZAxNVimjsMDFuyMjqxlwM5oODxowzQ0mLpAIZeBaWjIWZ88njq2/szPGK+dzMBzvQjtH5vHUW22EUTJnBKvHWF1y4frJ7PA6q0QYRTD9ZKfRxDG8NoRvHby36jD5upp2zNTTJ0JMSIiUlshZ+L8G8M4e2IAv3phAncf1dH0Qly+UQYALKw1EYQxKm6AIEzu0VZGg64JDOctOJaOicM5jB3K4jNDNqaO5pF3TIwXs9B1tQ7g7MY0BIoFC2+/dQTnzwzjO9dWsVbxlW2l/TyklCcBhNPT0zMAGrOzs3fTjoloN0yIkQpC8L1IRClqtZNT4ovrbq9VhnkANoUQ14QQpdnZ2VLaAfWiZrNpZDKZAoAZKeUAOuCeaJk6+h2zYx4607JTFaNadcyOIIrhdn6Llo4SS4kwkh1XHbYbKYEoknCjCK7/SWJ1CZ9UkVlmkhQ7NpJUj/U7JhzbQBjJx38WRtsD6H9sPtezrp1WO2l9mJwwj3/kdS3XfPhBhKWyC9eP8GDVRb2VVLmpOgvsZQmRvFaaop81REREO0xDQ7FgPa6YskwNNTfArYU6AKBc9eBrAroXIhLJvVrXxPa8zGQdcXjQxuRoDsdHc6nNCfs0NCFgmSKZz1rMYn6l0Q2dN/oAIIqiAV3noUlSm/IbLkRp8YMYtWaAKOr807tEtLvf/v0fdNtQ2+fxRwAWfd//F7lcLpydneWssBRMT0+PRlFkx3F8EckDxGTKIT23I8UsfnbqEBybS8nncaSYTTbkPTftUH5EueqjXPV/JJFB+2thtYWaGzz7G7uIH8Twgxg3S9W0Q+lauqah3zHZMpGIiDrOTovDc1NDKUeSnrffOvL4v3MLNfzu1z9CvRV22ppRAICU8n8Ow/A6gGspx0O0K+5iUOqklKEQQrmdmDBKHt55aJqoOy1vtNBqJ6fJf7jFUpeKAbQBlAGUpZS3NU1bzuVyYbVaVe7zt9udPHkyDyAfRdHrUso8kmRYNuWwnotpaCjkTOSyBnRdgLUIz8exDKh8vsZvJ9U9bIG5/5p+iHpnbW5QBxACMHQBIfipTERE1KksM3nWOj2Rx8N19/G+ZCd1cxBCDMRxPDAzMzNQqVS8UqnUUy14qDMwIUYqaEgplXuAc/0I5arfFfMdiOgn/en7y5hfbvRKZVgbybywbwgh/iSbzV67du1aJe2gepVpmq/HcfyzUsovA5gUQgykHdPzKuRMnD8zjJOf6YNjcRn5vCZGcihXfXy8WE87lCda3fKxsOpiaqI/7VC63sJaE0vl1rO/kegF7LSRyhhqPU8RERHR8ysWLPQ7Jn77H76Ob159hG++/wgP1tyO6uYgpZwRQgjP82Zs2y4BKKUcEtFP4E4GpU5KWVEtGQYk8xDaYTKom4i6x/xyE/dXGrh+bwtLGz2xKTkHYEVK+Y6maTcBlCqVCk9pHbDp6elRAIeiKDoXx/E0gDMARgHY6Ub2YrIZHcfH+jDQl0k7lI6Sd0y4fph2GLtar/pY2mgxIXYAgjA56Uu0l3RNIO+YyHT+/BEiIqKeZujJPf3s8QFYpoY/fe8Rljc9rHfO/FkBYCCO4y9omgYwIUYKYkKMUieEqEDB92IUS/hBBObDiLrL/ZUGvvXhKq7NV1DunEXlpzEnhJjzff/fAGDLgvSMhmF4EsCXkMwKm0w1mpdkZ3S8MprDIBNiL6TfMVBzlVvqPFau+XDKbJd4EIIwWV8S7SVDF+jPGrBMXsdERESdTNcE+h0DZ08MYmoij1sLNQRh3EkJMQAYEEJ8AUyGkaLUfTKnniGlbAoh+tKO48c1/RB+ELFlIlGXWN5o4U/fX8b1e1u4Nl/p5rlh7e2vd4QQK0KIfxNFkTs5Odm4dOkSP9AOyPT0dAZAJoqiL8ZxPBqG4ZellFkhxDg6rCpsR7Fg4chwFm++NohshpuuL6KYt9BoqVshtrrFPDkRERERkSpMQ8DQDfzjvzeJhhvin3/1Brx2hNVKRyTG+gDMSCn/cnp6um92drYFgCfCSBlMiFHqhBChlDJSrW1iFElEkUQHza4koqdotWPMLzewtNHq9sqwGEAIYFFKWZqbm7sJAB9//HG6UfWYZrOpATAsyzoihJgE8FnV7nMvyjI1ZC2d1WEvwTI1mAq3MvODSOmWjkREREREvUQTAhDA5OEcwkjCsTrqQKKBpErMaTabxoULF8SlS5fSjonoMSbESAWlg94k1PVk8HQ7ePYch/L2XI3xoewBRUdEe+23f/8HKFd9XL65nnYo+8kDsCKE+BqAr3qet8L2iAdvenp6NIqiX5RS/iKALyI5HdcV661f/+VXUSxYaYfRkc5NDcFSuKrugztb0DWB//2fph1J9ysWMghjFuvS3kpmiGXYMpGIiKjLOFbyKPmV/+6zmFuo4Xe//hHqrRA1V/mON0JK+XcymcxvrKysfBVsn0gK6YoNGup4nqZpbXmAw7qkTGaEPU/1l9eO4Hqs7CXqRMsbLbTaMcpVv5tbJALACoAqgBtSygXDMLxcLscd1wNy5MiRbKFQ0Nvt9skoikaklFMAhpGsszq7LAyAaWjQRNIysZAz0w6nI1mmhoyhQdcFZAzEig0ojbYXRK4fQRcCVkbdarZOZ2X0xxsbRHtFCAFdF9A6/o5DRERET2KZGvodE8fH+vBgrdkJCTFIKS0p5UAQBFz8klL4hqTUaZq2IqUcOMi/M47lcye5Vrc85J0mXh1XbswZET3Dn76/jPnlRrdXhkEI8Y6U8q7v+18B4N2+fZuVYQeoUCiMA+jTNO1fb9/PZtKOaS8VciYsU8P5M8Nph9KxigULg/2ZH6pOVysh5reTNdHCqgvH1jEx4qQcUfcaHbDhKFwtSJ1J0wDH1mGaTGYTERF1o2LBgmVq+LVfOo6LV5awsOamHdIzCSFGhRA/haRrCpEymBCj1MVx7Akh2mnHsRvXj1Bvca4GUSeZX27i/koD1+9tYWmjlXY4++kqgC0hxJ8IITYBeJOTk2GpVEo5rK6nTU5OZjKZzKQQYjIMw88DKAKYBGCnG9reOz2RZ6vEPWAaAsMFC1v1AH6g5rJnfqWBof4ME2L7qJAzkTE1WKaGWAJByGJe+vQMTSDvmMgoPKuQiIiIPp2MqWO86ODV8T6cPTGAe48aaKi9XzmA5Bk5Pzk5aXOkA6mCCTFSgQdAzZ0hJAmxTihFJqJP3F9p4FsfruLafAXlqp92OPtGCPFdKeXdW7du/cnO7zEZtv8uXLiglUolG8AUgC8A+C8AHEk3qv0zdTSP42O5tMPoeBldQzFvwQ9ibDXSjubJ5pcb8APOTN1PhT4TuchAxtQQxRKB0nsY1Cl0XUN/lo/2RERE3cwyNYwXs3j1SD9WtjysbnqdkBArAMgjOTjKhBgpgatmSp2u63fjOB5MO47drG7x85qoU5SrPi7fXMfffrSBv/mo3I1zwyIALQDfAfCXYRj+FYDu7gepmOnp6Znl5eVjlmX9IynlESSJsK7sJejYyayjN18dxJnJQtrhdDwro2PicA4NL8RSWc3K1bmFGqJIrXaO3cYydVgmcP7MMDbqbbx/ayPtkIiIiIiog5w+mkcxb+HeowbCSKJcU/sQsKZp5zKZTB+A/5B2LEQAE2KkACllQ0rZEkLNKdB+EMH1lT5xQUTb/CDGUrmFlS2vWyvDJIAQwLIQ4lpfX9/9a9euVdIOqpdEUTQAYAzAZ4UQA0hOvXUlQ0vaug32Z9gycQ/omoBj6TAVbmlWcwOuefaZriXr3WLBQhQz+UhEREREL6bfSVpw99kGrA6YHyqEOARgNO04iHYwIUapm5ubK01NTU1KqeamwK2FWkfcYIh63Ve+cQdL5RYuXllMO5T9UgJwTQjxm7ZtV5gIOxgzMzMDnucNSCn/WwAnpZS/knZMB+WXzo3hVy9MYOIw2yXuhcE+Ez//04dRd0Ncv6fm5Xv19ib8MMbSRgt5x2QLtn30pb/3Cm6Wqvibj8poBzH8gLPE6OX0OyYcS087DCIiIjog1vY82n/2n51EzQ3wT/7V+2mH9DRCSnkWwDiA30s7GCKACTFSRBRFsaZpHpL3pFLvy51h51EsIQBompqVbES9qlz1H1eGdWlVWANJVdj3pJR3DMPwgoBTZ/bbyZMnLQDDvu8fkVIeEUIckVIW047rIJiGhkLORCFnwrEN6Lzt7QlNE3BsA6ah9gsahBLlqg9dE0yI7SPL1NCXNTBezKJcbcPvzvsXHQBDF3w+ISIi6kGOnRyIyTsmwiiG60cpR7SrPiR7GkRK4FMuKcEwjHYcxytIWk8p1X5qZwaR64XQdQHH4mVDpJLLN9e7vTLsLoCK7/u/lsvlwtnZ2UbaAfWIYV3X/34cxxcAXJBS9qFH1k2FnInzZ4bxU8cHMDHipB1O17AzOiZGHBRymbRDeapqs43LN9ZxbmoIo4N22uF0rWLBQhhLvP3WEbx7s4zLNzgOkl6OY+mwM+xmQURE1GsmRpJOHlNH+1F3Q9x6WEs5ol2dABNipJCe2NihjtCWUq4IIQwolhDbUa76sDM6E2JEiljZ8rC65eF7H2/i4Xor7XD2w6IQYgnA/wvgEQAPAHtq7aPp6ek+0zQNz/N+RUo5DODvApgEYAPoid3GvGNidNDGuakhjA9l0w6nqwgBWKaOwT5zuyrIV7JNXqMV4vp85fEDNu2fPtvAzIlBVBoBylUfD1abKp/sJSIiIiIFnZ7IY2XTUzkhlgFgTE5ODvCQL6mAO/ukijaAnQoxJa1XfeQdE2PcICRSwuqWh2v3tvDd25tYWHPTDmfPCSGWpJTvGYbx/8zOzt5NO54e0ed5ni2l/BKS+9FM2gEdtH7HwOghG+dOHULeMdMOp6toQsAyBQb7MxgfyqLuhmomxLz/n727D47jzu87//51T08PBoMnckiCAgVC4BO0lJa0VqF1J8uRvevIt7k6R07qso5TjpMqX1zlpJxc1eXqUpe6S13V+vxP1pcoVbnbS92u7rbWufKZVipeR9auQ62W3hVXD5REECBBgiCIIYbAAJjHnu7ph9/9MQBWuxYlUgTRPTPfVxVqtyRR+kgcDHp+39/3+w24eL3MmRN7447S9XJ9KU5NDlOqeBTXm6xWPCmICSGEEEKI+zL16CBpK9H7RLdGZAw3Gg2X9loIIWIjBTGRCL7vNw3DuA7sjzvL3bw9t8Eje/uYGh+MO4oQPa3S8Hn/Rpnvvr/K6++vsFLuur0rRaXUq1rr76ZSqe9WKpVC3IG63cmTJ0eB0SAIflMpdYR2Iawnn5F+9ecnODBikx+yScnysIciP2Tz+PggiysOVcePO85fEEUaxwu4vdZkdrHK+IGsdMc/ZE8dG+Gx0X5GBmwKJYdX3yrGHUl0kPygzZBcYBBCCCF61lPHR0inDbIZEz/Q+EHyLt0BpNPp00CJdkOEELGRT7ciEVKpVBhFUR1I3snQpo16S27LC5EJelVrAAAgAElEQVQAfhBRqngsrze7sjOM9mjEBaXUvHSG7Y4wDDO0O8JOaq2fIMHdyg/b+P4sIwNpbKsnJkTGwrZMBrIWZkILjlpDGGrcVkjV8QlDHXekrjeSSzOSa3cOBmEyDzBEctmWQTol79lCCCFErxrJpRnMWpiGIlTJfXbXWg9HUeTGnUMIKYiJRNgshl0EpuLOcjezi1WSeXQlRO+YXawyc6vKl795mVYCR43tgH8MLM3Ozv5B3EF6wcmTJ48GQfBbURQ9o5R6Ju48cXrh6VEOjGT4wlMH4o7S9cb29nHmxB6+8+4dCiR3/+GFK2sUSg7/9Fc+w9S4XAjaDb/6+cMAPP7oIIVSk7Pnl6g1g0R2EgohhBBCiGQYzFoc3t/Pi88e4r35Mu9dL8cd6SdtHaeeMk1TFhWL2ElBTCRCq9UKMplMOYoiV6lklp1qTkDDDQgjjVLtXSBCiN3hBxGRhrlCjaUVhzDSRMm9+HQ/os2vAtAElpRSq/FG6m4nT55MNxoNw7btJ8IwHAcOGYYxqHV3vKDul2kqUoZidE+G8X3y2WQ32JbBYNbCShmYpkpsB5bnR9vPPo4XkrUTvZegq+SHbDTwxMQQKxWPlbJLpeHjB1Ei984JIYQQQoh4pUzFSC5NXzq5z+yGYWS01ulP/iuFeLikICYSYWJior6wsHDRtu3EzpGduVUlmzFx3ADbMklbUhATYrdUGj6eH/F7f3gVz49w3DDuSDulBbiGYfw/Wutr0hm2K/ZkMplMFEVf1VrnlFJHe7UYBtBvpxjIpvjimUc4NdmzkyJ3VX6ovaNtz0CarG1Sc4K4I32kUsWjVPG4UXToz1hMjQ/EHalnPPfkPsJI84WnDmzf8n3jg1VKFY/CWnK7CoUQQgghRDwG+lJ87thI0tdKjCqlSnGHEEIKYiIRzp07F01MTLhAHSgDORL4+nS8kJlbNcb29jGW74s7jhBdz/MjWn7EufdWKG641JpBt+xXiWgXw94yDOPtKIq+l0qlEnshoBucPn162HXd4SAIflEpNaqUGgV69naaaSr67RSnjgxzanKY/KAdd6SeM74/i+MFXJhdjzvKx7p2u0YYRVIQ22VKtffNHd7fj22ZjI5kcLyQC7NrVB2f2Vs1PD+UjjEhhBBCCIGVMsgP2QxkU9iWgR9oooRd/NRajyqlbsedQ4jEFRxEz4oWFhbcEydObBXEMiTw9dlwQ2YWq9iWIQUxIXZBy4+oOj7n3lthZrHaTXtUItqdYW8bhvE1wzCuTU9P1+MO1c1c1x0GJoBf0lpPAaPxJopXylAMZFOcmhzmxWcPkR+SgthuO7y/PaIy6QWx67drVBot/ubz43FH6SmGUtiWYnx/lvH9Wc6c2AO0b/8WSk0KpXanmBTEhBBCCCHEVkFsMGuRtgyCKISEDdZRSh1QSu2JO4cQiSs4iN6mtS4C7ymlcrSLYolSb/q8M7fO/mFbRksJ8RBFkcb1Q/7s4h1ee7vI+zfKVBpdUwyrK6XmgH8ZhuHlzWKYzMB6SI4ePbovlUr9rNb6Z4GfBcaBbMyxYpUfspk40M/ffeExxvdnyQ/ZWCkZA7zbjh/KkR9K8/JrC3FH+Vjv36hgpQxKFQ8rZTDUb8Udqac99+Q+PD/iuSf3Mb9cZ77Y4IP59s/ImVvVuOOJGOSHMwzlerbhWQghhBC0L1P1Z1IM9VvsG7JZXnNphgmriEFOay3dBSJ2UhATSePS7hBL5EKNINRs1Fq4rcT9UBGiq2ggDDUrZZeZxer2DrEuEWitK6lU6qJpmkXpDHvobK31IeA4cDruMElgWwbDOYupRwcZzFrYlhF3pJ400GeRsCkmH2nrMkIXvQd3tK1uzrF83/b3bqHkJG4kjtg9tmVgpeR9XAghhOhlSoGpFOmUgW0ZqGQ+GqS01mbcIYSQgphIFNM0i1EUXdRaP6tU8m6rVx2fC1fWOX1khJrjk82kMI3k5RSi080v1/m9P7zKjWKDwlrXNE8VAVcp9XOmabrT09OyM+whO378+P9Ee0zir8ebJBnyQza2ZfDyP3kG2zJkTGLMpsYHARjIpggjjeMm+7LNS69cZfJgjt/44pG4o4hNU+ODTI0P8uLPHALYHqV49vzS5v93KFU9KWYKIYQQQvSI/JDN1KNDrFZaSfx8MayUGp6YmBgG3IWFBTfuQKI3SUFMJEoURQ5QUkolejZawwsoVTwOpgzMtFxuEGInFUpNltddNuotml7iHuA+jQAIlFJXtdbrpmm6QCvuUN3s+PHjY5Zl9fm+P6GU6uldYdDuHrAtk2OP5Bjst6SbIGFGRzI0vRDHTXbxv1TxGOpPU3N80pYpnYUJZFsGg9kUkwdzDGZT5IfSLJWaNL2QjXoLP4i6afywEEIIIYT4CZZpkM2YSb68r9LpdKper8uHCREbKYiJROnr61t0XbcaRVEliR1iWxZXHL57qcQLT48yKgUxIXbU1s32d+Y24o6yU+pAOYqirxiGcVE6w3bFXwuC4KhS6tfjDpIE+SGbsb19/MO/doxjYwMMZGUHVJK88PRBCqUmS6WluKN8rDculShVW/z86f2M5bOM5WX8f9Lkh+z2reDN7kOAt+fW2ai1+M67K5QqHm9cWo0xoRBCCCGEeJiGchbj+7OJvbymtTZbrVYunU4HgBN3HtGbpCAmEqVcLrvDw8PlZrNZpr1LbDjuTB9lo9bixnJddokJsYNmF6tUmwEXrqxTc7riBntAuxj2A6XUm4ZhXLNtuxx3qG52/PjxKWBKKfWzWuvxJF+s2A25vhRHHsnxxMQQT0wMcXBPH7YllziSZizf1zEj7bZGR58BKYh1iEf29DGSS6OUot4MeHx8kKrjU3V8ltdd3FbI/HKdSIMfdMbrUAghhBBCfDTTUNiWiZHQz8JKKQPIpNNpqUmI2MiLTyTK5vxYd2pqqqy1Tm5BrN5ifrmO2x3j3IRIhJlbVQqlJhdm1+KOslMCoKyUehP4WrPZLM7MzMiM7IdrCvgl4GdlVCLkMilOTQ7z3JP7eO6JfXHHEXcxtrevYy4B1JyAC7NrUgzrIAf3tn+vJg/mNnfVBZsdiQ7vzJXZqLdYKjmEkcYPYg4rhBBCCCEeSMpQ2CkDI7kjEw3LsjKtVktqEiI28uITiaS1vgSEwETMUT5SqeJRcwJmFqsAPzaaRghxf5bXmtxed/mTC8tcX67HHWenFJVSVzfHJF5rNpvFhYUF2Rv2kExOTo5blvUrwDObX3tijhSboX4LK2Xw33xxkuH+NKePjjDULyMSk+zxzWeIxx8dZLXqUap4MSe6u4YbMHurxttzG+SHbD772LC8vjqIoRTZTIrxA1kO7Mlw/NAgQaj5Gz/7KA03YKFYZ7XSolTxWFxp4LghM7eqcccWnyA/aDMko3CFEEIIAWQzKfJDGSwzmQUxpZSplMr19/en484iepcUxEQiKaUqWutS3DnuxvMjPD+i1myPnBFCfHrNVsRGrcXyukuh1Iw7zk5xtdbrhmFctG27LJ1hD1cqlcpqraeUUhNAT3eGWSkD2zKYenSQwWx7frxItoGsxWDWYiCbotpM9jNFGGmqjk+53i6ayIi9zqIUmEqRtVNkbRjJbZ1D9FNzfDKWwUC2iW0Z1Bwf00j261G02ZaBlUrmoZcQQgghdld7ZGJyO8S01sowjFQYhslcciZ6ghTERCKZpvm9MAwvaa1/O+4sH+ftuQ2WSk3OTO2NO4oQHcfzI0oVj7Pnl/j9czdxumMEaRFwlVI/Z5qmOz09XYw7ULc7ceLEV4BDwN+IO0ucTh0Z5tTkML/87CHG8n0MSLdARzmwJ8Ov/cIE37qw3BEXA974oMSbs+t85TdtTlnD8nrrAgNZ667PszXHZ2axSqnqsVrxmF2sUXV8bpccHC/k5kp37kMf29vHYNZianyA2Vu17ckQQgghhBBCiM4lBTGRSEEQNGm/PgNAAWa8iT5aueFjGoow0ihI7A0MIZLG8yMqDZ/ZxSorZZcw0mgdd6oHEm1+zQFrpmm6gIxIfIhOnjw5GoZhRmt9COjJBVm2ZZBJmzyyt4+jB3Mc3t9PNmNiJnQ8hrg701AMZi0y6fbvX5Tw98RIa8JIUyg1GeizOHUkkStfxQ4xzfbrM9Lt16rnRzhuyJ6cRbMVkR+y8QONH0bbP88dLyCMNF4rItLtP9YKIrTWeP7udxYaSmGlFIZSKAWZtIlhKFKGwjAUmbSJZSqslIGVMjAUHBjJkLVTHD6Qpbghjd5CCCGEEEJ0AymIiURKpVKFRqORsm27Tvt1mos700f54EYF01A4boBptkfQCCE+WaniMbtY5cvfvEytGeC4Hd8d1gJc4F8qpd6SzrCHz/f9F4AJpVTPdoblh2wmD+b4jf9ikrF8lrF8X9yRxKfUn0kxNT7II1fWydomjhcShsmtiPlBhB9EvPL9At/9YJV//Q8/F3ck8RBl7dRd9+WGkcZxA0qVdveY4wUEoWb2Vq3dPXanQcuP8PyQUsXD8yMKa7vfBWmlFPlBG9tqj5UdP9BP1jYZyFrtotf+LPuGbPKbX7Zl/Fjno+dHfP/y2q7nFkIIIYQQQuwsOb0XSdWi3R1WBLIktCDmBxGhUrw3X2ao3+LJx+SGtBD34lsXlrm91qTWDPD8ji6GRbTfr94yDONtwzCuWZZVjjtUN5uampoAJqIoen5zZ1jPMM12N8ORR3Lk+iyeeyLP3sE0Y/ksg1l5pOtkSoFtmYzl+zh9ZIT358tUGsnf37S85lKu+8wvN+hLGxzcK0XZXrP12h0eSJO2TPyg3RE22J/GDyKemBgi2Owcc9xwew9dpDVBoPH8EM+PNn9d++8Zad1+xo70PReGP1y82ip6ffjPmYaiP5PCNBQpUzHUb2GlDNKWgWUaDPdbZDMpsrZJNmOSMmSthRBCCCE6TxhpvCAkipJ7uU6IuMnpiUik6enpFsCJEyeKwDAwHm+ij7a1TP7i9TJj+T4piAlxj/74zds4XkjVSf6B7yeIAHezGPY14NrFixfrMWfqdhNRFP1lpdTzwETMWXZVylCkLYPPHB5idCTDl54fl+7kLmEohW0pxvJZTk0OM79c74yC2Hq702d+uc7IQFoKYj3IUIq0pUhbaUY+dH1t8uDH/7qtzrKaE1B1/O3Osq0/13CDzc6yexuv+OEO2cGsxcCHLgmM5bP3/i8khBBCCNHBgqjdmS/1MCHuTk5QRKIppV4FJrXWp+PO8nFefavIZw4P8sLTo1hme/eAEOIveu2dIisbHosrTrfcWLqmlPrdMAwvG4ZxbXp6evfnQPWIkydP5oCjQRD8olLqbwKjcWfaLVnb5PD+fp4+sYenj+/hsdF++jMpspkUsi2suxw5mGMkZ/GDmTU26q2OGSf71T+Z59hYjsP7s9tdNkJ8HEMpspkU6c3usjDSbC3O0xpCrYki0Pe4TO/DHWGmqTClw0sIIYQQPcj32135CT5vCbXWdWTnuoiRFMRE0hW11olvuypuuIzuyRCGGqmFCXF3KxseN1caOF4Qd5SdUjdN86JpmsXp6WnpDHuILMtKua47rLUe7bVRiSnTYCCb4tF9WZ6YGNrebyO6T64vhZVSZGwD0+iccuf8cp2sbeL5EbaV2A/fIkGUAlOpjnqdCyGEEEIkndbtkdMJfiLXURQFvn+PYwCEeAikICYSzXXdP7Jt+xng7wOZza/EqTk+88t1vv7aAmem9nLmxJ64IwmRKBeurHNhdo2z55colLqjiUop9Xe11sXp6emLcWfpdlNTUxOO45xWSn1FKZX4SxI7Yavo9Tt/77MMZi2mxgfjjiR2wdbuo7965hFOT47w0itzcUe6JzXH573rZX7rX73NL//MIV58dozs5r4mIYQQQgghxO6oNgMKa83E7mrXWge+75cBN+4sondJQUwkWn9/f+B5XtM0zSKQJ6EFMYCWH1HccKk5PmGkMZRCyTmQ6HFRpHH9iPWqR6HUvOddIAlX0Fo3aXewrscdpkc8YRjGEa11hi59dlEKDEORy6TI9aW2xyIOZi2yGRk/12v2DKQJQ41pKrQmySNPtkWRxvFC1jbf78cPZGW/nRBCCCGEELvIDyIcL2yPo04gpVQEuP39/V0zNkh0HvmUKhJtenq6fvLkyUIQBK8qpZ7RWufjznQ36/UWr75VZHQkw5kTe9o3o6UiJnqc60cs3mnwg5l2d1g3UEr9EXDtypUr/zHuLL0iiqL/Bcgppbp2b5hhKLK2yWcnhzk1OcwLT48yOpJhIGvFHU3E4C+d2EMQan73/50hjHRH7BJz/ZDFlQY/mF2j2Qr525+fYHy/fNQQQgghhBBit1QaPjfvNPBaib2M3FpYWCjGHUL0NvmUKhIvCAIHmAWOxp3l4+io3SVWKDV5b77Mk48NM9QvB5mid9WcgNtrTb51YZm5Qi3uODthAbgJ/LlhGPMxZ+kJx44dO22a5rDWehRIx53nYRnL97F3IM1PP57n8P4s4wf62TtgY1vSGdarLNPANOD0kRHK9RYf3KjEHeme3Vl3eY8yJx5dp7jhyhhpIYQQQgghdonjBpQqHn6YyIKYC7TiDiGEFMRE4vX19Tmu685GUfSMSnDHVaQ1nh9SWGty8XqZx0ZzUhATPa3q+CytOvzxm7epNbuiG/6mUuoc8OczMzMLMWfpCUqpU1EUTXRzZxjA2N4+Jg/m+NLz4wxmLQay8njW66yUAcCpyWEKpWZHFcSKGy7FDZfJ0RzLa00piAkhhBBCCLFLHC9sF8SCZBbEtNZSEBOxkxMXkXjDw8P1crl8sdlsXtZaX1NKjQF9cee6m9nFKoWSw2cfG8a2DPJDdtyRhNhVXisk1Jrf+eZlyg2fUtUjCJM5v/oeFZVSrwLngHOu60p7/0N28uTJHJDzff+/Uko9FXeenWalDKyU4r/86Uc4uKePnzu1n0zaJD9kkzKTe/FD7L4Xnh5l+maVV99exg90Uj/YfqQ3Lq1iWwanjrQ75j/72HDckYQQQgghhOhKrh9yZ8Pj9nqTUtXDDxJ5BnNNKVWIO4QQUhATiXfu3LkAKB87dqyqlKoDiV6kUXV8qo5P3Q3w/M45uBJip4RaE4aamcUqnh91w/eBS3tc4sLs7OxCvFF6g2VZKdd1M8AjwETMcXacocA0FIf2ZZkczTE1Phh3JJFQB0YyFDdcTEMRqkR+qL2rUsX7sf8VQgghhBBCPBxRBI4X4LbCJJ/B1IFm3CGEkIKY6Bimac5GUfQK8HeAXNx5PslX//g6A9kUL//3z8QdRYhddfZ7BW6uNCisdf5zjlLq68Ds7Ozs/xp3ll7SbDZ/HfjtbhuVOJJL89SxEb7w1AG+8FMHyGZSmIZ0hIm7G8xaTI7m+Du/8BgXrqxzYXYt7kj37cvfnOHx8UH2Ddrkh2zpnBdCCCGEEGKHOW7A7M0qpXKiL6NVaBfFhIiVFMRExwiCoGoYxpJSytFaByT89dvw2juTNuotUqbBQF+i4wrxwGqOT9UJWF5vcmfDjTvOg2rS7kadBRZjztIzjh49agP7lFIjWusMYMSd6UEZhkIpOLy/n5GBNMfGBsgP2pimQkph4l7YlsFYvo+RgoVtGfiBJtKd0y0WRpqa4zNzq8rRMEc2kyJjGRhSDBZCCCGEEGJH+EFEqeLR8JI7VEtrXd6c/CVErOSEXnSMIAguA/O2bf912mO0Er2MYnHFAeDtqxuMDKT53LGRmBMJ8XDN3KpxYXaNP/nhMoVSZ3eHaa0LQP3KlSvSGba79pmm+de11meArugOy6QNTEPxG1+cJD9k89wT++KOJDpMfsjmxWcPUXMCLt2oUKp6eH7nFMQcN+BqocaXvznDLz97iBefNRg/0E/WNuOOJoQQQgghRFeoNHzeuLSa1Ek9GkAp9R6wFHMWITr/5rXoHRMTEwHgaq3ngPfiznOvvvPuHd66uk7LjwijzjnAEuJebd1EmluqceHKOjUniDvSg3CBslLqT4F/F3eYXnL69OlhwzAeUUo9AxyKO8+Dytop8kM2L3zuIF96/jCPjw9yeH9/3LFEB3tstJ8vPHWAkVw67ij3TUfQ8iMuLVQ4e77A9ds12S0mhBBCCCHEDqg5ARv1FoW1ZqLPY7TWRWA97hxCSIeY6Bjnzp0LgGBqauqq1joC/nLcme7Ft9+9w+kjw/ytnxvHxpR9MaLr+KFuF8QKtY7cb/MTXKCstX7NMIyLcYfpJa7rDgOPaK2fIeEdwPcimzHJD9q88PQox8YGGMv3xR1JdLjJgzlsy+DClXWKHTaWNtIazw+5tFDhaqHG1PgAlmnIPjEhhBBCCCEeUNXx2aj7iZ/UYxhG0TTNctw5hJCCmOg4WuvLWuuSUuq3485yL1p+xMqGy7ffvcPjjw4yNT4YdyQhdkzNCbi91uRbF5aZK9TijvMgAtrLXX+glHrTMIxrtm3Lg9ouCsPwecMwjtIuhmXizvNp5fpSHHkkt/1+P3Ggn8GsFXcs0QUGsynIZzl8oB/Pj5hf7rzx+0EUgQ/ffX+V2cUaf9My6UsbHNwrBWORTG4r5Paay0a9FXcUIYQQQoiPdOHKGvPLjbhjfKIoioqtVsuJO4cQUhATHSeVSl0Ow3Bed8hCec8PWSl7fPudO9iWKQUx0VWqjs/SqsMfv3mbWjO5rfn3IKA9KvFN4GvNZrM4MzPTWS0YHU4p9XwURaOGYXR0d1guk+LU5DDPPblP9oWJHTWQtRjIWkwc6McPOrMgFoaaMAx5/YNVTEPxl07sYWQgLQUxkVjNVsj8cp2Nmh93FCGEEEKIj3Rhdq0jxpG3Wq1if39/Rx8cie4gBTHRidZd1zVs276otc4ppY7GHeiT1Jo+78xtMJi1tg+A9gx03g4QIX7S7/3hVTZqLUpVjyDsjCL1XdwAvqyUutxsNosLCwtyFXyXnDx5cg+QDoLgBaVUR78x/urnJzgwkuEXnx5lqF+6wsTD8QtPHeCnp/by/ZkSYaTxWlHcke6b2wpRCv63s1cZy/dRevYQRx7JcfSRXNzRhMBrhYRa83/88Twb9RbvzG2wXkv+IZMQQggRB8cLcdyAmysOjhvieD+6RJK1U2QzKYb7LayUwfj+bIxJu0+l4eMHEW9cKuEHif5MUACaExMT9XPnznX0wZHoDlIQEx1nenq6BXDixImyUp2xjysINRv1dtGguOHSSvYPKiHu2VyhhuOFeH7Hv6YbqVTqElBcWFiQzrDdlQ7DMAOMxh3kQY3vzzI6kpEPeuKhOjCSYTgXdfRO0ihqfw6eK9Tw/Ijihsvono6dlCq6TKg1YaiZK9TYqLc6fSS0EEII8VCFocbzI8o1n6rjU23+6G7pYNZiwI9IGQa2JXWQneYHEZ4fdUJ3WFMpVT937px0h4lEkIKY6FhKqX+utT4NnI47y726MLvOxetlRkcyhBNDjOVlRJDoTGfPL1EoNZm9VY07yk74x8DS9PT0xbiD9CLf938dmOqUCw4fZlsGacvgH714nGNjA5yZ2ht3JNED8kM2AP/gl46xuOLwje/cjDnRg1lcafA737zMmam9nDmxhxefPSTPRyIWs4tVZharfOPPbnJzpUHNkTMbIYQQ4sMcLyAMNV9/bYFSxeOND1apNQOqzr2NFh7L9zGYtZh6dGDz2W8v+SEb2zIecvLudPb8UkeMUY+i6D1gKe4cQmyRgpjoWKZplsMwLGuty0Bm8yvRIq0JI83NOw1SpmJ0TwYFGB18y1v0lq1xCMtrLoVSM+44D6oIuMCSUmo17jC95vnnn08tLCykgLzWerSTCmJKtd+39w9nOLg3Q37IZjArIxLF7hodydD0QgazFp7f+Z26NcenUGpyfbmO4wWM7+/HUGCl5IBEPDyeH+G2QpbXmlwt1JgvNmi4AWEkt9iFEEKILZ4f0fIjbhTrNNyAQqlJpeHj+RFBeO/PoJ4f0XADShWP+eUGtmVy5JEcuUxKLkTdh63fj7VqqxO6w1BKVbTWpbhzCLFFCmKiY01PT188duwYhmFcBCY2vxLNDyL8IOLlby9gWwZnTuzBNBVZW74VRWdYvNNgZrHKf3jzdkfcRPo4SqlXgYXZ2dk/iDtLLyqXy7lMJjMcRdGzhmE8E3ee+2EYiqxt8vOn9/Pis4cYP9BP1jbjjiV6zAtPH2R2scqfT5corDU7/pLCzGZ3zs2VBiO5NP/0Vz6DbRnbHXFCPAztA7k6X/3W9a74PhJCCCEehlLFo1Bq8tVvXWd+uU5h7dP9vNwq3iyuOLxxqV0f2ZoO8A9+6diO5e12W78fb86uMbOY+Kk9Wil1afPsVohEkFN40dFM0ywDr2utoQMKYlscL6DlG7xxaZW9AzY//biM2RLJFkYaxw25WqjxxqVVKo3WJ/+i5FpSShW01t9VSs3HHaZX+b6f11ofVUp11MIt2zLYP5zh50/v56lje8gP2Vhm53S3ie4yPJDmC0+N8ueXS5QqHn6giXRnd7Ysr7mU6z5nzy8xOpLhhacPkrYMGaUjdkQYtfeDXbtdp+4GvPHBKutVj8Jas2NHJNaaAY4Xxh1DCCFEF6o5PjO3attjhW+uNKg1d/bn5eytKoW1Jt959w4An/+pAzv69+8mkdYEQXvP6fcvr7FRS/y5jAs0aY9LXIg3ihA/IgUx0dEymUzZdd1zWuuJThq35bghEPLGB6tMHsxJQUwkXhBqqo7PXKHOG5dWO/rgZbMY9oNUKvXd6enpa3Hn6VVRFOWBKa11tpPev9OWwcG9GV589hD5IVu6V0SsRnJpPv9TB1iteLw9t04QhdC5b88ALK+3bxyfPb/E4+OD/GefyTOYtaQgJnZEGGo8P+TyzQrFDZffP3dz+9JPp6o6fkc/lwkhhEiuqhNwYXaNC1fWuTC79lD+GVsdTmN721tQpCB2d1qD54fMFWp8+50iG/WOKIiVDcNYmpmZWYg7jBBbZL6P6GhTU1NBEATrvu/ntNa2UmoP0DGDh2i+8fQAACAASURBVEvVFuu1FqahUCAHqyKRHC/geqHG7/3hVd69vsFqxSPqzN0aLWBVa/3HWuuXTdNcXF1dTfwTZLfau3fvXwH+llLqMTpgB+SWf/5rT/DsyTyfOTxE1jYxZQekiJFhQCZtYlsGY/kst1ace15qnnQtP6JUafGD2TXmi3XWay32DdlkM3KfT9y/SsPnh1fWee3tO/y7c4u8/sEq798os1H3CUJNJzdWPj4+yMhAms8dG4k7ihBCiC5y9vwSF66sc/b8ErdLzYe+r7ZUbbG44hBGmuU1l+OHBh7qP68TFddd/uC7t7hwZZ1rt+v4gSbhjzALWutLhmG8WiqVVuIOI8QW+UQpOtq5c+cCoHz8+PGSUqpI+8C7Y5QqHrZlUCg1Gct31NQw0UPCUFNrBswsVqk1A8Iw4Y9cdxfRvqFU8n1/YWxszI07UI8bBA4BHXUT4PFHB8lmUrIzTCSCoRS2pcgP2UyO9pNJd8/r0vMjPL/FRr2FbZmM5NIP/SBGdC8/iChVPBbuNLi0UKFU9eT1JIQQQnyMQqm5/bUbtvaLdfqu8ofJbYXcXGmwXmt1ynOMq5Qqh2HYmXOpRdeSgpjoCtls9pzruheBMa11BhiOO9O9KpSavPTKHF+4VaVQcnjuiX3SKSYS5V+9MsedDfdTL85NiAXgolLqH/f19ZWvXr1aXlhYiDlSbzp+/Hge+BngGTpo9+Ovfn6C8f1ZpsYH444ixF8weTDH5MEcdzY8bq40ePm1hbgj7agLs2tcmF3j988tYlsGL/+TZ7AtQ56XxMeaXaxRdXxeeuUqNSdg5lbil84LIYQQsStV2pdGXnplLpZ//tnzBcbyfXh+xJmpvZw5sSeWHEnz0itzFEpNzp4vxB3lXmmt9UXDMF7u6+srxh1GiA+TgpjoCr7vB6ZpukEQ3KG9rLFjCmJbNmot5pcbfObwELZlMJC14o4ketzWg/CdDZf15C9r/Vha60vA9VQq5fq+L7eTYmSaphWGYR7oiLbYXF+KXCbFgZEMoyMdM9lR9Kj9I+0CUdY2iSKN2xk3R++ZH7T/fd6bL9OfMXlsNEd/JkWuL4WVUhgdtI9Q7LytXWBVx6fm+Mws1qg1fWpOQMOTH/1CCCHEvbi54lCO+fO/50eb3WkOhb195Ifsnt0nu15r0Qra/z22uug6QAR4QN00zbKcwYikkYKY6ArT09N1oH7s2LFvK6WuKaWeiDvT/Xp7boO35zbYN5Rm6tFBzkztjTuS6HFvXFqlUGry6ludf5nHsqx/BtSnp6c7/1+mw4VhOES7Q2w87iz34sgjOU5NDvOLT48yvr8janiih/3CU6MA/MF3F3G8kJsrTsyJdlal0d6P9t/+m3cZHcnwV54e5fSREU5NDm8elEhBrJc5bsjMYpULV9odhbO3al2zU08IIYTYLd/4zgLvXS/HmqFU8Th7fonCWntk44vPHmIs3xdrprj88MoaxQ2Xs+eX4o5yP1pAUSl1bXp6+mLcYYT4SVIQE11FKXU5DMNiKpUq03595+LOdL9+MLPO/HKDyYM5rJTBUL90iondVap4lKoeb89tsNj5h6kXgA2g43YMdqOJiYmMYRh7tNangQNx5/k4pqnot1McGxvguSf3yXux6Chf/OlHWF5rslFfxvPDTtkxcF/qbsB782XKdZ/55TqfOzbCyED7UpHoHVvd7BeurLXHIi5W2zfK15p4fhh3PCGEEKJj1JyAquOzUfepNZPR0FMoOVwAxvJ9jK1le2p8YnHD5c6Gy/cvr3Xi+oqy1vp1pdRC3EGE+ChSEBNdxbKsy61WK7VZEMvQiQWx2TVMQ/Gl58fJZlJyCCt2XanqMbNY5Z25jY5faKuU+qHW+pp0hiVGJgzDPYZhnIo7yCdJGYqBbIrjYwM898S+uOMIcV++eOYRZhervP7+KkB3FsSaAe9dL3NjucFAtv2RZizfJwWxHlOqtKg6Pme/tyR7woQQQogHUHV8CqUm5XorMR3W7bGJTcb29jGWb/ZUQezOhsvF6xv8+eVSp11U1rQvJZ+Louhm3GGE+Chm3AGE2Emrq6vh6dOn/Wq1aiqlVoCn4850v8JIE4QR15cb3Cg2OHKwXdPLpOXbVTxcXivk9prLq28V+f1zi9xeaxKEOu5Yn9ZFpdSrURT931EU/fn6+rqckCXA6OjoM0qpzwC/GHeWTzJ5MMd/919PcWqy3XUiRCexLZOBrMX4/iyR1hTWmoQR6I59S7+7INK4rZDFFYf35iu8fW2dd+Y2QIFCycWiLlNrBlxaqPC9S6v8++8XOHu+wHcu3uFGscFGvYXfuc8tn9q+QZtcX4r//GQ+7ihCCCE62PRChfPTq7w/X6GekA6xLaWqx1yhxmDWolT1OLy/P+5ID02p4vHq20Vee6fIf/xhkZWy14nnMgta6/8znU4XV1dXO/uWtehK0iEmuk147tw5jh8/fo12h1jHiaL2D7qZxfb5veMGZG0phomHL9Tt19tK2e34zjCgAiwYhnHr6tWrHTVsu5tFUTSslOqIzt1sxmTq0UEGs3KYLjqPbRkM9lscGxvg0kIF01CoLl2vFYaaMNQUSu1RMp4ftjvFxgfZN2THnE7stCCM2Ki1uLXaZGaxKnvCaL/m/aD7ukCFEELsLscLKVU8/DB5P1NKFQ9g+3mvm3l+RKHU5NZqs9M6w7ZprUPTNMuWZblxZxHio3TpR2Mh4NixY6cNw/gKMLH51XFMU5G1U/zys4d48dkxxg/0S3FMPBSzi1VmblX58jcv0/KjTh6vVddaX9Na/+9zc3P/Ju4w4scdP378a1rrUcMwXog7y8d58dlDTB7M8RtfnIw7ihAPbHaxysxila/+yXw3XHa4L4NZi4FsansR+5kTe7Etg7wUyjpC+3kk5NW3ihQ3XL7+2g3CSOO4shvsw86c2MPj44P8D7/ymbijCCGE6GAvv7bA1//0BqWql+jzgMGsxdSjA3zhqVE+/1MHyA/Z2JYRd6wH4ngBYaj5rX/1djeMgP6/gCtXrlz53biDCHE30iEmupZpmo7WehbIAodojwjtqCKw1u0RisWNJpcWKqRMg+GcJQc5Ysd4rZBQw8ytKjfvNAgjTdRx3fjbXNqzqi8BKzFnER9t2DCMxHeIjeX7yA/JmETRHbKZFPkhm4N7Mnh+2BM3a7cEUbR9y9bzI7J2ij7b5FC+j1yfRa4vRcYyMIyOejzsSlGk2wsnai38IKLS8Km7AfVmwI1ig/VaizDShB38kCKEEEIkkdYQaU0raD83Jf1HbRBG1JyAQslh9laVI2GO3ObzbqdxWyHNVsiNYgPHDag5AQ0vWeMq75fW+iYgO9xFoklBTHQt13UXM5nM72qtfxM4DuTosNd8FGkcN+DVt4q8+laR3/jiESYP9vPis4fijia6xJ2yh+MGfPmbl7vh1nURuGgYxj/LZDLluMOIv0gpdYoOGGf74rOHOv6WoRBbxvdnGd+fpVT1KJSavPTKXNyRdo3jhjhuyNnz7cm5A9kUI7k0nzs2wukjI5yaHGH8QFa67xPA9UPCUPPGByVKFY83Lq1QWGv2VAFXCCGEiEOkNQ03oNLwKVW9uON8IscLmblVpbDW5Nvv3tmeBNCJ52S319rrKr76J9eZX65Tczq6GKYBDMP4ummaMipRJFpHFQeEuB8TExNBuVwuu647q7V+HXgW6Oht0+/MrXOjWGcsn2WwL8XU+GDckUSHKlU8SlWPNz5YpVTxaHXATbBPopT6ehRFS319feVyuSwPYAly8uTJnGVZqWazOUyCnz3G9/fTnzEZzFqYpnSMiO7y+KODjOWznLmyTs3xt3eV9pKW3+48mr1VY6PuM7NY4+DeDH1pk1NHhsmkTR7Z00faMqQo/hC1/IhmK2R5zWW14lKqepQq7fFMs4s1Gl5AYa3Z6YdCu6bWDGh4HX2hSQghRIyiSNPyo47rwvb8EBy4cGWNwVsWNSdgOGfxuWN7tsdmJ1Gh1Gw/i9+qsnjH4eaKQ3HdpZXgMZX3Qik1E0VRta+vr+z7vjzEiURL5ruDEDvg3LlzAVB+/PHHZ7XW57TWJ5VSHV0Qe3tuA4CpRwe3F8YL8WmUqh4zi1VefavIzZVGomeE34evWZblXrx4UbrDkifnum4GGI47yMc5vD9LfshO7IcnIR7E1jPDmRN7KJSaPVkQ8zZ3ZFYaPyoIbu2d+DUmGMmlyWVSDGYtKYg9RJ4fbv8ezN6qMrNY4eaKg+MFUgT7FKqOj9Ph45WEEELEJ9LtZ6Qw7LSCWPu57sLsOgAzi1UmD+YYHemDPIn9TFcotTvgz55f6qpueK31ZaXUkpzHiE6QzHcHIXaQ7/uXgSXTNJ8C6sDpmCM9sLPnlxjd04fjhjw5OcRnH0v0GbNIkPVaix9eWeMHs2u8ObPOnQ0X1+/4W8V/pJQquK5b7O/v74rKXrcJw3AsiqIRpZLddfXck/uYelQuGoju9uKzh1hcbRcfrt2uc/12Pe5Isao0fAwF3/jOTSzTIJe9uX2r+PC+LNlMiqeO7SFrmxw+kMUyDayUFMs+ieMFeK2IOxvedhfY4p326+7SQoUg1NSaAY4b4Hghbisk1J11ECeEEEKI5ChVPOrNgN/5/cuM7e1jLN/Hk5PDDPVbPPfEvl3PE0Ua1w8pVVqsVjx+eGWNjVqLC1fW8fxoszu+489ioH3OWlNKvRZF0eW4wwhxL6QgJrretWvXqkD1xIkTa0BX3FQolJqEoebmSoPxA9m444gO0goiihsuS6tN5pe74xBUKVXQWl9bWFiQMYkJFUVRH+09jomWH7IZy/fFHUOIh2os30cYaQ6MZChuyNumH7TvUSyuONt/bKsg1mpFDGRTPDaaIwwtwlAjtbB7E4aaVhBRdXxK1RaFUpO5Qo2q429PPBBCCCGE2CkfngRQddpf+SF7+1lvt2naz0OOG7BRazF/u05xw+3GKQ0B4EZRtGIYxlLcYYS4F8m+qi3EDjp58uRoGIYZrfW7tIvBiT+cvRf5IZv8oM0/+uXjHBsbkMNccVdf/uZl7my4vPpWMe4oO0Ip9abW+gepVOql6enpa3HnEXc3NTX1D7TWR4HfjjvLRxnL9zG2t49/+iufkVG04iM5XkAYagolF8cLuXmngW0ZpC2D/kwK01A8Pj6AaSqydufcN/vOu3f49jtF3rhUolRJ/hL1JNh67toatTiYTW3/vm93lu3vJ2unGMv3YVsG+SE77tgPRXsHRsDMYpVStd0Jtrji4LgBM7eqhJHGcbvi5nOijeX7OHVkmH/x938q7ihCCCE62EuvzPHSK3Nxx3goBrIpRnJpPndshLF8lrF83/bz2tT4wAP//WtOQNXxmV1sX/65cKXERr3F23MbtDYLdV1KA69orf/IsqxXp6enu+OwSXS9zvnELsSDa5mmSRAEl4Ah4Mm4A+0EP4hwvJAbxQZhpH/sYEb0tjDSBKFmea2J2wq5s+GyXmvFHWsnREBLa72ilLrm+353DN3uYlrrRHeIZe0U+SFbxqCJbVsH+VXHp+b4rNdatIKIUqXVfj8tu5uj8xSZtIlpKBwvwEoZDPVb5PpS5DIpspvFsqTuoxrOWUwezHF9uUHKUNIxdg+2nrsqDR8rpWj5IYahyKQDao5PNpPCa0Vk0ialqodlKoZyaUxDkTIUVkphKIVpKpRSpFMGSoHxoZGy2YyJQmEa7b/ONNpfSoFp7Nx9Rj+IiDanFGqt8QNNELV3iISRRgMtPyLSGj+I8IPN/w3bv65U8XDcgJsrDpWGT6XRolxv4bUiwqj99xAPn+e3f2+EEEKIB2GlDLIZc/vneDcJI43nh9sXwDw/ouGGZCyThhdgGpCxTJShMBQYhkIBtmX+2N8jCH9U2HK8cPMZSdNoBtTdgJub46FLFY9aMyCMNF32n/LDIsDTWpcNwygCXXHYJHqDnJiLnjE9Pb0OMDU19c+01qeBr8QcaUe0DyB8/u1/nMe2DH7n732WwawlXQ5i+zD3a396g/nlOheurMcdaae0gCLwZ7Ozsy/FHUbck0eAI3GHuJvDB7I89+Q+hvqtuKOIhHDckJnFKheurHFhdo3ZW+3bnp8ka6cY35/l9JFhTh0Z5vFHBxnIWont3v7csT187tgesnaKmysNXn5tIe5Iibf13HW/BrMWA32p7c6ygay13T1mW+aPFU2nHh0k9RNdZ/2ZduF1ILtz71OVhr99Y3lrl8XWDWfHCwiiiEKpuf3ntr+qXjffdO44pYr3qV6TQgghxIcN91sc3p/l5orTdR3ejhviuCF3Nv7iRISBbIqsneLw/iy2ZW5OgGg/d43lf7SipLY5hnHLzGKt/YxUdbu9C+xuWkBRKXVxdnb21bjDCHE/pCAmetGC1jprGMabWusx4FDcgXaC4wW0fIOz5wvkh2yqzWB7kajoLW4r5Paay+ytKjOLVS7frLDWHZ1h0N4DuKSU+v+Ai3GHEfdGKbVHaz0ad467GeizGMtnE9vFI3ZHe7F1xIUra9tj4AqlJoW15j0vvPbDiFLV49JChVLVY65QJ2ubfOGpA9vFsiR6cnKI8QNZZm/VqDl+N+42iN3WayiMNKapsKstTENRWGuSMhSm+aP3n/nlBoZq39S2LQPbMrc7y9If8T6VtU1S5se/f31UQdfxQsKwfW05iCIcN8TzI1p+RCsM0br968JQ43ghjhvgeCFB2L1XnYUQQoheNZxLM3kwx0rZ67qC2Mdp+RFaBxTWmu2OftPAMhWGoSis/Wh6gueHtD5U9CpVvfbOVD8i6OI2sI9R1Fp/3TCM9+IOIsT9koKY6Dmzs7MLJ0+eTAVB8AOl1DNa6+4oiLkhEHL2/NL2zoozU3ulINaDmq2Q+eU6b3ywyrffLf7YgVcXKAPXgK9lMply3GHEvYmiaI9SKrEFscGsxdjePtIfGokhek+p0qLq+Jz93lK7IHbr/otCfvCjTppLC5XtbqCxfB/5ITuxBbHPPjYMwHvXyxRKTSmIPQRbi97vpdPwfuUH7U8s6BfWZLqwEEIIIe5uZCDNY6M5Ll7vrY/ZW89o9WYQd5ROorXWRcMwvi7nMqITSUFM9KRKpVIYGhp6KQzDFcAGjpLg/Tb3q1TxOHt+ie9fLnFgT4Zf/fkJDu/Pdu1SdwFeKyTUmrPfK7BSdvmziyts1FvtudZddFspiqJ/bZpmwXXd4ujoqDyxJtzJkyfTQDoIghwJfI/NWCb7RzIc3JPZ3CG2c7t5ROd4/0aZD+YrvP7+CqsVj0Kp+WP7AR5EpeFjKPjqt+Y5uCdDqeLx+KODiR1r/OKzh7YLJ1tdxiL5Kk77dSZ6lx+0u1OzdoqsLZc7hBBC3L8jB3OM5Cxef3+FQkku0oi7U0q9rJS6KucyolNJQUz0pKWlpebS0tK1qamp27Q7TrrqDdzz2zsfak5AccPlr55pMTqSiTuWeIhCrQlDzc2VBnc2XOYKtbgjPRRKqWtRFJUWFhbchYWFuOOIT9BoNAwgZdt2igQ+cxiGImubZGxTxiX2sErD5+ZKg6tLNYob7if/gvvgB+3C2vxyHc8PKZSaP7aLIGm2usrH8n3SUdRBtl5nondFWuP5EbbVPZeghBBC7K5cXworpUin5HOR+EQLwG05lxGdSu4Sip42MTGRATK2bX8VeBqYiDfRw/VrvzDB6EiGF54+uL2kXXS22cX2Df5v/NlNbq40qDldVdvdppT6OrAwOzv7P8edRdy7qampCWBCa/0V4HTMcf6C0ZEMf+XpUZ57ch/PPbEv7jhiFxVKTeYKNX7vD69SqrZHHO6WU0eGOTU5zN/+/ERiRygCvDdf5uL1Db7xnZssrjhxxxFCfIxTR4b5F7/5U+3n+z55vhdCCPHpfeM77bOFl19biDuKSBil1Lta6/KVK1d+Pu4sQjwIeVoWPa2/vz8CgiAI5rXWGaXUIdqF4q6cNXJnwyUINbO3qhwYyTA6kmGo38KSG0AdpeYEeH5IqeJxtVBjvtig4QaEXTQa8UNcwFVKLWmtF+IOI+5PFEUGkFJKJfICjmEospkUlinvgb2i0vDxg4hLCxVurTo4Xrjr3TX1ZsCdDZfihkvaMhLbwd2fSTE6kuHY2AD9mRRXCzW0pqvG8ArRLbSGMNTy/SmEEOKB5YfSBFGEbRlEWjrRBdCeqhVorW8CxbjDCPGgpCAmetr09HQLaJ08efKrQC4Igp+h/X2RuF03O+HVt4rYlsHr769wZmovZ07s4bkn9slusQ4zs1ilUGpy9vwtCmvNbp/vXQQWgiD4g7m5uYtxhxH3LU37/TSRlwwyaZPD+7MM56y4o4hd8v6NMqWKx5e/eZkw0jhuuOsZrt+uc/12nfxQhvH9Wf7OL0zseoZ7cfSRHEcfyXF4fz9Vx+e3Xno7tv9mQoiPF21+b2Zt+XgvhBDiwTz35D6CUPPyny7g+e0dlaLn1YENrfXXDcOQcxnR8eSJWYi2daCutX5FKXUA+MW4Az0sQaSpOQGzi1Vqjk+h1GQwa3Fmag9ZO5Xo8U29yvMjWn7E+zfKVBo+b3yw2v69W2t27YhE2jeQ6sBF4HWtdSnmPOJT0FpnTNMc1lon8nnDNBSDWUvm5PeAxRWHmysN/uziCqtll5YfEXcjxcxileKGy688P45SJLZbOz9kM5C1+NLzh1kpu/yniyt4fojny21hIZIi0uD5IWEk35dCCCEejGUamAa8+DOHWF5r8h/evE0QtXeWi54TAS2l1FtRFH3PNM1rtm2X4w4lxINK5AGVELttenp6HeD48eN/BDxBFxfEwlBTdXyqiz4zi1UuXi9jWwYD2RT5IVsKYgnU8iOqjs/5SyVurjT4zrt34o60GwKgrJR6D/ijIAikINaBUqlUJoqiYa11KolTE1OmYqAvhW0lsoFN7KCbKw3e+GCV//TuHYobbtxxAJi9VcU0FJ4fYpoq0QUxgC89P87sYpW3rqwDSEFMiATRWuP5IYEcVgohhHhAW8+kLz57iEsLFf70nSL4kRTEelMENIG3DMP4erPZLM7MzCTjw5QQD0BOgIT4kL1795aUUiWllL/5h8ZiDbQL/FDT9ELmCnU+uFFhbqnG8noT148YyFrYVjIP6Lrd7GKNa7fr/MkPl/n337/N77++yMXrGyytNnFbXT+uqg5Ma63/R8Mwvue67uLCwkILkCfwDjMyMjKptT5mGMbngJG48/ykQ/k+vvRzhxnIWqTlva7rOF7A4orDy68t8J8urvDmzBrrtVZi9i2GkSYIIx7dl6Xc8Jk40B93pI9lWyZ7BtN89sgwoyN9pFMGlYYvhTEhEmCo3+KJiSEGsxZ7B2UUuhBCiAdnWyb9fSYHRzIEkebmHSfuSGJ3aWDJMIx/C7zuuu60nMuIbiEdYkJ8yNWrV0tHjx7NmKZ5DTgad57dsLUgdX65zmDWwjIVactkz4BNEMohV1yqjs96tcX8cp3ZWzVmFqtxR9pNgVKqopS6aNt2WW4gdS7TNI0oilJA8trDaI9MzNqmjEzsUmGoqTcD5go1FlecxHSGbYk2C3PFDRfTTOS3yI+xLYOUmeaJiSHKdZ9bq05iu9qE6DVat7s2k1LwF0II0flsy2Aoa3FsbIBLCz11HiF+pKm1vmaa5srCwkKyPkwJ8QCkICbET7h27doS8HtTU1MX/3/27j82jjNN7Pz3rerqalaTbFJqUZQp0bT8Q9TKu9buONrJeXzrZLPx3twhC1+CuwmS2xncIkCA7D+5A4LLAUGCu8CTvcthJ7gB7nLzR2YWSDw47J52DrmBPTu74cZW4GjHM/JaNJuWLLUoUmpRLbJ/Vld1/Xjvj2pybI9s6xdZ1eTzARqkWiL1qNXsfut93ud5gLe11l8F5tKNane03IDzyxucH7RDKpdsbMvgt3/jaSApmRc7Y63eY63e4+y5Vdbq7vb/wX6klPr7Wuva8vJyNe1YxMPRWheUUhNkdL1hmgZjjpV2GOIRqzd9/CDm7/3v7+D6ESvr3bRD+kxnz63y3JMTQ/EeuzV378tnjvDlM0cG71k9vvm9S2mHJoQQQgghHrExx+LM/EHsvMn87Bj/+o+vsbIulWL7gVLqfwKqlUrl22nHIsSjlskNKiGywDTNRhRFVaA6uGsutWBS8tPqsWQz8d0rje2KinHHYsyxsHIKI4OzgbIsjjUaqG149MOYjXaf9YbH7YZPvenTdsO0Q0xLDfC01jWt9f7NCO4hWmvDMIyc1jpzLxK2ZWANQVWOuHdJC0JNtdal2Q1w/Qh/CFrM+kFMP4jxg5icqTCN4Xlebs0Xe+7JCVwvST6GkZYqFSF2Waw1fhDLDDEhhBA7oljIMT1Z4LGDI0SxZq3eSzsksXNqgAdUtda1tIMRYidIQkyIT7G4uHgBuDA/Pw8wp7X+xymHtOua3WSU2re+/yEA3z9/g3HHYv7YGGfmD3LmxMFBFdnwbN5lgRdERJHm7LlVapseb/zo5vZm6H6mlHqD5ATS62nHIh6ZfBzHo0qpzM0sLZdsSqNSHbaXuF5Eyw349g+usrTSYu3OcFyo15s+t5s+9ZafHDYZGZ7l+YvPHgLgzImDVFZavPra+7R7IS03+JyvFEI8SkEYU2/6uH72DwEIIYQYPk89NspTj43i+pF0B9jjPrIv8+20YxFipwzPFbcQKTFN80IURVWl1K8DY1rrn0s7prS03XA7adN2QyorbWanHJyCycnZcfI5g0OlAnnLwLZkrghAP4jp+iEr6y6b7T6bnT437/Tw+jEXrjTo9AL6QUy4v0/TV4FrwAI/rcgUQoh7EsUa14u48OEm715pcG3dpd0brkrbINTUmz6moYYqIbZl3LF44sgoX/2rT3DlZocrtS6VlZYkxoTYJfHWDDGZ/yuEEGIHnTw2zkzZ4czyBm032G+zzve6KrIvI/aJ4bviFmKXDSrFOHHixNvAUWDfJsS2NrbqTX974XPy2DhjTg6+dJRxx8K2zMFHggYrQwAAIABJREFUSYgB+EFEo93nwoebXL3Z5crNDpXrbdkk/LhrSqkFYKFSqVRTjkUIMWTCSNNyA9690uDsW6vUW/7QVdwGYczths/YyHBWLY45OcacHMePFJNZpJU7rNVdea8TYpfoWOMH0X4/YCWEEGKHzc+OA3DmxAHW6j1JiO0tsi8j9g1JiAlxj3K53DeDIHjaMIzROI6fVEo9lXZMWXBtvUvONPjW968k88UKJtOTBaYnC8xOFZPqsWMlnILJ7JSTdrg7wvVD/H7MrU2fGxs9bt7pcW29i+tFXK11CEJNo9vH60d4/ZiuN1yVCzvoNvDvlVI/AH7geZ70pxZC3Jd606da6/LtH1zl2rpLveUThMO3IRzHGtcPCfZAdcfJY2PMHBzhF56YoOOFvPpv3ieI4u02zEKIRy/SGtePhvL1TwghxPB55YWjrDc8yiWbH1/a4J1Lm2mHJB6MBm4opf4Q+A/Af5B9GbEfSEJMiHu0uLh4+ZlnnskBNaXUdNrxZEUyqyD62CnwenmEzXYfgDHHYubg3kyEbYkiTT+MabkB6w2Pa+tdKitJFVjlupyY+gw+sKq1XlleXq6mHYwQYvj4QZJoWVpp0e6FQ1cZtkWTtH7Uevg3s8cci7FBpbgfxFIxLsQu0HrvvIYIIYTIvpnyCLZlcHy6yNWbnbTDEQ9Ba90DLhuGcWVpaamadjxC7AZJiAlxHz744IMK8LX5+fmXgJe01l8F5lINKoPW6j3W6j3OL28M7rmEaSoc2+RQyaY8bnNydpwxx+LMiYM4BZPHpxxsyySf0Y2ztXqPthuytNKi3vK53fRYWXdxvfAj/05xr5RS3wEqlUrln6UdixBi+Lh+SBRpfvN33sYPYuotP+2QxCeUSzYAf/y//iXW6j3Onlvl3SsNLny4ietHRJFs3Ivssy2DcsnmzPxBzpw4wNm3VpN17p1e2qF9TBRpWt1gaA8FCCGEGD7lks0rXzrKiz9/iN/+jaf5xv/zAZfW2pl7jxR31QZCpdR/mcvlGlujYoTYLyQhJsQDME2zEUVRlZ8OmpxLLZghsXVytedHtN2Q2qZHyw2pOC1sy6De9LEtg7xlUrAMTENhmgrDUBQsE9NU5AyFlTMwlEq+qQLTUBgK1NZ9n2Pr9GwcQxjHRJFO7gP6QUysNUEYE4SDj1FMrJO2XK4Xcm3dpdkNaHb7NDp9/L5sPNynDaAPVICVlGMRQgyp1ds9Or1k83cvtBlUKtl4N417ey8bNrZlMFMeodMLCaOY1XqPnh9Rb0oiU2SPYSiUgunJAsVCjiemi8wdLlIu2RTyJjkzez+nsdb4QUy4B14PhRBCJGKt0TqZNRtrPnaYyMr9dG/kHrdCdoyVM3AG75c5U1Fv+cSDuEXmhINbRSnVNE2zAUiJn9h3JCEmxAMYnJ64MD8/DzCntf7HKYeUeXGscb0I14u4ueGxNGglePbcT/9MkhAzeHyqiGObjDkWTiHH41MO447F2IhFuWRvt1/KmQrHzm1/3b1ouyFRrOl6IW03pOUGuH5IGMes1XtJpUHT/+mt5ctp20dIKfVnQE0qw4QQD+MP3ry+XbG7F+RzBuVxG8fem0vzcsnmlReObr/vnj23ul01JkTWFPJJcvqVF44yPVng5eent7sY/OBHN7nd9NIO8WcEoU4Ob/lR2qEIIYR4RMJQ4wcR9WYfP4g/NqbiUMmmXMrjFHKYKWfESkWLUtHit/6z4/hBzJJ0cMiyDtDQWr+qlLqwuLhYTTsgIdKwN6+6hdglpmleGFSKvQSUgNOpBjTkwlhDELPe8LByBnarj2Uqbm162DkD2zJxCub2CXpDJaeitqrH7oX/kSowP4jpBzH9KEJraLkBUZQMJXe9ENePCKWl06NSBa4B/1YpJTug+4TWOjQMwwMyl1VuuyGuJxuHw2arVdmVm9091Y7FMg0OlWycgpl2KDsqbxmMD9olt2cDxh2LzU6fdy5tbCfLhNhtyXpScXiywPSBEU4eG0vaes8fZLSQwx50KgBw7BxjjpVyxD8r1sk8W2lFKoQQwykIY7SGC1cagySYz2a7T6MT0B20mvaDn167OAWTop2jVLSwckkl/thIjpOzJfKWkcoMV6eQw7Y0X/lLs2y2+7xzeZNbGx61zewdJNmHOsCHwEWt9cU4jj9wHKeRdlBCpEUSYkI8hK0+u/Pz8wsklWKSEHsIUaSJIs16Q04S7UHXlFILwL+VQa37h2EYIZDJhFhSHSoJsWGzdqfH+codrtQ6rNX3UEIspwYV0Hs7IWYPNmjOzB8AYP7YOFdudqht9FijJwkxkQplJMnaxw8Xee74BC8/P830ZOGuia8RO8fYSPYSYlonG6VRLAkxIYQYRkGUHGo4X7lD2w1YWmmxdqf3uevdrQ46Z04cYKbsMFNOuuukkhCzk3Xsf/3SLGv1HmGseZeGJMSyoaOUuhDH8ev9fv/1ubm5zsLCQph2UEKkRRJiQjwa347j+JhhGB2t9V8AzqQdkBAZUVNKvQEsAAue59VSjkfsrj7JabRMZp6CMGnl4di57Qs4kU0b7T5/tnyHc4t1zi3W99TsqdmpIkcOjOAUcqnPgNht5ZLN6EiO//Fv/tyg+s/lzfduU2/2t1srC7ETZqccinaOL/38ISZGLU4/OcnoSI7RQo4DY/lPbcVdyJsUC9m7hI5icP2IvsxrEUKIoXL5RocPb7T50z+/ze2mx5Wb3e2uNR+tCPs0zW6AoeDNi3Vsy+DNi7c5Pj3K8SNFXnz2EOWSTblk78K/5KeKhRyPH3b42786xy8+1eT9ay3eeu82twcjKcSu6QGRUuo7wFocx2ejKNoYJMMyeX0uxG7J3mpeiCFUqVSqTz31VKiUugw8lXY8QmSIR9IusVqpVKrphiJ2m1IqjuM4VEpl8sh6rDV+EGNbmQxPfEQ/jKltetzc8PZUZRgkp2kL+Z+2A95PtirGSkWLMcdizMmxtNKS2Z1ixxXtHGNOjuNHipRLNl94evKevs40VCZ/VjWaMNJoeTsTQoih0vVCapse7680Wav3aLv3V7QTDA5C+IPDYmv1Hv0gBjTPHZ9Mpc2vaSSz3mencrheiOdHvPvhpnQC2H0REGqtLwOrH3zwQQXgww8/TDcqITJAEmJCPCKXL19eBb5x6tSp7wLTQRD8z0qpZ4G5dCMTIjV/H1itVCq/n3YgIh1KKU8p1dBahyqDpS+uF7F0rcXxI6OMjciSKKvW6j3evdLg668tpR3KjvjqX53b9ZO7WTRTHmGmPMKZ+YMAnK/cYa3e4+y51XtqGSTEZxl3LOaPjXFm/iBnThzg5Oz4A20SOrbJmJO994so0rTdYPvmFHKZTNwJIYRIXLnZ5Vvf/5DK9RZLK4+2Kn5pJfmeW1Vjv/cPvohtGamsN+dnx5mfHefFnz+EH8R883uXqDd93rx4e9dj2Ueqg9vvKKUqcjBZiJ+VvdW8EMNvq0XYMhAC04AB5NMMSohdEA5uK4ALrCqlZKW7j0VRFA/miGXyzPpWhVgUSzVKFsWxRgOVlRbXbnXTDueRs3IGhkraBpaK2ZtJlLZxx8IvxZycHWdyLE+5ZFNv+vhBvKdaZopHz1AKZcCB0aT14fRkgWIhxxPTRWYOjjDuWJjmgyWLrJxKZS7LvYq1JoqlUkwIIbLsys0uK+td6k2frrdzneu2qscq11vb1fg5M51KZyuXvHcePzLKeNGitunR7PZpdgOCUBPLG9fD8kj2YFYYJMS01hu5XE4GuAlxF5IQE+IRW1xc3AA2Tp069c+jKCporU8DBZLEmBB7WQdoAL87OIm0kHI8ImWWZfWjKMrwDDFNveVz1B9JOxRxF14QEUWaV197f0+20CsVk4HnLz57KO1QMml+dpx54MWfP0TbDWm5QVItNqgaE+LTWDlF3jL4leemmJ4s8NVfm8M0k/ZND6tUtOj1s1vRGUSarh8xYufIPWDSTwghxM761vc/3JUqqWY3aVH46mvvc3J2nH/4lZ9jfNCierdtHf76O18+zmanz194ZpK3LtaT2bEtHz+QhNhDqgEVpdTvIOMqhPhckhATYud0CoWC1+v1/oXWesowjL+stZ4BjqYdmBCPWB/Y0Fr/yDCMd5RSF7TWtbSDEpnQGTwX+mkHcjf9IGKt3uP4kWLaoYi7WFpp0egEtHshYbT3EmJfeHqS6clC2mEMhbxlMO5YnDlxkPZskFSPBRH1ps9avcfanR5dLySKZTNlv9mqtJwpOxQLOZ56bJTJMYvJ0TxPPjbK6IiFbZk8qq69Vs7AtsxH882EEELsK5WVFq1eSOV6a0crwz6p7YZcu+Vy9twqX3h6ki88fYBcTmGk1NJ+JG9y/MgoOdPg+JFRllZatN2A88sbADJr7N6EJPPBLiilmsDrQB2oFgqFRrqhCZF9khATYocsLi52Bp9+49SpU0+FYegopb6otZaEmNhr+oOkxzngu71er1atVqU0X9DtdjuWZdUMw8hkQswPYtbq7n0Prxa7o7LS5tp6d89eFH/h6Unmj42nHcZQsC0D2zI4M38AgPlj47TdgKWVFueXN2i5AX4QSUJsH7JySeunJ6aLTE8WePn5aWbKDjPlnan8tUwDO5fdlolCCCGya+l6i7V675HPDPs8W+uks+dWsS2DZ+dKmGYOUiokLgwSYsePjAIkVWJNf/tx2atr/0csBDyl1H8EqsvLy99IOyAhhokkxITYBc1mc61UKn0zDMMfKaV+FMfxy0qpaWA07diEeEh/AKzFcXxWa73a7/dr1Wo1k8kPsfuKxWKn2+3WbNvO5HPC9UMq19ucmZd5RFly806PGxsef3LhFh/e6Hz+FwyZk7PjzB8b55eePsDjU07a4Qylcsneniv23JMTfOWlWVbrLj0/4o0f1XD95CS064e4fiY7tooH4BRMbMtkeqLA7JTD7OEiJ2fHGHcsDk8WyOcMDozlye9gBVepmCe1HcR7YJmKom2mMh9GCCHE3bl+hOuF/MmFdd6/1kwlhiDU1Js+f361yeRojV95bopDpWy0AP6F4xMEYbydIPvhT24lLSXfuy1ruY+rAbe11n9qGMYHWutLwNUoivbesGUhdpgkxITYBaurq73V1dXLJ0+eLMdxXFZKvUByokOIYbcKVMMwvAB4UhkmPqrb7YYkA34z2e8ujDUtN6C/B+dTDbNeP2az3We94VPb3HsvKWOOxUx5hMnRPGOOlXY4Q8m2kgodxzYpDzZzJsfyuF7IO5c2absGtQ2PfmiQ0RGG4gGYhiKfMxhzckwfKHB8usizc6Vd/VnK54zt518WGSqpmEupC5YQQoi7iCKNH8SsNzzW6r1UYoi1xg80zW5AbdPL1PXP1nyxrTXdlZsd7MH7razlPsYDmkqpy8B7vu9fmJub6ywsLMjeohD3SZbKQqTg1KlT01EUFbTW/w4oANNpxyTEPfIAT2v9O0Dlgw8++MO0AxLZNz8//5rW+ovAXNqx3M0rLxzllRdmODk7LgmKDPi9P6rynR9cHQzYzs7F+sOanSryt371cU4/OcFzxyfSDmdfWKv3WKu7vHNpk81Onz+r3MH1I66tu2mHJj6DaSoce9BOabrILz09yeRonl+ePzj4vfTOdLp+SBhpzvz2H6UWw93YlkG5ZPPVX3uC3/y1ubTDEUII8RF//JNb/PDHNd68WKfeTLczhW2Z5C2D3/27p3nu+ETmr3221nJbj93Zc6tph7SbqkBVKfUdoFqpVBbSDUeIvUMqxIRIR980TaIoeltrPQ78HDAxuAmRRSHQUUrdAG4Aq1rresoxiSGhte4Bme195/UjNjt9gkjmD6XJD2LqTZ/Ndh8/iNkL46AKlolhKB4/7PDYwRGmJwsUC7L83i22ZTDuWDx2cIRxx6Lnhbj9iImxPP0gxg9i2m5AGGlcPyTWEIR7JwmbZUqBYajBCXATp5C0+Rt3LKycQaloceRAgccOjnCoVGDMyWGaCjPl0idDKXImjDsWYRRnpo3T1mOXz3D1mhBC7DdaJ5VZnV5IvelnYo0Ra00UazY7AfWmn/mE2NZa7tghh3HH4rknJ4givd2G0vUjul64F+bIdoBQa103DKOvtd4g2Xe5obWu5XK5RsrxCbGnyBW5EClYXFzcGHz6N+fn5+eAr2mtXwJ+JbWghPhsHeCC1vp7Sqk/9H2/Ju0RxX1Y01pPKqWeTTuQu7mx0eOdS5ucnC1xYCyfdjj71tapz3cub1Jv7Y25blOTBRzb5B9+5STjjsX87HjaIe0r5ZJNuWR/7HHfSrx+snqsstJKfm+PPPeyzjCSKrCZssPMwZFBhW6OXz5xEKeQYzaj8/UK+WQ+2fyxMdpuyNL1VsoRJZxCjvlj45mZByOEECJJPnW9kMs3Orx5MRtnSYMwJghjLnzYYKPd54kj2R5r/8m13JfPHKHtBiyttKhcbw0+tmm5QcqRPrTLQEMp9YdxHNf6/f4byEgKIXaMJMSESFmhUGh4nrdAMiDzAvAySQtFqRYTaeuTzH76U2BdKfUnSqmKbduN6enpsFqtphudGBpa6y6QzgTpe1Bv+lSut+l60n49LW03pLbpcX55g7X68Lezm54scPhAgRefPUS5ZDNTdjI9d2g/yZlJJQ1lGHdylEYtvH7ML88fxA8i6s0+XT/E9ZLT3H6YJNC2TiP7QbSnWnnuFNsyMA1FsZBjzMkx5liUHIt8zmCmPLJdBTbmWIw7FuVSHttKZsJZuez/rMyUnaTt1fW0I0k4tsnJ2XHK45IQE0KIrAjCmHqzj+tn7xqj2e1Tb5lph3Hfxh0L2zKS97xBoqyy0qLlhsPQTnED6Gutryml+oNf14G61nrFMAxXKVUhOYzszc3NyZ6LEDtEEmJCpOzChQsNYOH06dMXPM+b0Fo/TjJXTBJiIm19klaJrwOrlUrl91OORwwpwzA6WuvMtnmoN/u03DAzra/2o5YbcGvT43zlTtqhPBKHDxR47vgEf+0vzmS20mW/Mg01SNDkgJG7Vo/Vmz63m972iePt6rHB3A9JiH2+vGUkc63G88yUHR4rj/D4VBHHNjkzf2A7+TWsZsojaYfwMcVCjvljY0P9mAohxF4ThJp608f1sneN0ewGQ3EA5ZPGnBxj5JJk2OC+yrEWLTfIfEJs0Aaxo7V+WynVUUpdVkpVer1eZW5urrOwsPCxzKkkw4TYOZIQEyIjJiYmOtVq1RsZGflHwKjW+u9qrQ8B/ymQH9yE2A0rg9sfAKtRFL0NSA8p8cC01pfjOO4YRjYvuoIwJoxjrtY6FG1T2tql4Oy51aGvDHMKJkfLDn/jxaPMHS4yNz3K1IRsTg8TK6col2xKRYvZww4nZ0tEscb1QmKtCUKN14/o9SOa3YAgjLk9mAnSdIPtWRZePyKONfVmf/t7J1VnP90QG6bWjIahKOQNLDO5HZ4sYOcNiraJnTc5PGgN6tg5Dk/aFPImhydHMBRYuSQxZlvmdtXYmGNhpDsK7KG9/Pw0i9davPHOTYJQpzoX5uSxceaPjXFydpy8NXyn/YUQYq/q+iGV663tAzVZcm29m8m4HsTsYYco0pTHbYIoptnNZvtEwzD+udb6nSiKGoZhRKZp9nzfd+fm5tyFhYXsZU2F2MMkISZERgxOg4TARYD5+flfH/w6RH5Wxe5yScr2LxqGcfny5cvZPmolMk9r3VFKZbZCLNYaInC9cC/0nx9Ka3V36C/KTUMxOpLM8ZkpO5mrIBGfz1AK21Lb7S0n7zJWox/Eg9aKPn4Qs1p3t2ePtd3kNcT1Q6JI/0wlWRQN58B3pZLnt5UzsHMG40ULxzYZd3Lb877GHYuxkRyPHy5uzwbbyw5PFqhtepiGIlLp/r+OObnk8XesVOMQQgjxcVGkabkBfoqHJj6N60VDuy75JMdOtsuGoD358vLy8o8+eefly5fTiEWIfU022YXIqEql8k/m5uYKhULhn0ZR9JJS6iWl1NZ8MSEetSpQUUr9DlCtVCrVdMMRe4llWRe63W7OtrNdLXP2rTXGnFv83vzBtEPZN7aSCmfPraUdygMrl2xsy+D3/sEXkxZx0rJsT8tbBnnL2E4+PExF6Vb1mf+JJBvwsRaNkFSUfVqrxuTrPvtg8d0SVE7BxDQU4yMWpqlwbHO7kmvreT3ubP2eXDZ+1Lhj8excia//t7/A98/f5Pvnb6YWy9d/67lh2AQUQoh9J4oHCbHPeY8Wj8aZ+YPUmz5vXryddih3Fcfx9Nzc3FxVeiEKkTq5shEiw4rFYgx4Wuua1roCHAFqwDxgIG0UxYOLB7ea1tozDONHWusV0zQbgJdybGKPaTabUalUIgzDBsna4y51F+nrDgZet91ANoB3Sb3p03KzN2j8Xli5pH3cE9NFSsVkwPcwzmIQ6VGAaSosrQCT0ZEctpWc1u5/4jS5lTMIorsnxEZHcp/bsu9uiVrbMjGN5GS1aSjsQVvEfM5gJG9i5QxMU2GqIe9vuENypsHkWJ6piQIz5ZGPJTR3w+HJwnYCU157hBAie7TWRLEmzl6B2J7kFEzsXnbfD+M4Nk3TlAtMITJAfhCFyLDFxcU+SQLsdeD1U6dOvR5F0YTW+l8BBaRaTDy4Pkni6w+UUtVKpfKNtAMSe9fq6mpvdXWVEydOXAAmgNNpx3Q3K+vJDKullRbjjiWzxHbBmxdvc+VmJ+0wHkipaFEet/mtXz/O0zNjUhkm7pthDBLvg6eOPIeGy9hIji88fYAoTpKSySzE3q79/X/ll6aZnXLkeSOEEBkVxUlrwvBTDrSIR2t2Ktvtmg3DGNFaZ/JgqBD7jSTEhBguNaAB/Aul1ITW+jTwODBHUnEhP9Pis3hAC1jSWlcNw6jGcXzeNM2NtAMT+4PW+ppSKvMViOeXN5g5OCIJsR3kBzH9IObKzS6V6+20w7kvVs6gVLT4wtOTfOHpA8xOFRmX2T1C7FszB0c4M3+QtXqPtXKP85U7O/r3zU4VefywwxeenpRZhUIIkWFRHNN2g12tHr5XlmlgW2baYTxS404y4zTD8rlcrpB2EEII2TwXYqgsLi7WBp9+49SpU9NRFP16HMcvKaUmSCrG5GdafBYPWFdKLQBve5739tzcXGdhYWE4+5WJYVTVWqMy3n7rfOUOJyUZtqP6QUzLDbhS67C00ko7nPtimQblcZsvPH2AV16YwSkk7eaEEPvTTHmEmfIIa3WXtfrOJ8QeP+zwpWcP8UtPTzI9KftqQgiRVVGU3RliVi5pkbyXjDk5nEJ2t8SUUnmttbxxC5EB2X2lEEJ8ng3TNF+P4/htwzD+T631l7TWZeCrJLPFDqQcn0hff3D790qp21rr78Zx7JqmuZLL5VpHjhzpLCwsZG91LvayC0qpzCdgK9fbBJHmzYu3eXyqmPn2G8NoaaXJ+eUN6k0/7VDuS7lk88R0kd/69ePMThVxCjmMjCd4hRC748VnD+EHMX4QU2/6vPnebVw/xPUffqlVLtk8dqDAf/HFx3jysTGefGyUA2MySlgIIcSDKVgGxUKmq6nuW9G2KOyxqjchxM6QhJgQQ+oj88VqACdOnJhQSk1rrTPfjkzsmhgIgZvAqu/7bxeLxXBxcXE4B/aIoWcYRkNrnfnnX8sNaHYD6k2fQzKbZUe0eyFrdTeTLWQ+i20l7RKfnhlj3LGkMkwIsW1rltfx6SJ2zsC2DPqhATx8Qsy2DEqjeeaPjTNTdqQyTAghxEMxDbXn1rF78d8khNgZkhATYo9YXl5+ffDptz/RTvFXgGmSlopi72sAq0qpP9Bav+37vrRFFJlRqVQWnnnmmVAp1SB5Tcrs69K19S6vvrbEV39tjpmDI9IW7xHZqpw4X9ng7Lm1tMO5Z+WSjW0Z/N4/+CK2ZWxvfAshxCe98qWj+EHMK186mswVq7v84Ec3qW16LN3jzMSZ8ggzB0d48ecPUS7ZvPLC0R2OWgghhBBCiP1BEmJC7E19rXUNqCilbK31LOCQJMakneLe4g1uNcDTWq8qpW6TzGraKBaL4cLCgk43RCE+xgdWgSkynBDTGqJYs9nps7LuMjddpJjhnvTDIgiThFjXH64c/dHyCBOjeWzLwNpj8xaEEI+eoZKqrnEnh1+yefroGOWSjVPIEcUaP4gJI00U/3SJ5tgmhlJYOcXURIGpCZsjB0coFa0U/yVCCCEemALTVJlsr92P4qHr1CCEEI+K7OwIsQctLi5uAK8Pbpw6dep0FEUTcRx/TWs9bRjGy+lGKB6hGlBVSn0HqC4vLy+kHI8Qn8kwjNtxHP+BUuolkqRYJsWxxvVCfnxpE9cL+TtffpLjR0bTDmvoNbsBb168zcq6m3Yo9+VvvHiMZ+dKUhkmhLgnVi6pJC2XbOaBF3/+EABtN8D1I67d6tJ2Q1pusP01J2fHtytQbcskb0nyXQghhplpKBw7l8nDVM1ugNeXceJCiP1JEmJC7A81klZ6fwhMABWSarFp4ElgdHC/yLY+yVyw/wi4wApJe8RV0zQvRFHUSDU6Ie6BaZoeSQXjUDxfbzd9AN672qTdC3nuuLxUPgzXD6mstKgPHtesmymPMFN2OHbIkWSYEOKh2ZaJUoqZsoMfRPQ/cjq/XLIxTYVtmZhm9qoJhBBC3B9DDV7TM9h23fVD+kH2EnUPo97yaXT7aYfxqbTWfcMwvLTjEEJIQkyIfWFxcbE2+LQ6NzdXKBQKC0qp01rr03Ec20qpaSQhNgz6QKiUWgDqURS9FQRBrVqt1j7n64TIDMuyvCiKqlrrhspg+5BPqjd96k2fP7/apNENJCH2kFwvYmmlRbs3HC0TZ8oOZ04c4KgkxIQQj0DeMshbBqMjchkuhBB7nVIK2zLIZfCQg+tFwN6qELvd9Gh2g8//g+nph2EoCTEhMkBW4kLsM9VqtT83N1fL5/NvGYZxwTTN/xfIx3H8ReBAHMdnDMM4TFI9doBk5pjYfR1gA/gzrfWKUmpFa70MtJVMRL7IAAAgAElEQVRSq3EcB/l8vpnP57N7BEqIu5iYmOg0Go0LvV7vAvAc8BRJlWqmvfnebZyCyV96boqCZTA1mdnxZ5lVWWlz+UaHessnjLI92tCxTR6fKvLis2W+fOYxSYYJIYQQQoj7YhrgFExyZnYrsSorLZyCyexUMe1QHlplpb3d3SOL4jjuaa07acchhJCEmBD7UVytVj3AA+pAFWB+fr4Qx/G0UmoWKJBUjMmU1fSEgBvH8SrwgWEYlZGRkQsXLlwYijZzQnyahYWFEGjMz883Bm0Th6JUqN7yMTsK1wuR5dODabkBXS8cigHeOdNgzMlRLtnMlEfSDkcIIYQQQgwZpRSmoTCymw/72CzLYddyA1w/u5eWhmFE/X4/uwEKsY/Ijo4QAoBKpbIw+PS7W/edOnXqdBRFE3Ecfw1AKfUrJMmy6V0PcO/ygFocx8tAxTCMt5RS9Y/8fwixJw3m3qG1HoqWrUkiDP7eN9/h5Ow4//ArP8e4YzHmyFLqXp09d31oZoc9caTI13/rOcYdK+1QhBBCCCHEEMpbBjPlEa7WummH8qnOL28wUx5hfnY87VAeWmWllemDd4Zh1KrVajXtOIQQkhATQny2jmmaxHFcAVBK2VrrEWAGKGitC0qpEmAxBBvaKdIkDbq3KvM6WusQqCulPKVUzTCM64PWiLdN02ymGq0QuyCKIpekStUjqRIbijWJH8Q0OgGV6y1mpxzyVhErpzCGYB5a2tpuiOtnf1bBTHmEqYkCtmVgZnDmgxBCCCGEyD5DkawnjeyuJzc7/aE/ANbuhYRRjB/EBFEmE2J9oB/HcfYvhITYJ4Zi80kIkY7FxcXLg08vbN136tSpUeCpOI7n4jh+HPgSUAZe2v0Ih0ZEMhOsClS11heUUg2l1PdM0/QWFxdr6YYnxO7zPG8FWLdtuwbMMSRJ9XrTp+0GvPra+7zywlFeeeEo5ZKNbWX3QjcrljJ+anPLKy8cZaY8InPDhBBCCCHEA7NyBuWSjVMw0w7lU73zwSZ+P/vr88/ywWqLzU6feiuznSg2gJpSqpd2IEKIhCTEhBD3qw/UoijyTNOsxXF8UynlAH+qtS5oraeVUkVglKS14tY8sjxwIL2wd9RWhUtnMBOpqZTaIHmsqkBfa72hlGporRuGYdSUUp5t240gCKSHtNiX5ubmwmq16mmtF5VSCng57ZjuVRhr2m7Iu1eSkX4vPz/N9OSItE/8FPWmjx/E26c3s8opmOQMg5Oz40yM5tMORwghhBBCDDHLNDhUKuDY2b1GqLd81hsea/Ue406OsSGsFvvwRofrt920w/gsodbaM00zuxdCQuwz2X1VFkJk0uLiYh+oDW4Ab2/93unTpyc8zzsdx/G0Uuqw1vq0UmpCaz0HjCql9nJCzNNa14BrWuuqYRiXSarCFqQKTIiftbCwEALh008/fRHoKKWGJiEWRZqWG/Duhw2u3OxwcnYcx85JQuxT1Jt9Wm6Q+aHdjp3Dtgzmj41jWxmefi6EEEIIITLPyhmUx22KWU6INX1uN33W6i6UnaFNiC2ttNIO47OESikvDENJiAmREdl9VRZCDJ2JiYlOo9G40G6380qpvGEYbxiGkYvjuKCUykdRdEApdWCQGDtAUjX21ODj5OBjnmRG2QhJldlui4Aegz7PwBrQ01p3BvevGYbR0Vp3gTWtdQ9YNQwjBvqGYXj9ft9TSvUsy4q63W6jWCzKwkeIT2EYxp+GYfijXC733wMmyc/+UOj6IX4Q8a/euMrEqMU/+W+excoZlIrDdyG5k5ZXW9y4k/0OIS8+e2i7VWKGRz0IIYQQQogh0OwGvHnxNtfWu2mH8pluN33Onlvlr/ziNDPlobkUY2Xd5dqtLn9+tcmHNzpph/OptNY1rfW7cRxnN0gh9hlJiAkhHplBxUfjbr/30ksv5arV6mg+n59WSk0rpaa11oUoigqGYRRIElGFwa0MpLWjrEnaH/YBTym1OUiGNUiqWC4DTa11wzTNy1rrTqVSqaYUqxBDL5fL3fZ9fzOXyw1d+9Ao0kSRpnqri71hDMV8rDR0eiGbnX7aYXyucslmpjwi1WFCCCGEEOKhBWFMvenj+lHaoXymfhCzVu/R6mW7m8MnuV5IvenT7Ga7E4VSygcalmUN3fWuEHuVJMSEELviI8myBlC516+bm5srFAqF6TiOC5ZlFYIgGB1UnU0opXJKqfuuIlNKbbU3BCCO45phGJ7neY1isRguLi7KyR0hdsnWz9szzzzzL4A5pdRXUw7pvtWbyQDn3/xf3mZ2qsjf+suPc/zIKMePFFOOLBtW1rtUMtzGZNyxGHNy/Cc/d5Bn50pphyOEEEIIIYbcN793ibV6j7PnVtMO5XO13IDzyxvYeZOWGw7mIxfSDutTRbHG9ULevHib7/67FeotP+2QPtNgpMZCoVC46+FxIcTuk4SYECLTBu0GtwaQhoZhRKZpmnEch0opc1C9dV+01v1cLre9GDFN0wX6xWIxbDab2T6+JcTetaq1HlFKeSTrk6Fbo/hBTMsNuLTWxjAUtmVQLtn7tuIo1hqtoeuFtN3sHojMWwbjjkU+Z2Ca0itRCCGEEEI8mHrTxx9UXG0dmhsWjU7AyrrLZrtP0TYzO0+s50dcudndfqxjnXZEn80wjL7WutPr9WSvSYiMGLrNJiHE/rK4uNgHap/7B4UQQ63f7/9+Pp9/HvivgInBbajUmz71ps9itcmZ+YOcOXGAV144OlS9+B+lINT4QcTVWpel69mtEDtUspk/Ns7kmI2T4aHnQgghhBAi2968eHtoKsM+6b2rDd672uDxqRHa7jhn5g+mHdJd3dzo8X99/0Ou1rqZrw4D0Fpv+L5/eW5urre8vJx2OEIIJCEmhBBCiGzwTNOsxXH8BvAF4Pm0A3oYa3WX8yQtPSZH87zywlFMU+HYZtqh7RrXD9lsBwRhto9tzhwc4cz8QcYdWRYLIYQQQoj7t1bvsXanx/nKBmt3emmH81DeXtrgys0ux4+MYuUMSsXsVIqdX96gWutytdZls535GcUeUFNK1QFvYWFBBk4LkRFy5S+EEEKI1FWrVe+ZZ56pAa8rpSYY+oRYj7V6jys3O9iWwa/+4mFsy9hfCTEvot70CaJsX/vNlB3OnDiQ2bYwQgghhBAi25Jk2B3OL99hrT7kCbHKHUxD8ZWXZnEKuWwlxCp3tq+xhoAHVIF6tVr1Uo5FCPERkhATQgghRCaMjY012+32W1rr40qpE8BTwGjacT2MZjfAUPDf/cufMDVR4C+fnuKpx0Z58rFRCpaJYezdmVX1pk/leouul835YY5t8vhUkdkph3LJxsrt3f8LcW/iWOMFEc1OQLMb0uj2f6bC0SmYFO0chydt7LwhbTaFEEKIfezWpscPf3yLn3y4yU8ubw7d3LC78foRSsGr313iaHmEv/7iMR47UODIwd1vAx+EMUEU88N3bnGr4XP23Cp+kO3Ddh+xAbwex/HltAMRQnycXMEJIYQQIhPeeeedAKjPz89vaK0bQDYzKfchCJMLtnc/bDBTHuHE0TEOlWyiSKOzc9hyR/hhTMsNiDI66TpnGow5OZyCiW0ZaYcjMkADUaTx+slzd6PV/5lNl/HAIoo0k2MWOVOSqEIIIcR+5gcx19a7XL/tDn1l2JZ4sHZfWmnhBzGb7T6To/lUYtE6WZvduNPj2vrQPcZ9rXVNaz0U5WxC7CeSEBNCCCFEphQKhT/0PG8B+JbW+nlgIuWQHom1eo9vfu8S447FmJPjlReOMlMe4ZUXjqYd2o6oN32WVlq4XpR2KHc1MZrnV39pmuNHhroIUTykykqblhvwze99gOtHXFvv0g/iez59fObEAaYnC/zV549w/Mgox48UdzhiIYQQQqTJ9UOiSPPqa0vUmz5vXryddkg7ou0GvPvhJr/9zXd47skJnjs+wcvPH2F6ssBMeWerxdpuyNJKiz/+yS1++OMa9ZY/TJVhAGitG4Zh/GmhUGikHYsQ4uMkISaEEEKITAmCIDRN04ui6AZJ3/XTKYf0SIVxstm+Vu/hBzHvXmmQMxVjIxbFQo7RkRxWTmGo4ak+2aoCq214hFFMuxdy7VaXzU6fMKMzxHKmYtyxyOekOmw/0Rpirdls99ns9Klcb9FyA9puiBdERLHmfooa225Izuxzaa1NFGuiOObwRAE7L5WHQgghxF4Sa43WcO2WS9sNqDd9mt0g7bB2RacXcmvT4/Jam0anj20ZmKbCsXPkTIX5CNrAt92kOcha3aXlhlSut6htJNdLGW048VkaSqmWaZpeEARD3/VEiL1meHZahBBCCLGvnDhx4m8AR4HfTTuWnTRTHmFyNM8vPT3J6Scnee74BOWSPVSb6W032Qz4zh9V2ez0eeeDTeotP9NzFJ6dK/FPv/YLlEs25VI6bWDE7otijeuF/PAnt/jhj2/x40ubbHb6j+R7Hz8yyhPTRf72r84xO+Xs+OlpIYQQQuyepII84tXXllhaaVG53ko7pF23dY3y27/xNOOOxfyx8e3uFw/rfGUDgG9+74OkQmy4H98F4MLy8vLfTzsQIcTPkgoxIYQQQmRSFEXvW5a1GsdxFSgA0ymHtCPabkgQJpVitzY93v2wweyUg1MwOTk7Tj5ncKhUIG8ZqSfJYq0JQ81mp89mO+DaehfXD7l6swvAhSsNPD+i3vIz2yoRYNyxKBUtyiUbp2CmHY7YJW03ZL3h8ScXbrG00uJqrUuv/+iep5vtJLH2g3dqHBzP85WXZrFyBqXiHh8YKIQQQuxhyWGaiIvVBherTS6ttam3snvoaye5fkg/MPjjn9winzM4X9ng8GSB6QMFyqU8tmVSHrcxTUXRvvuWsx9E1Jt9un6I64fcvNPD68csrSQJsLU7vaFrj3gXF7TWl9MOQghxd5IQE0IIIUQmXb58+X2AEydOVEnmiO3JhFjLDWi5sN7weXdw38lj48lJyy8dZdyxsC1z8DHdhJjWyUVsbcPjys0ub15cp970Ob+8kWpc92vMyVEataQybJ9puQHVWpfv/rsV2r2Qlvto2xxtdpI2jC03wLYM/sovHsYp5CQhJoQQQgyxMNK03IB3Lm1y9q3VoZxn9agkB94ifvjjW9v3bVXIn5xNrl9OHithWwblkn3X77E1H6ze8rnd9JJq/XaftTu9XfpX7Dyt9QXDMGppxyGEuDtJiAkhhBAi635HKXVKa/0UkB/c9rRr611ypsG3vn8F01A4BZPpyQLTkwWmJgsULJP52XEs02BiNKl2elSb7kEY0+wGNLoBzW7AynoX14tYWe/S9cJBVU2M149odvoE0fA19Z+dKnJ4opB2GGKXNLsBQRjz9dfep9ENqLd8wh183ja7AYaCV7+7xJNHRvl7f+0pnEIOx5ZqxGFVb/rUm32WV1t0eslGXhDF28+tj74OOraJY5vMThV57GCBIwdHODEzxqiTw/mU0/JCCCGyaWXdZWU9OUxzbd2l3vIJwuFb++6kG3d6bLaTuaymoSgWciilsHJ3n9ITRRrXj5L3zzCZPZzVmcMPYAPoW5b1BvBoenILIR45WZELIYQQItOUUhWt9SgQsk/WLq6fnL78aAVLvTzCZrtP149wbJPDkwVsyySfMx7pJmuswQ9iur0wOa1Z79FyAyorrb3Qzx9INqxtS5IT+0UQxvhB0orHD+IdP9UdhMn3X1pJNob8IMa2ZPNsmPlBTMsNkk2/Tp+L1SZ+EFNveYOZMj99To05OcYdCz+IiWKNlTN4fMphJJLXHCGEGDaul6yHl1ZatHvhvq0M+yxeP8LrR2x20o4kE/qAt7i4KNVhQmTY3dP1QgghhBAZcvr06QnP807Hcfw1pdRX044nq2aniji2ybiTwzQVjp3D/ozZY203aRtXbyatX1q9YHtOwl7227/xNDPlEV554WjaoYhd8PXX3mdppZVKa8+tlkFfeWmWr7w0i1PIYRpyCTYM1uo9rtzs8K3vf8janR5r9Qdv5VQu2diWwW/+2hNMTxZ4+fk92QFYCCH2jDcv3qbe9Hn1tff3xdpYPBpa638GVD744IPvpB2LEOLT7YtT1kIIIYQYbkEQhKZpNrTWNaBKMk9Met59gt9PLtYVYBhJVUM+Z2CZd9+Ad/0I14vo9SOCUBPFyW2vc+wcBakQ2/OS53dIoxvQdsNUYtiquGx2A2qbHkfLDiPSOjHTNtp9+mHMxWqTG3d6tN2HrwjYqhpcWXdx/ZCL1SYHx/IcGLexcgpDSZJUCCGyoO0GtNyQaq3LesPfN2tj8dBCIDQMow5IdZgQGScJMSGEEEJk3uLiYge4MD8/PwF4WuuvAnPpRpU9txpe2iEMhdkph8mxPT+Kbt9budVlaaXFe1ebXLmZTh+fIIypN33+/GqTQt7klReOMmOPpBKLuDd/tnyH2qbHN7936ZFVBTS7Sfvbf/3HVRw7xxt/VuM//+XH+PKZI4PqMUmICSFEFixdb3O+coez51YfqjJY7DsdoKGUOre0tPR22sEIIT6bJMSEEEIIMUyqwALwLNAEnkszGDGcxh2L4iOcuyayaa3e4/zyxsdm8aWltuHx7pUGLz03xaGSTf5T2piK9KzVe6zd6XFusc7NjWQ22E4UBQRRTL3l886lDfwg4uXnp5meHGHMkdckIYRIQz+IaXT7vHe1yYUPG7x7pZFaZbkYWlWt9YUoihppByKE+Hyy6hZCCCHE0KhUKlWgOj8//0Wgo7WWhJi4b+OOhVOQtnV73dqdHucrd2hnICF2a9Njs9On0enjB5EkxDJo6/lybrG+o1UBW1WDP760yaW1Nidnx3HsnCTEhBAiJX4Qcbvh88Mf36JyvcXSSivtkMTwqQILlmVJQkyIISCrbiGEEEIMHdM0/00QBI5S6jmt9ahS6qm0YxLDo1zKY+UkIbFXeUHErU2fGxs96i2fIEx/9kcQxoRxzI07PSZG8zw7V0o7JDHQ7oV8sNrmT35yiz/6cY1609+Vv7frh/hBxNm3VimXbP7Jbz67K3+vEEKIRLMbEIQx/9vvL9PsBvz51cYjaZMr9pWe1noNOG9Z1hvARtoBCSE+nyTEhBBCCDF0FhcXVwBOnDjRUEpmr4j7Y1sGpinPm70qjsH1Q7x+hB/EaYcDQKw1ROD1I1xP2jBlSRjFbLb7rDf8XZ0XE0WaKNKs1XuZaOsphBD7TRDG+EHM0koL14927UCE2FMikq4lm4uLi7W0gxFC3BtJiAkhhBBiaPm+/0oulzttGMbvKqWmgem0YxLZN+ZYaYcgdlDLDThfubOryY179c6lTVbrPc7MH0w7FDGwcsvl66+9T7uXTqJy6XrSmus7f1RlerLAy8/L25gQQuyktXqPtXqPb5xd5tJaW+aFiQemtb5oGMbfLBQK0ipRiCEiCTEhhBBCDK1isRj6vt8CLgIxMAHkAemHJ36GYSikoHDvi2ON60cEYTaqwz6qPziNLrKh3vTZ7PTxg5gwSvf/Za3ewzQUUaxRCgx5sRJCiEfKD5IZjldudrha69LphURx+m2VxdCqAjdM0/SCIJCsqhBDRBJiQgghhBhai4uLnbm5ufcLhcI/Ar6mtT5AUiVWSDk0kUGFvIlpyCbzXuf1Y1ZuuTS72WtD1+wGkujIkDffu82VWpd6K/02WWfPrXL6yQl+4y8+hm2Z5C15ngghxKNUb/qcPbfK+eUNzlfupB2OGHJKqe8oparSKlGI4SMJMSGEEEIMtbm5ubDRaDR6vd7bSim01n8dOEpSLSbENstUWDkpHtzrojim7QaZrMQKwph+BuPar84vb2RmZkw/iGl0Apaut5k5OMJMeSTtkIQQYugFYYzW8P+dv0G96XN+eYO1upt2WGK4rQAusGCaprRKFGIISUJMCCGEEENtYWEhBBqnT59+2/O8CvAcMIokxMQnWDkD25KE2F4XRZqWG+AHUdqh/Iww1JmMa786X7mTmcSpH0Q0uwFLKy1sy5CEmBBCPAJBFBNFmrNvrdJ2w+25jUI8hBWgXqlUFtIORAjxYCQhJoQQQog9YWJiolOtVr18Pv8qUAL+D2BEKTWTcmhCCCEy5FbDw+vH1Fs+WRof0+kF/PjSBlMTNs8dlzMdQgjxoOpNn3qzz/f+wyo37vSoXG+nPitSDL0O0FFK/d9xHC+lHYwQ4sFJQkwIIYQQe8KgUiw8derUUrfbzeXz+U7aMQkhhMgerx/j+mFmqsO2hJFms93H60sVoRBCPAw/iGm5AZdvdLhys0PLzd5cUTF0QsCL4/i6YRiX0w5GCPHgJCEmhBBCiD1lcXFxKxH2i88888y8Uup/0FqfJmmlKPYx148ytwEuhNh99abHZqefdhg/o+UGnF/e4PiRMU4eKzF72MGxzbTDEkKIoVHb9HjjRzd562KdN9+7nXY4Ym/wgJpS6jvAt33fr1WrVS/toIQQD04SYkIIIYTYsyzLcqMoqpDMFCsB00Ah3ahEWqIs9UYTQqTGD2JcP7tVWF4/YrPT57GDBZCEmBBCfKYgjIk1XL3ZYb3ps7Lu0sjgoQcxlEKgpbW+qJS6YZqmVywW5XSdEENOEmJCCCGE2LMWFxdXgH82Pz//EvCS1vqrwFyqQYnU+NKGTAgB3Nr0WKv30g7jU93Y6PHOpQ1mpxzGi1ba4QghRKY1uwF+EPPqa+/TdkOWrrfSDknsHR3gfcuy/hFQW1xcrKUdkBDi4UlCTAghhBD7QRVYUEqVtdZHgZcBA8inGpVIRbsXYhpKWpHtUWGsabvZmw8FkMspbEued+Kz1Zs+lestXD9MOxQhhMisetOn3vJ5e+kOd1r9/5+9uw2O68zuxP4/995GNxqvJJsUJJBUj0YUW0N5hXmxNmVJHiV2PM6msmPtuirrD8lMtmprUxVnK1X5tKlyrZNUrV+SWtsbu8opO8nItclOKjOrGXs9JY1n1pgZaU1pNBI4QwhNEgSbICA0wAbQr7fv63Py4TYojiSKpATgdgP/X1UXQXQ3cADcvn2fe+45B6ub3b5876eBFAAwlmW9oKrLAKpIkmNEdAAwIUZEREQHXrlcrgConD17NiciU6r6eSTHQUyIHUJNN0Q2YzEhdkDFsaLphgj68KRYxrEwlLHSDoP6XK3hww/jvm7rSESUtlrTx8JyE//2/Du4vtFBy+VFBLRrAgCRZVlfAdBmZRjRwcKEGBERER0ajuO8DmAoiqK2iJxR1X+CZL7YaMqh0T5yvRjKcWIHVhgb1Jo+orj//si5IRsjOS7B0pbN2Mjn+jch3vEj+GF8q/qhMJ5NOyQior7g+hHWt3185811LCw3Ub7RxPq2By88FBcQtAE0jDEXReSTIvJo2gEdQAGAQET+JYArABYbjcah2LiIDhOuxoiIiOjQmJ+f3wKAUqn0hjEmEhEPQC7lsGifxbHCmP5LltDuMIq+bZlkWwLblrTDOPRsK/lb9Ks4VsSxwg9N327LRERpiGOF60VYWmvjWrWNpbVD1cUuUtWuiFRFZCrtYA4oAyACcMW27bn5+flDtYERHRZMiBEREdGhs9NCEcA3SqXScwCeU9UvASimFxXtl4UbDRQmsjh9Ip92KLTLFm40cX2jk3YYd1QYz2L62HDaYRx6D58YwZHR/u+Y+6Mr27jZ8PGl/7iYdihERKkqL7fQdEP80//jAvwwqQQ/RKoAPMdxnkfSvm+R65dd5wGoisgLAL7ieV61Uql4aQdFRHuDCTEiIiI61GzbrsdxXFHVN5EshGYAWOB8sQPL9WP4AbufHER+aBBG/VtRY7FCrC9khyzkjQPbFqiibytGW26I7XaQdhhERPtOFTCazARtuREurzRR74TJ+3zcv+/zuywCEInIZVXdAtAOw7ALvLt+AXAZSTLnUQACoH/7Afeveu82Z4xZyWQy3sjIyKHZyIgOIybEiIiI6FCbn5+fAzB37ty5l+I4zqnqXyNpo8hWJAfU9fUO0J/nv+ljqjU8NDph2mHcUW7IRj7LJVjaHjiSQxQr8lkbsVG4Xn8myK+stFDd6qYdBhHRvjOatEZ888o2Xitv4ttvVFHdPnQFO20AdWPM71mWNTc/P1/ZuWNn/XL27NmqiEyp6u8hOcfLucj3bw5AWUR+Z3h4uD43N1dPOyAi2ltcjREREREl2rlczut2u38AoADgGVWdFpGTSKrFrHTDo91Sa/iYHMmkHQbtgdVaF7VG/7ZRmhhxcHwim3YYh17GtmBbwHQhD9eLsOy5aYf0geqdEH4fVzwSEe2FpbUOttsB3ryyhaW1DpaqbbS9KO2w9lMAYEtV37As60eWZS1ms9kPTNI4jrMIoBpF0f8uIg+q6t9FcmEfZyTf3esAtkXkqwBquVyuXq/XD13WlegwYkKMiIiICMBtQ5N/v1QqFZG0KfkPkCTHHDAhdmDUGj6TEgdUvyfEJkcyKIyzG2vaMk6yO58+NoztdoDljf5MiDXc8LCdBCYiwtJaG8sbLr7618todSM03f6t/N4jgapWAbwK4Kvdbre6sLDwgYma+fn5RQAolUp1Y8yMiPw8gEkwIXZXIvJDVV0sl8tfSTsWItpfTIgRERERvYfnedVcLvcVEfm2qj6kqv+pqj5oWdYX0o6NPr7rGy4mRofg+hEytnXr5DgNvuUNF/U+nrmUzTgYybE6sV984XNTWFpr480r22mH8oG8IIZIsl3nMjZOHGEin4gOHteP4XoR/urNdaxve/juW+vwghi1po8oPnQ9rucALBpj/khVV4IgqFYqlbse2HieVx0aGnrFsqxfU9XPAficqn4BbAF/u66qrgJ4xbbtV40xr8dxvJV2UES0/5gQIyIiInqPSqXiAajMzMzUPc97R1WfEBFJOy7aHa4fwwtixLGCubCDxfUi+EH/tpizLYFtcVfSL6aO5Po6gWpMciK4X2ecERHthjhW+KHBjQ0X1zc6uLLaSjukNNVVtRpF0RwAr7cmuave4zwAtZE1TLkAACAASURBVFKplEPS4YLt/35aDKBtWdZ1y7LesCxr6dKlS+27PouIDhwmxIiIiIjuoDdUuQ7gNwGgVCr9JoCiMebLIjID4Mn0oqOPquWGqDV8LCw3MV3IY7ownHZI9DHVGj780OD1S/19oe/pB/IonR5LOwzqeap0DLZtYSzvIAgN/LA/k6mvXdrE1JEcTp/Ipx0KEdGuqW57ePmNNbx+aQuvlzfh+snFSofU1wGsXLp06b/7uF+oXC7PApg9d+7cH8dxnDPG/KaqTh3SThdtJG3w/0cAK5cvX/5ayvEQUR9gQoyIiIjoHtm27QVBUBeRsqoCQFdEppD06WdLkgESRgbb7QDHxtmC7CDYabfUrzKOhYxtwWZxWN/JOILCRBb1Vgg/7M9qMdeP4YWsEiOiwbeT9Fqtudho+FjecLHdChAbhR7OXNjOxXdXReTGLn/twLZtGGPKIlJT1QkRmUQyY+wogIM41FSRVII1ATRFZFlVXQArInIz3dCIqF8wIUZERER0j+bn56sAqgDmZmZmJj3PmzTGfBlAUUS+lG50dD/a3Qg/urKNfM7BJx8aTTsc+piur3dQa/hph3FHEyMZFMazyA7ZaYdC7zE5MoRnnziOC0t1bPdp+8TljQ4cZlOJ6ABYXnfRdEP84Tcvo+VGWLjRTDuktF0QkVkAXymXy5Xd/MLz8/M7ZfO/XSwWc7lcbiqO4+dE5DkROajzxWIkVWE/FJHzIvI1z/NWKpVKPe3AiKh/MCFGRERE9BHU63VvcnKy7nnerDFmEsnVnaMAHgXwAJJF5ih4vNWXOn6M8o0WHj89nnYotAuWN1wsb3TSDuOO8lkHxyeyyHBoXd/JDVl45MFRLG+4aYdyR7WGj6NjB/FCfiI66IwqokixUnOxutnFawub2GwGWN3s9m2b2n3gAagBeFVE3gDwRi6X29OETbFYjOr1er3T6cwBqItIRVUnATwHYBjAaSRrlkFct1SR/E7LSKrCFgBUAFSCINgAZ6kR0XsM4o6OiIiIKHW3Da+eBYBSqTQnIlOq+suqOoOkjWIOPN7qS64fYWG5iWefOJ52KLQLljc6WFju36vMR3I2ChNZZGwmxPrN8JCNR6ZGcOFq/yacbtZ9PDCZSzsMIqL7pgr4YYxr1Q5eK2/i229UUd0+9PkJT1VXAHxVVcuXL18u7/U3nJ2djZBcvDcHYO7cuXPne/PFJgEUROQEBnfdUkXys72kqlXf918G4PXWakRE7zOIOzoiIiKivuN5XtVxnC3HcaqWZY0CGDXGfArAuDHml0VkQkSeQNKvv3/PvB4SxihcP8I7m12Ul5s4/UAe+SwPjQfNzuywxXfaKN9opR3OHRUmsnj89DjyObZM7Df5nIPHT4/jfHkT+ZwNLzAwpr8G2dSaPhpumHYYRET3xA9ixKp4+Y0qNpsBXivXsNkMsNUMsNXqz9a0+2QLQADgv0UvOdVut9MqT97yPM8aGhr6bVXN9WYiF5G0gX9CVScAzACwkVSQ9YsqgAaAi6q6LCLLIjIXx3FdVWuqGhSLxfbs7OyhLT8korvjqp+IiIhoF9xWMXarTOXcuXNeHMeTIjIDIOrdePzVB1SBOFZ4QYymGyKO++sEON2bOFb4oUHbi9Ds44RBNmNhLO/AsTgHqt/YlmAsn8HwkA3bEkgf/on80CCMeG6PiAZDrIo4VqzWuqhue5i7WkcQmsPcInFHAMATkTccx/Hm5+draQUyPz+/k5ksP/fcc06lUqkMDw/XVdVT1WMAQiTrln7jAWgZY1YAXLYsq5zL5ebm5uZutZy8evVqetER0UDgCRkiIiKiPTI/Pz/X+3B253OPPfZYCUAJwDNIWpR8HkmLkoMy2DoC0FbVMpJe/s+ISAHAZLphfbDXL21itebif/i1T6F0OpN2OHSf5pa28YOf3MT6Vn93xSmM5/D4qQnkc1x+9avCRBaPnxpH+Uar75KrLTfEdjuZuTOez2BsmNsREfWf1VoXq7Uu/uRbV7G01sbqZjftkPpFBUBFVX8jCIKLlUplT+eF3a/b2ime792+snPfzMzMpOd5MwCKxpiiiDyJ5Jh+Bsk55dFdDKUOAKpaAdAGsAigKiJVJPPWauVyubKL34+IDikeSRMRERHtoyiKXMdxaiJyVVVrIpJV1ZyqTonIztyxUby7yOy3ViXAu9VubQCRqrYBQETqAAJV3RKRZQDLAB5D8rP0ZULMDw1ablJd1HJDjOWZFBsknh9jux0g7NMKP0sEGUeQG7KQz9mw+7H8iAAAGdtCPufA+phj3mxboIpdb7u4U9Xab+0ciehwa7kR/DBGreEnCbHNLhqdkNVgCR/ATQCXAbxtWVZjZGSkH6uu7igMw8i27XoURVVVhYjYAEZVtS0iTu9jR0QcEbFVVZCsZe7FznoiUFUDYKdirgqgKyKrvTXFlqq2bNvu76ufiGhgMCFGREREtI+WlpZ2EkWv7HyuWCzmcrncrd79cRzPiMgkgCcBjIrIo6kEe2dtAHVVnQNQF5E5AHAc53sA2vPz84s7Dzx79uyoqj4hIsVUIr2LWsNHreGjfCPpdPlU6VjKEdH9WNvy8OblbbS7/VXRsyPjCAoTWTx0bBinT+TTDoc+xMRoBqdP5FFebiLpFPXR5LMOYqNwvd0952mMwvVizjokor6ysNzEaq2LF1+9gdXNpEKMbrkJ4OsAXrp06dJLaQfzUczPz7cBzH3Qfb1Wi6O5XG7Stu3JMAxHLctykKxn7kpE6qpaN8ZULcvyWP1FRPuFR9NEREREKSsWi1G9Xq97nlexbbuuqtVe1dh5AEOWZR01xoyKyCjerR6bEBHHGDMmIlkkV2MOAdipb7iXNia3rswEYNBrVdLT7t0CAIqkZclONdjOrQrAsyyr2ntOtff4W1R1XVXHpM8rY66vJzPNmRAbDK4fY3m9g9Wai1Y3QtSnFWLZjI3pQh5jeS67+l0+6+D4RBYZ5+OViAWhgdHd3x7DyKDW9JHP2Uh29URE+2+nqr683ESzG+L18hZabojVzS5a7kAVP+2VnWPqlwG8A+Alx3EWP/wpg2l2dtYUi0Uvl8vVwzD0MpnMUBzHlm3b99QSMgxDz7IsD0A7l8tx4yGifcOVGREREVHKbuvdf8cF5Llz56YATEVRNKWqORF5uJc0exDApIhMiMioqjoA0HvM3eaSearqichO68PKbfdVRaRqWVZHVSPbtufCMPSCIKgC8CqVyj21LRGRaq+lSl9b3ujA9bkWHxSuF926Kr3f5j3dbihjYfrYMMbZirPvjWRtFMY/fkLMD+NdiuinhbHiZsNDYYLJMCJKT9MNsVrr4jtvrWO15uL1S1tph9RvAgCRiHxDVauDWhl2j0xvPcBWhkQ0UPr+5AQRERERAQC2ALQdx1kOw9CK4/gNY4wlIkO2bTuWZTlxHO/07ofjOBbuUkYQx7ERERPHcSwiKiK3L2iDOI4Dy7Ji27YVQHtsbMyMjY0Fs7Oz9zMY4idIhon3tR9fayDjWCgvN5HP2Th9YiTtkOgOag0fi++08eKrK33fmmls2MFnzhzBg0f7bQwgvdfEaAanHxhBNvMxh4jtkdgoXD9GEPVnNSQRHTw7e5ta3Uet6eOVizdxZbWFK6tt3Gz4CDgn7HZtAC1V/Zcismjb9it4T9cEIiLqD0yIEREREQ2A+fn5AAO4sHYcpxHHsa970EJsNzU6SZVRP1cbUcIPDTrdCKu1Llrd/q7qc2wLR0aHkBuy0w6F7iLjWMjnbNhWf7Z3VQWiWNHv+1IiOnj80KDpRlhaa+PKahsLy820Q+pHEZJKqbKIzM3Pz1fv9gQiIkoHE2JEREREtGd2TgicPXt2FsAkgJlUA7qLP/zmFTx+ehz/9PSn0g6F7mCnMmx1s7+rwwBgPO/gb5eOIpthQqzfjQ1nMORYfVwhZtByQ/isyCCiPaTozQnrhPjGv1/Bas3Fi6+uph1Wv9qZsfuyMeblIAheKhaL7V4rdCIi6lNMiBERERHRfqhjAI49W26E7XaI6raH0ZyD0eG+D/nQCCMDo8BqrYtaw087nLs6MjqEsXwGti2Q/iw6ottYAji2oF//WGGkqDX8W7eJkczHnndGRLTD9WIEUYytVoCbjQC1ho/VmjsQ77cpiAGoqlZEZE1EyiKyMTIyEs3OzrKMl4ioz3GFT0RERER7TlUvACiKyDNpx/JhFm400fFjvPRGFTOfnMTMI5Nph0Q99U5SHfPiqytph3JPPnPmCM5MjyGf5ZJrEGQcCxnH6tuWiY1OgB9cvAk/MvDCGM8+cRyF8Wy/5u+IaEDsdGG9vt7B+raHl3+0hvKNFtsifjgXQCQifwRgZWFh4WtpB0RERPeOqzMiIiIi2nNxHJ93HMdNO4570XJD/PDSFsbzGTwyNYqRPp4rdJi88pObA9Emccfjp8cxfWw47TDoPuWzNsbzmb6bJxgZRcuNsLDcRNMN8U6ti7F8Bk+VjmJ4yMaDR4dhW5JUuRER3UXTjdByQywsN9FyQ1xYqqPdjXB1rY2brAq7Ew+AJyIvqWrVsqzzYRgyc0hENGCYECMiIiKiPRfH8XnLshzL6v8WX81uiNfLm3hkagTNs0eRzfRv1chh8oOLN3Hhaj3tMO5Z6dQ4jowNpR0G3ad81sbYsNN3CbE4VjTdEM3lEOXlJi5crSObsTCWd3BkdAhHR4eQHbKTFp1pB0tEfU0VaLohVmtdfPetdazWXLx+aSvtsAaBB2BbVf/ScZyL8/Pzc2kHRERE948JMSIiIiLac8Visb26unoTwByAqd6tLxmjcP0I5xc20XJDfPmXPoHi1EjaYR1a5eUmFm40cfWdNmrN/r9qfWe202cfOwLH7v8EMA2mRieEJcCffmsJw1kbJwvDODGZxYnJHJ7ptVMsTGYBgAkyokNupy1i+UYLtYaHH1y8idVaF6ubyUzOIDTpBtjfFMBNAN8H8Iaq/khE3gbAyjAiogHFhBgRERER7bnZ2dnozJkzPoA6gL4ezKWaVGNstXwsrbXhBXHaIR1qzW6E1VoXbS+CPwAn7TKOhWzGwpFRVofR3gmj5LWwtNZGNmOh3g4wXRhGuxvhbz1yBGPDmZQjJKJ+03RD3GwEKC83sbrZxWptcNoQp8wHsKKql4IgeKNYLLZnZ2ejtIMiIqKPhgkxIiIiItoXIrKiqn8gIv8AQDHteO5mtZacLHrhryqYLgzj1794Ju2QDpVaw8f3f3IT331rHd99az3tcO7Z46fGUZjIph0GHSJ+aG7trwDgxVdXAQDPPz2NqSPD+KXPPojCRBaFiSEIy8WIDrw4VnS8CAs3kgrrV39yE7WGj4UbrbRDGyQtAJGq/kMAtcuXL7+yc0elUkktKCIi+viYECMiIiKifRFFUeg4Tg1AG0AEwMYAdPOq9YbL1xo+Mo6FiRFWXuw1PzRodSMsb7hodPprltPdFCaymC4Mpx0GEWoNH7EBLlYaSTvFI1lMjGQw5FhM2hIdMF4Qwxhgux2gG8RY2+zi2nrn1vuo67Pa/R55ADwRuQSgpao1y7IaaQdFRES7hwkxIiIiItoXS0tLDQCvPPbYY8+ISBvAKAbgePQHF28CAH62dBTHJ7J49onjKUd08N1s+Li00sL//e8qAzfb5NmfOY4nH+nrrqB0SPzgYg0A8Od/s4rpwjCmjw3jmZ85jsJEFs//3MnkQTIAVyUQ0YdSBda3fbhehO/OraO67eHlN9YQhGYgWg33EQWwBqCiqr8rIuXLly9XUo6JiIh2Wd+fgCAiIiKig0VEVgC8BuBnARxNOZx79t231nH6RB6PTI1iLO9gPM9Ksd3m+jGiWPGNV1fwzmYXQWgQGU07rHtSmMji+EQWhfEst40B5voxWt2DNxqm5UZYRRd/8/Ym8jkbLTdCNpNUik0fG8Z0IY981oZjMz1GNAj80KDW8HvtUl0svtNGx4uwVO2g3Q0H6v2zD3hIZtzOAbgoIhdt217MZDL1lOMiIqI9wIQYEREREe0rEVkxxpwXkbMYpITYm+sonR7Hc3/rBE4W8kx67IGOF8EPDV58ZQX+gF3Zfnwii1JvfthYnsusQeX6MZruYLXpvBdNN0TTDW/NGSsvNzGez6B0agxPnT2GseGklaJtCeeMEfU5VcAPDFZqXfzw0iZeL2+ifKN1IPdd+6QLoArgZcuyzi8sLJxPOyAiIto7XKkRERER0b4Kw/BtALVMJvMfqmoBSevEgbB608UfvHgFv/jpB/ALn34ADxzJIjdkpx3WwHP9GB0vwldevobKege1po9Bu7C9dGoczz99EscnhtIOhT6CMDIIY4N40Da8j6jW8LHdCnCz4ePCUgNfnV3GJx8axeiwg2d/5jgmRjL4meLkrX6KzJERpUMVaHRCNDohrqy20OqGePmNKoLQYKsdoOWGaLkROt7Bq2zdYwpgUUTaqvrPRaQZRdHbcRw30w6MiIj2FhNiRERERLSveicbAsdxXAADdQbHDWJcWW3hieIEXC+CMdm0QzoQoljhhwaV9Q7Ky82BqgzbMZ7PYLowjKEME6SDyGiyHUIPR0Js5zXm+jFqDR8AEIQGY3kHpdPjOBy/BaLBEEYGrhdhfdvDdjvAj65sITYK14vTDm2g9ZJhdRF5w7Ztr1wuV9OOiYiI9h4v9CIiIiKiVJw5c+bLIlIUkX+Wdiwf1T/6O5/EJx4cwd97+mTaoQwkPzS4WffxjVdX8OKrK6g1/YFLhhUmsnj2ieP4xc8kVYM0mGpNHzcbPn7j//oJLlYaaYeTulvzxQrDmD42jGeeOIHCRBZPnU263LKtItHuUwVcP0IcK/7Nv19BvR3gzcvbWN3s3mp3Sh9LBKAF4HsAvhfH8dcWFxdXUo6JiIj2GSvEiIiIiCgtN5Ecj0ZILtQauNKad7aSE1Srte6tE8h0b5puhGYnxMVKA+9sdeGHZuDaJAJJ4mC6MIyxYc6UG2Q7VYrmkFSI3Y3RJGHdciPUHB9X32mj1vSRzVhwbMF4PoN81kY+6yA7lMweI6L7E8eKMDZodyN0vBiuH6HRDhHGBssbLtq9doiDdqFIn6oDaInIJQBlVV0B4KccExERpYAJMSIiIiJKxdDQ0Pc6nY6TzWb/FyTHpQMzS2zHX55/B8C7SZHnWSl2zxaWm7iy2sIfvHgJQWgG9oRfYSKL558+ifE8E2KDzPUj1BoewogJMSBp0VZr+LfaKf7gYg0AMF0YxpHRIXzmzBE8fmoCpVPjOP1AHvmszaoxonu0s5fpeBG22yF+dGUb5RtNlJcbuL7hwvUjtNyB6ijdz3Z+3W8BuATgd3K5XH1ubq6eYkxERJQiJsSIiIiIKC0Bkuqw1wAcAfBUuuF8dK9f2sKDN3NJi7Fjw5gu5JFxBBbPEL/PwnITrW6Eb7y6gs1WgCA0iAaxNAzA46fH8cjUKMbzGQxlrLTDoY/B9WLUGgHCeDATs/ul5UYII4MLS3Ws1rq4sFTH6RNJQqz08DiyjoXjE7mkeiw3cEW/RHvCGEUYK1wvguvHuL7RgevHKC830fEiLG90UWt4qDV9dLzkNUYfWwQgEpHXVXVLRL4Rx3FtZGSkXq/XvbSDIyKi9DAhRkRERESpmJ+fDwDgscceOw+gKCKDmxArb2LqSA4TIxk8dfYYCuNZOJYzgE0g95YqUL7RxGqtixdfHfyxHaVT43jkwVGM5bmsGnSuH6PW8Hki+i6aboimC2zU3+00dvrECPJZG7/yzHRSKamCwkQWw6waI4JqrwVpEGO7HeJmw8ffvF1DreHjO2+tIzYK14vTDvMgigB0VfX7qrp46dKlF9IOiIiI+gNXbkRERESUqjiOv+Y4zpMAfgnAGAawdSIAbLUCfPuNKi4s1fEX51fxX/xiEQ+fGEFhMpkrdljPC4eRQb0d4s0r2/jR4hbevLKN7XaQdli7ImmVyCXVQdBoB7i+4cILmBC7XxvbHixL8P989zps28JI1sbESAYTIxk8dnIMY8MZfObMUQBA6dRY8iQ5vPtEOrhUgTA2iCKDSytttLsRfnBxA54f452tLlw/huvHt+aEuX4Mji3cVYpkPu33ReRNVX0riqLFXC7XTjswIiLqH1y9EREREVGq4jhesW17SkQ8AMNpx/NRBZFBddu7VWlSb4eYOsKT60YBP0x+N+XlJpY3XDTdMO2wdsV0YRhZtko8EHbamZkBbd+ZJi9MqluWN96deTSez2As78C2BUdGh/Do9Fha4RHtKzVAFCvq7RDb7QDl5eatNomDPC9zgPgAVowxC0EQnC8Wi+3Z2VkOZCMiolt4URYRERERpW5mZmbS87wZY8yXReRLacezm55/ehrThTx+5emTGM9nDkVF0c4V73/051dQ3fbw8htrB+pE4PNPn8R0YRi//sUzaYdCu+TP/qqCF759DbWmf2C20340XRjGeD6D0qkxfOLBUXxiahSPnxrHeN7BWD4DAGyzSH1Nb/ugfKOFphvih5c20XJDLCw3sbrZxWqtm2aIh42KyJyq1kXkf7Jtuz4/Pz+XdlBERNS/Dv5qnIiIiIj6XhiGkW3bdQCbqloDMAEgk3JYu6LW8GGJoHyjiakjuVuzxjLOwass8ntJr7XNLrpBjNVaF1utALFRHKTCm6NjQ5g6kks7DNoFsVH4oUE3iOGH5kBtp/3IDw06XoRaw0fGsRDFiiCMMZJ18MDRHGxLMJJzkM1YGMrYyGdtODYzZJSe2CigwHY7QGSSStJuEMPzDa5VO+j4EVZrXbh+hJYbMaG+PxRADKCuqnUAFwFs9o4j2R6RiIg+FBNiRERERJS6+fn5NoC5xx577KxlWZ9Q1WcBFNKOazf84GIN2YyF8+VNPFU6hp89exTPPnEchfHsgaqEUAVuNnys1rr4029dxdJaG6ubB/Mq+Z89exSfPXMk7TBoF/ihwfWNDta2uqg1/bTDOfBqjeR3vLzhvu++p84eTarHTo9jupDHQ8eG8fipcYzdVlV7kPaZ1P9UAS+IEceK7/+khpYbonyjgaVqB0trbbh+ch/tuxhAC8ArIvK9OI6/tri4uJJ2UERENBiYECMiIiKivqGql4wx3xSRTwIYBXAgynAio2i5ERaWm2i6Id6pdTGWz+Cp0lFkHQuFiRyyGWug5lGFUVJNs3CjCc+PsbbZvdUq6vpGB63uwR3Z0eiEqDX8Wy3eaHD5YVLJeFDm2g2y1c0kKdnsRhhbbmI8n8FrR3PIZW0cH88iN2TjwcIw8lkbI1kHhYnsQO0zqX91vBixUazWuggjg4YbYLsVYLsVotEJEMaKpbUO/DDGZtPHditAEBooi8H2naqeF5EtVX1dRK5alrUYx3Ez7biIiGhwMCFGRERERH0jDMMygEo2m/0HAE7hgCTE4ljRdEM0l0OUl5u4cLWObMbCWN7BeD6DIcfG+EgGQxlrYIb8hpFBFCvmrm6j3g7w5uXtQzM7pdEJcLPh4xMPjqYdCn1MfmiwWnPRcg9uAndQ7Ow7ltY6tz6Xz9mwLcHjp8ZxZGwInz5zBMcnciiMZzE2nMHQba1nWT1G9+P2WWCul7Q6XFhuwvUjLG90cG0tqQLjXMG+oQAgIucBVIIgeAGAV6lUvHTDIiKiQcOEGBERERH1jUqlEjz33HPR2trav1LV74nIb6Ud015odEJYAvzpt5ZgW4J81sYjD47ikQdHcGZ6DKP5DD776Lst+dI60ftTJwz9GMsbLta2uljb7OKtXiJsecNFFCva3Qh+GKcT6D67tNJCx4vxVOlY2qHQx9TohHjl4k0sr7+/hR+lzwsMRIDyjRYcW7Cw3ETGsZBxrGS+mGWhdHoMuYyNB47kcGwii8JEFg9M5pDLWChMZG99LSbMDo/b37vC2CCKDKrbfq9Faht+aLCx7eFmw0et4aPWCOCHMVrdKJkrGMTJnLAgRhixJWKKFEBVRKoAXlbVdcdx/q3v+16xWGzPzs4yU0lERPeNCTEiIiIi6idmdnbWPPbYY9cBdO766AEVRsk5nKW1d2e/B5EBoJgcHULYhzNJdqrcNuoerm90MH+9gVrDP5SVNe1uhO12kHYYtAvCyKDW8OH6hyOZO2iMSfaFOy0tt1of9LpT5HMOvDBGZBS2JRgfzgxMtS3tLTVAFCs6XgTXj1Hd9uD6MW6sd7BaS6qaWQXW1zxVrYvIJRGpzM/PLwLA4uJi2nEREdGA4jEiEREREfWts2fP/h6AkwB+Ne1Y9ttOO8XSqXFMF4bxUGEYD58YQT7r4KmzR9//BPmpfz6Uvu+DhB8myYGd1oflGw203BDfeWsdsVG4HpMGAJDPObAtwb/73edg24J8ltcZDqKVWhcXlur47//4rbRDoT0ylneQzzp4+EQe04U8pgvDOHViBPmsjZPH8sjnbJw+kX/f81hN1r/0tvet5H0pQq2ZtLG9vtGB60e4tNyE68e4vu6i1kyqwGgg7Px1KwAuicjvAKiUy+VKahEREdGBw5UbEREREfWzCgALgIfk2PXQHL/GRuGHBtvtALYtiIzCDwxyQzYAwLaAbMaGJQLLAjKOBUuSz30Yo4owMjCaVF/4gUGsijhWBJHBVitIWkg1faxve3C9pIVUbPqvai0tO7+LWsNHbshmQmxArda6PFF+wMUm2a+13OjW3zqMFdmMhXorRG7IQnXbQzZjIZuxYIlABBjJObAsQW7Igm1ZcCxBdsiCbTFTth923qPiWHvvhTHCyCCMFUFoYFTh+jGiyKDdjVDvhGi4Ida3PXhhjFrDhxcauH58qyKb+prp3aqq6lmW9YaqLtu2XUdy/EdERLRruHIjIiIior7l+/4LQ0NDnxOR/wzAEQCTace0X1wvhuvFdzxhn886OH0if+tEbmEii2zGwnTh/dUOt0uqwDz4oYEfGixvuHC9CM1uyCqwe+QHye/o+xdrmDqSw4PHhlOOiD6Kb7x6gwmxA25nP7rdCoAbd37cdGEY08eGb1V/Pn56fSi8twAAIABJREFUHPmsg1Mn8hjPZzA+nMHpB/LIZz/4ggNWlH10+gHXWtTbIfwwSWS6fozrG51epZeHWiNpb1hebibvZ02+hg+AAEAXwNdFpFIul38/7YCIiOjgYkKMiIiIiPqZZ1nWsjHmBcuynlHVZwAMIakaO9TCODkR6FgC2xZstwM4toXVzQ+/mDqOk6vmo96V9412cNtV9/sU/AFxba0N/aCzudTXXD9GHCtWa91DOQOP3q/lRlhFFxnbgmUJWt0IGVswURnqXXRgY2LEQcaxMDacgW0LRrI2bFtgWxYmRzPvv88SOLaFfO9x2czhedvaeX/ZqfRquSGi3gUXsTG9j5Pq42YnQhgZNDrhrfsa7fDW+1LQu8/1o+TmxYiNotWNEMWs/hpgHoAmgAVVvYakI8APbdveSjUqIiI68JgQIyIiIqK+ValUvGKxuJzL5V4AkAPwWSTHsIfnzOIdhJFhdUvKltbah+ok90HhehH80GC11oUf8oQ6AU03RNMNb/1/aa19x8dOHxu+rSrXxlDGwsMPJHPJHjqW/6n7so6FwkSSVBty7mFfIf096P196f87XA8Qx0mbw52LL1Y3u7dmVPpRDD+Msdmr9FqtdeH6MZbXO/Ajc+t5ccyLDQ64LoANEZkFcN73/fPFYrE9OzvLqxSIiGhPMSFGRERERH2tUqkExWKxmsvl/kJEVlX1nwB4FP193pAOgfKNVvLvchOFiSwKE9mUI6J78eNrDWzUPdSaPqsi6b7Vmj5EBLVmABHAEsH89QZsS5DN2BDZmekosOTd+Y62ZSHjCCZGMsjYFjKOhdxQUpGWzyatGnNDFvJZB/ncu60Zh3vVZrnM+0/f7MY+J4wMgtjADwzMe14QO1VZt3722y7CCCKDMFI0OiHCyMD1o1uzL/0wRhAaxAZQVfiRgRpFGCuM0WSWZazQ3uN35oQZTeZcvjcOOhACAL6IfB9ATVW/aoxxbdtedhyn+eCDD7ZnZ2fZs5mIiPYcE2JERERE1O9MpVLxSqXSO0jaJXbSDogISKpKWt0ITTfEWD6Tdjh0jxqd4NYcIqL7tbPdeMH9n7vPZiwUxt+tLBvJJcmusXwGji3IZ22M5zM/tT8ZzTtwLAv57Pu/39AuVKjuJLA+qCqr1Q3Ruq1ybrXmvud55tZrqeUmcyg7foSgdx/RbQyASFWrIrLi+/75kZGRaH5+/s7lmERERHuAV9USERER0UA5e/bsrwI4CeD30o6FaDyfQenUGJ5/5iSef/pk2uHQh2i5SfLyt/7121hYbmJ1s5t2SEREB9k2gFUR+bqqsi0iERH1BVaIEREREdFAEZGbqgokA9hzAKZSDYgOtSg2aLkRtltJ1dHESAaZe5kVRPuu3Q1R3fbQ6c0QIyKiXWV6t5sAfABlEdkAUFHVrZGRkWh2dpb9MImIKFVMiBERERHRQCmXy98DgFKp9ASAoqp+KeWQ6BBz/RgLN5p46PgwJseG8PNPHOcssT61uNbGD35yE9eqHdSa/t2fQERE9yMA0AXwLRFZ8Tzv99kWkYiI+g0TYkREREQ0qGYBFHu3h3v/EqVied3FKxdr+NSpcYznM7sy24d2R2wUHS/G8rqLC0t1tD126yIi2iUegCaABVW9hqR6/4KI1Hv3sRyXiIj6ChNiRERERDSQyuXybKlUKopIUVWfAxNilKLlDRfVbQ9/7+lpTBeGmRDrI1GsaLohrm+4uHC1nnY4REQHwU7rwy6ADRGZBcA5YURE1PfstAMgIiIiIvqoRkdHPcdxFkWkLiINJPPERtOOiw4fVSAyBmPDDt7Z6mLmk0fSDol6rlXb+F//vzJ+fLWO7XaQdjhERINKAbQBbAH4lqrOishvG2O+aVnW9xzHWZqenm7Nzs7GKcdJRER0R6wQIyIiIqKBValUPACVUqlUQdKmx0s1IDq0jCoQAzcbPixL0g6HbuN6McrLTbS6LFggIvqYIiTHWjdEZMX3/fOcE0ZERIOEKzUiIiIiOjBKpdKXARRV9Z+lHQsdbv/br38WR8aG8LkzrBRL0x9+8wpWa128+OpK2qHcCw/AGoDrqlqxLOtJVZ3Eu+1guX4nov200xZxVlWvW5b1AoBKuVyupBgTERHRx8IKMSIiIiI6MFS1KiJAUi2WQ9JCkWjfXat24PoxfqY4AccW2Kwa21etboQoNlitdVFr+GmHc688JPuuqyKyqKoKYAyAj3f3Zw64jieivaEAYgAuAFdEtlQ1AHBBRKq2bdfBSnwiIhpwPJAmIiIiogPj0qVLLwFAqVQqIqkU+y/BqgpKwZ986yqeKE7gs2eOYDyfwXieS6/9dHmlhe1WMCiVYTuqqvqCql64cuXK3Llz50Y7nY6Ty+V+Be/uzyZ7N+7XiGi3xQBaAMoAysaYb1uWVS2Xy7PphkVERLR7uCojIiIiooNoVkROq+oDqvqoiDyadkB0uAShwdpWF994dQWfOXMEnz1zFBlHYAnzGHvJDw380OCtxW2s3HTTDud+eZZlXQdQ7/0/ABDZtj0Xx3EFwLaITBljpnr7tFEAMynFSkQHQwDAAHgNwLaqzqlq1bKsqm3bV1WVs8GIiOhAYUKMiIiIiA6ccrk8++ijj560bftor4XiJ8GKCtpHfhhjbTOZXZXNWHiiOAHHdrgV7jE/NGi6Id5a3EZ5uZl2OPdFVT0RqeRyuToAzM/PB7275nr/zpZKpaJlWUVjzBcATInIk737uGUR0f1SJC1ZIxGZFZGVbrf7NQBepVJha0QiIjqQ7LQDICIiIiLaC0ePHvVV9bpt2xdU9TsiMgUgg2QmD9GeU00SY9vtEG9fb2L6eB4jORsZx0o7tAMnjAy2WgG++9Y6/tV3KvjJtTq22wFio2mHdk9U9SURecP3/b+YmpryKpWK+aDHjY6OeqOjo7UwDBcAnAfwKoC/tiyrBqCNZB83hGStzyQZEd1OAbRF5G1VfVlE/kxV/xjACyLyfRFZOHnyZH1ubi7qPZaIiOjAYYUYERERER1Ii4uLPoCVmZmZtud576jqfw5gOu246PAwqvBDRXXbQxQr2m6IKOY5xr1gNKkOW9/2UF5uotEJ4YcfmFPqV1UAtUql4lUqlTs+qFe14aHXVrFUKnkiMqWqJwBMINnHDdQPTkT7KlLVOoCKiMwNDw/Pzc3N7bRpxcLCQoqhERER7T1eMUZEREREh8K5c+em4jjOqer/KSKTqvrptGOiw+XZJwooTGTxz/9h0uWO48R2x0qti/JyE7/1r99Gqxuh6YZph3TfROQTtm178/Pz1Y/7tR577LFnABQAfBFJW8Uv3P6tPu7XJ6KBoEiS5x6AfyMiK57n/f7IyEg0Pz/PuWBERHRosUKMiIiIiA6LwLZtRFF0QVULAI4AmOzdiPZco5Mkaq6stjA8ZOOhwjBEAIuZsY8kjAyMAuXlJirrHfihQRQPXHHUFpJ9kwcguNuD74VlWQ1jDESkDKCmqpMikgOQA3AcQBbA6G58LyLqGzGSJFgVQAigISJNY0xTRC4BuDkyMhI1Go041SiJiIhSxpUXERERER06pVKpCODLqvp5AJ8Hj4tpH/3Cpx/AIw+O4h/9nUeQzdjIZjhT7KO42fDhhwZf+p3z8EODWtNPO6T7pqovAahevnz5v9qLr18sFnO5XG4KQBFA0Rjz9wFMi8hM7yHc9xENPkUyQzAyxrwAoGbb9qsAKuVyuZJqZERERH2GFWJEREREdOjkcrm653mzSK6kngPwywCmwGqxQWGQVNM4GMA1zbVqB20vwouvruLxU+MonR7HSM6GbTE3cS/80MAPDWYvbGB920OrGw1iZRgAwLKsuTiOL+3V1y8Wi1G9Xq97nlexbbsex7EPYFxESgDGVfVTAAoiUkBSNTZwryeiQ8oDUFXVqohUASyqatsY85plWS6A5VwuV7/L1yAiIjp0eLBLRERERIdOb4D87MzMzJzneZOqWkTSRowJscFgAHQBDGMA1zRLa21Utzw02iH8v/0QHioMI5uxmBC7R35o0OyEmL2wgfJycyBnhu0wxlywbfv8Xn392dnZCEC9dwOSCwBQKpWKxpiTqvr3e8kxG8k+0Aarxoj6ld72cRfANRG5ICIXwjB8JY7jWqVSYRKMiIjoQwzc4pGIiIiIaLdMTk62K5WKNzw8/BsARlX1vwZQUNWfR3JyeCjdCOk2OycCv66qayLyLQC/AOAXATyKAZuJ5Icxljdc/OX5VVxY2savff40Tp0YwcMP5NMOrW81OiF+fK2Otxa38dbiNi6vtNHuDmYyTFUXASyKyKLnedX9/v6e51Uty9oWkarjOHnLsvLGmE8hqRr7goiMAvgkktfVKJgkI9pvtye/qiJSVdWLqtpQ1ZcB+ABuDg0NtQG02+1249FHHw0rlUoqwRIREQ0KJsSIiIiI6NDqVU9EAC4CQKlU+mVV3flcJs3Y6I5WRKTi+/75TCZTtCzrc0j+XgMlNgrXj7C25aHtRdhqBTg2nk07rL4WRgY3Gz4q6x1crDTg+jHiWO/+xD4kIm1Vrapqu1KpePv9/Xvf0wPQ2PncuXPnvDiOJ1X1SVWdFJFpALn9jo2I3sdT1TqA6yJSC4LglZGRkWh+fr59+4NWVlZSCo+IiGhw8CovIiIiIqLbFIvFXC6Xm4rj+DkR+byIfAHJfDEeO+8/BVABUBGRPwNQKZfLszt3lkqlIoCiqv4egJk0Atxtv/7FM5guDONXfu4khFscXC9CFCv+8M+vYH3bw8tv7Hsx1V75AxH5fc/zqmkkxO7VzmssjuOnARQsy/oikiTZ1G0P45ZK9PEokgS1B2ARQBvAN1W1GgTBywC8ft5PEBERDRJWiBERERER3WZkZMQguRq7CqCsqgUABRF5FEnV2ESqAR4OdSQnBqvoJcRUteo4zk/NRrFt2wNQj6JoE0ANQGG/A91tq7UuwsjgwlIdxyeyKExkkXEE1iHLjvmhgR8aXFtro+NFWN/2sNUK0g5rN+xs1zXbtr3e/qZv3fYau25ZVl1EXlPVYQDTSNrK5pDMXsyAMxiJ7lWMJAlWAxAA2EKSBGur6rKIuCKyAmBrZGQkQjI3k4iIiHbB4VpVERERERHdp3Pnzk3FcZwzxvwLJImxZ8Dj6L2y0/9uVlWvW5b1ApKqsMqHPens2bP/s4icU9Xn9zzCfZDNWChMZPH80yfxKz93EoXJLLIZ69BsdKrA6mYXq7Uu/vRbV7G01sbqZjftsHZLRUReADB7e7XjIDl37twogEeNMUVjzMMAnkaSjH7utocdls2V6H4pkuRXBOAbqrpuWdbLxphqEATVYrHY7rVzJiIioj3ACjEiIiIiog/XzuVynuu6/6+IHFXVqyIyhaRl2KMARlOO7yCo925zqlq3LGu29/9KLperf+gzAYjI6wBWAPwnACwAQ3sY656LjKLlRni9vIWmG+Hx02MYy2fw1NljsC3BSM5OO8Q90XQjbLcCvHll61ZC7PpGB63ugTk3XEeync4iqXwcVAGAahzHnm3bVWPMOyKSV9ULeLed4mTvNoV3q8iIDqMKksrQdQDbvfe4ZVV1AZSRJMcqvX+92dlZVoMRERHtIV61RURERER0j2ZmZiY9z5tR1RlVfZLzxXbFh84Juxc7VXyq+iaSi/7Gdj3KFD37RAGFiSz+m7/7WFI9Npk9UBvcTlng6s0urlXb+JNvXb2VEDtgronIa+Vy+dfSDmQvlEqlom3bk3EczwAoGmMetizrSVWdBFB8z8MP0iZM9F5628ezABoicgG997pcLjc3Nzd314s9iIiIaPexQoyIiIiI6B5NTk626/X6XLvdXrQs6yUR+boxZhTAl0RkAsATSKqThsATvneiACAic6q6DuBlVa2oamVoaKiayWS8j/A1tzzPs7LZ7J8hmW30q7sZcNp+fK2BjGNhaa2DI2ND+OyZIyidGkfp1DgmRjPIOIPXTlEVqDV91BoBfnJtG41OiO+8uQ4viLG25cEP47RD3Au/q6rvpB3EXvE8rzoyMlKzbbsax3EOQE5VRy3LcpDsGxHH8ZMiMiEiT6jqUQBHAQwDuL3scdA2Zzqcbk96VQE0jDEXRaQqIuuquqiqbQArjuNEqtq2bdvLZDLe5ORkO6WYiYiIDj0mxIiIiIiI7lFvrsdOez+cO3euDiBnjPmCqkYiEoHH2PdEVeuqWrUsa05E7jon7MPMz88HAHD27NmKiDiqerenDJRGJwQA1Bo+ChNZHBnNoDCehT9lYAb4R/VDg6Yb4sZNF7WGjwtLB7tgQkTKtm0f2B+yUqnsJLPfd7L/3LlzHgAYY0YAFFT1JJJWiuP46cQC0SDyALQArBhjrluWVbEsa87zvHqlUjmwr3kiIqJBxCuviIiIiIh2wXPPPedUKpXR4eHhkqqWAHxBVR8A8NxtDztsx9+Kd2eDXbcs67qIfK3b7a7s1UnCM2fOzFiW9S8AfALvb9N24Oy0U/yPPj2FI6NJ9djOVtYvG5sq4PoR4ljxnbc2UGv4eOXixkFti/g+IvICklagv5l2LP3o3LlzM3EcT6rqk6o6aVnWkwCKqlpEMqPx9osM+mWzpsPhVrJWVecA1FX1goisW5ZVDcPwlTiOa0x6ERERDQ5evUpEREREtAtmZ2f13Llzke/7Tdu2qwDeBlBV1WERcZCc2L39dhCPxb3erQ0gUtWqiDQBvC0iVQDrxpjOyMhItFcB2LbtquolACMATiJpxXZgT6LvVI9dWW1hIp+BYwuyGQvZjIXR4QwyjiCfdWAJkHGsfYnJDw2i2KDVjdD1Y3hBjEY7RBgbXKu20WiHaLkR/NDsSzwpinq3d5DMDqIP1rZtG3Ecr4hIXVUdAJuquioiR5G0oB1VVUdERvFuW9r3tlok+qhi9C7gUNVYRLp49/2s27u/rKptEVlU1W1V3bJtu5vL5fbs/YyIiIh234FdGBIRERER9YNSqVS0bXsyjuMZVX0SwJMAZgBM3vawQT4uv73dWQVAxbKsH6tqHcBXbNv25ufnq/sVTLFYzOVyuSkA/1hV/zGAMRzM5OP7ZDMWChNZTBeGMX1sGJ85cxSTo0P/f3v30yNXet0H+Jx7q5tFdWvUmowyLWlsVSJG00kvzEUSeBN4djIQIAaMrLKI/AGMAM4HCJAss4gCOFk4yMLeBMhCBrxUYsRtJwsZtoIeeEbT8nCikjMatTQ0pzhTZN+uuvd9s6hqmaFHo/lDskj28wAX/aeqydNN1q2+dd7feePv/twzP7ntQj7g/3H3Tqn8wc2zeGe+iG/fuBXf++Gd+N4P5/H9H9+Nu+d9vHf3Ur12PIuId5qm+WevvfbatzZdzJPo8PDwWkTsrs+fe+tz6H5EPJ+Z12K1uOBeT/K5lEfr3ueueUT0mXlUa72TmW/E+vms7/sbfd/PpcAA4OlwKS4MAQBgU8bj8Wy5XHZt2x73fX+amce11m/WWscRMWmaZlxr/XxEfCZWTbKLRMR4k3W/jxIRi1i9cDiPiFu11kXTNNNSStc0zWlE3IyIm6WUH2Vmt/7eH2kHZDKZ9LPZbHZ2dvbtiPivEfFPIuILj7KGTelLjffu9vGDm2fx3t0+Znf6uLrdxp9899ZPGmKfutLGp66MYmfcRttmfPpTW9E2GTtXRtG2GaPmg/sJd86HGIYa5/0Qw1Di7vkQ54sS58sSN293cd6XuHl7Ed1iiLduncXsvUW8M1/Ena6PZf/UJ8IulIhYZOafllL+V631kTWEn0K3YpUgOy6ljIdhmGbmTillNyL2m6YZl1L2M3M7VufOiwTuxXl0f3Ol85i4SGqeRkRXa501TbOotd6qtc4ycxar/2eLUso0Vo/dd9q2nQ3DMIuId2P13AcAPAWsngIAgA05ODh4qZSyF6vE2Jcy80sRcZF62HufL3mUv7/X+z7uY9UIO43VKMg31uOj/rBpmlnXdccR0U2n0+4R1vhTHRwcTGK1D9HXY/XzvdQuGmLPfeZKPPfM6u2VrSa+8NzVuLLVxnPPXIkrW21c2frgsYo3b5/H+bLEu2eLWCxL3Lx9Hu/d7ePdu8s4+b/vxrt3l5ctBfZ++oh4LzN/KyJ+q+u608flcfE0OTw83L1z585oPB5fj9VIxS/XWvdj1QT7ckTsZub7Pfa9DvL0uv95K+KvRh8eZ+ZsGIbvN00zvzcF5jEKAJeHXwQBAGBDrl+/vnf37t1R0zS7pZRxrXXctu3VUkrbtu1BrbVd70H22VLKs5n5bCllu2ma5yOizcyrtdaLRMTFfjr3jxC73xCrPVEWEbGotZ7VWod1wmuotZ5l5ju11lvrfVRKrfU4Is4j4u311yyapjnr+35o23a2WCz6yWQyPzo6KrFKx2zcZDIZ7+3tjc/Ozn49M6/VWr+26Zo2qcmMrVHG1qiJrbaJrVFGkxnbW836tiaajMifkRBb9iVqjeiHEqVG9H2JvtQYhhp3z/ufvH/JvRkR38jM3++67ven0+kiHpPHxVOmfemll3I2m+12Xdf2fX+1aZrtiNgupVxt27bNzN31+19cp8p2I+KL6/Pq387M7WEYnm2a5tlYpcrej9dNNueDTiansUpz3aq1ztcLNN5aP4e9kZlnwzD8IDO7WCXD5qPRqF8sFt1oNBpGo9HZ1tZWN5vNOo9RALg8jEwEAIANOT4+vtiT5Ob9tx0eHs77vh+tX9Ddz8zn1+mHcWa2tdZRrXU3M6PWOorV7/YfphNRY5VgWcRq1fydzOwz82attc/Mea31R5l52jTNnfXnvvWz9gKbTqcf9dt/qNar/buDg4M3w3VPlFrjfFnjfOk134et1tpl5jQzb0qdPFTD0dFRxGqvtp/q8PBwNyKu1Vr3Sil763+f3cx8ptY6Xo9b/FkLCXj8XDS6LsYeziLie5k5z8yXa63z5XJ5Ix6j5DIAsHlWOgEAAE+9g4OD3621PhcR/2jTtfD0ysx/HRHTk5OT3950LXx0h4eH1yJidxiGvfirMYx7tda9zHx+vefjXqwaaNditdfjz9rv8TK/7vJhFmnM4p6RvJl5WkqZZ2YfES/XWvumae60bXsaEad37tw5jVWT6wMboQAA7+fSr5QEAAAuhe9GxJ2I+Aexug5yLcSDdDsilhExrbX+1CQlj7flcnm2tbUVbdvGMAznmXllnUDaXY/mu0iTXV0nabcjYjsitmutTWaOY9UAa9fHxbkmI2Jca83MbCOiWR8X7v26+2973JRYJYwvXIwb7GPVABvWH5dYjdot689d3LaotS4yc4iIuv75Dpl5Vmu9VWu9FauxvkNmvllrHWqtXUTcioj5zs7OYv13AQB8ZJd5pRIAAHBJTCaTve3t7b+fmf8pIj4bEXubromnyv/MzJsnJye/uulCePQODw/3h2EYR8SklDKKiN2mafZqrZ8ppXw6M0eZ+fO11lHTNLu11vuTZZNYNc5248Olzjapi9X+XRdOI6LLzFmt9SLpdV5K6dZ7U3aZebvW2tda523bntZaT0sp88Vi0Ut6AQCPklWRAADAZdA1TfMXpZTfycxfjIhfjNWLz66J+CTmETGvtf5BrfX/bLoYNmY+Ho+7ruumsUp3bQ/DMB6NRuNSynbTNE2t9TMR0ZRSttcNsp+ce9ZjGZt14my03hcyIiIy8/2a99sR0awba5/IejThxb6S928y2K9vX5RSyj33n9/7vWdmX0rpMrOs79uXUobMnLdt2zdN0/V9XyJisVwu57u7u/Mf//jHi+3tbZsaAgCPlIQYAABwKUwmk/F4PN4vpXwtM78WEZ+PxzuJwePvtNb6w1LKv+z7/ljahQft4OBgcv/nMnO3aZrReq+zTyQzu6ZpuoiYD8Pw/40i7Lqui4huMpnMj46OjCkEAJ54GmIAAMBl0Uwmk+2rV69eG4bhWtM0v1Fr/TuxaozBR7GIiL+stX6jlPKN0Wj0Z/v7+7c1DXjQJpPJX2vaP/PMM+0wDLm1tfWJE67z+bxcuXKl3L59exiNRvXe23Z2dsrnPve5cnR0dLEHGADAE814EAAA4LIo0+m0u379+ptd181rrbditR8OfFQlVnsjvdn3/fELL7wgQcNDMZ1OnaMAAB4QCTEAAOBSOjw83B+GYVxr/R+xGp0oKcaH8b2IeDkzf2M8Hs+Oj4+NSQQAgCeAhBgAAHBZLdq2jb7vX87MZ2utn43VNZLrJN7PWUQMEfFyRPx527bdcrmUCgMAgCeEhBgAAHCpHRwcTEop1zPz30XEZyNib9M18fgppbyemfOmaX61bdvu1VdfPd10TQAAwIfXbroAAACATXrhhReilNKXUhaZGRHxXKxSYs1mK+MxMY+IWxHxjcz8o6tXr/5xKaV7++23F5suDAAA+PA0xAAAgEvt9PS0293dfXdra+uNWutzmfliROyE0Yms3Kq1/rCU8pvL5fKbJycnM80wAAB48miIAQAAl95sNiu7u7tn29vbPyql/Emt9XO11pqZf2PTtbExtzLzDyPiv2Tmby6Xy+9MJpP5dDotmy4MAAD46Kx4BAAAiCjT6bS7fv36m13XzUspb0fE39x0UWzUIiJOm6Z5/bXXXvvTiIjpdLrZigAAgI8tN10AAADA4+rFF1/8ekS8EBH/dNO18EjUiIjM/DcRMT05OfntzZYDAAA8KBJiAAAAP0Wt9UZmnkfENCL21gdPn7I+vhcRdyJiWms93WxJAADAgyQhBgAA8AEODg4mEfFrtdZfiohfCtdRT6MuIs4y819FxCsnJydHG64HAAB4wCTEAAAAPsB4PJ51XXcUEacRcRwRvxwR+yEt9jToIuK01vpK0zSvRMT/joi3NlwTAADwEFjZCAAA8CFcv359r+u6vVrr1yPiFyLib226Jj6RGhGzWDU5fy8zf6/rutPpdNptuC4AAOAhaDddAAAAwJPg4OCgv3nz5t22bf88Iv57Zn4qIt6OiC+FxYZPkrsR0WXmf46I/1ZK+Q+llG8vFouEXJYSAAALpElEQVQfT6fTRawaZQAAwFPGyEQAAIAP4ejoqI+I/vDw8LU7d+6Mrly58o83XRMfyxARfa31RkS8+frrrx9vuiAAAODhs4oRAADgY1qPUbxea/2ViPiViPh8RIw3XBZ/XY2I6fr4t5l5cnJyMt1kQQAAwKMlIQYAAPAxLZfLvm3b2XK5vNE0zR/XWv9eRDwTES/EagGiMfWb1UfEWUS8GRE3IuKNWuut0WhknzAAALhkJMQAAAAekIODg1+LiEmt9V/EagHipzdb0aX3TkTcqLX+x1rry8YjAgDA5SUhBgAA8IC0bXs8DMM0M6+UUp7NzH8YEfvrg4evXx/fiYj3aq1/EBE3a60vb29vn262NAAAYJMkxAAAAB6wg4ODSURMSilfy8zrEfEL4frrUehiNSLxdzPzza7r/v3Ozk7/6quvzjddGAAAsFkSYgAAAA9Y13WnETHb3t4+zcz9Usp+RHw1IvYz86vru2mQPRjvRcTNzPyjiHil1vrKMAx/MRqN7k4mk/nR0VHddIEAAMDmaYgBAAA8YNPptItVWml2/fr1067r9kopL266rqdUHxF3ImJaa33l/Pz8W+tGWH9ycrLp2gAAgMeEFYkAAACP0H3jFCcR8aVY7TE2DtdoP0uNVaOxC2MRAQCAj0BCDAAA4BFq27ZbLBazpmlOImKWmae11msRsRurxtho/T4RQ6yaYPNYNcFOM/PdUsq7mfndiHh7Z2env3379rDRKgEAgMee1YcAAAAb9uKLL/5yZu7XWv95Zu7VWq/fc/NlvW67aIT1EXFca/1+0zS/ExHTk5OT6UYrAwAAnjgSYgAAABs2Go1uRMTpMAy1lLKbmddqrXuZuRcRF+mxyUaLfPi6iFhExK2IuBkRNzPzO6WUd5ummUbELCKm4/F4tsEaAQCAJ9RlXWkIAADwWJpMJuPxeLwfqwbYJCK+Wmt9PiJeuuduT9O1XF2/ncUqEXYjIr4bESe11m8uFovT6XSqCQYAAHwiT9NFFAAAwNOgmUwm23t7e+Plcjk+Pz9/NjO3M/MgM69GxBdrrT8XET8fEV+otV5tmuba+/w5j8v1Xr3v47NSyg8y80e11tPM/LPMfDciTiJiUUq51bbt3b7v7969e/fWV77ylcXR0VG/gboBAICniJGJAAAAj5cynU67WI0QjIg4jYg4ODiYZebuMAzvxGpfre2I2MnMYUN1flxDZs5jNRbxzcz8Tmbe7LrueGdnp3/11Vfn9975rbfe2kyVAADAU+VxWTEIAADAxzSZTPZGo9HuaDS6VkrZz8zna61fzsyLvcfGEbEfEXvr42E4jYguM49LKV2t9UeZOVsfb0TE/Kc1vQAAAB42CTEAAIAn3M7OTn9+fn7etu2s1tpk5rKUUtcjFm9HxHZmPltK2V03ybbX9xvFaqFk+1H+vlrrRXotMrOPiL7WeqtpmkWt9UZmLiLiVkTM12mwv2zb9mxnZ6e/ffv2k5ZoAwAAngISYgAAAJfM4eHh/jAM47Zt9/q+H62bZB/F9OKd8Xg8Oz4+nj3YCgEAAB4sCTEAAIDLZz4ej7vlctlFRBOr/cg+tPF4/JMG2Gw26z7ovgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwG/h8KH+GFGfj3jgAAAABJRU5ErkJggg==","e":1},{"id":"image_1","w":1732,"h":1452,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABsQAAAWsCAYAAACejOa4AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdX4xk130n9u+5VdVdM9PDaY6HZMsc0+VwNGqqaHhiOzYNC3GvN1l5g02kwAbWuy/SmxHkYe2nPAV2kIcgQAD7ZYEAeQj5lgAO4t0nC8jDbFYG5PUiaMPb8Zgaeks0GbWoMdWkumequ+rek4eqJmnZkilrZvrPfD7ARU9VdXX/uqfr1rnnnN/vlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/+3BIQEAAACAoP+vvWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICBAGc52Fo6ZE6uAAAAAElFTkSuQmCC","e":1},{"id":"image_2","w":1732,"h":1452,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABsQAAAWsCAYAAACejOa4AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdbYyd6X0e9ut+zsuceeHMkDskD5e73CNqtcvVrCVKVtZyJEW0rVSCE8TWhyRGG2AFBEFcGGhgoF9atECAfGgCFGiBfgqColY+FEVf4CJJAxsBGra2W1euAar2SNR6pYykXWstcqkhNSTPcOY8dz/MSF7bSszdJffhDH8/4GCGnDngtST2GeD5P9f/TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKsAx3LxqMyH5fIAAAAASUVORK5CYII=","e":1},{"id":"image_3","w":1732,"h":1452,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABsQAAAWsCAYAAACejOa4AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdbYyd6X0e9ut+zsuceeHMkDskD5e73CNqtcvVrCVKVtZyJEW0rVSCE8TWhyRGG2AFBEFcGGhgoF9atECAfGgCFGiBfgqColY+FEVf4CJJAxsBGra2W1euAar2SNR6pYykXWstcqkhNSTPcOY8dz/MSF7bSszdJffhDH8/4GCGnDngtST2GeD5P9f/TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeOdz1AAAJLklEQVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwf/xtLoomcavGAEQAAAABJRU5ErkJggg==","e":1},{"id":"image_4","w":1732,"h":1452,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABsQAAAWsCAYAAACejOa4AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdP2xd53kH4Pe7+kNKcmTGJIuoitrjJOI9KQKUHioEzmAa0VB0SKTNWWzJswE7KDo4i+zJQwYngKculLykm+QMLYrKMAM0aeEOYoAiviSd5AaK4BQmhSu5UnQt4ZwOplzFlq1/59xzee/zABxEUu/3AxcB/On9vggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4/+3BIQEAAACAoP+vfWECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BYyKscgBdZsgAAAAASUVORK5CYII=","e":1}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"motion0.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1000,1000,0],"ix":2},"a":{"a":0,"k":[866,726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":6.00000024438501,"st":-9.00000036657752,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"motion1.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1000,1000,0],"ix":2},"a":{"a":0,"k":[866,726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":6.00000024438501,"op":12.00000048877,"st":-3.00000012219251,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"motion2.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1000,1000,0],"ix":2},"a":{"a":0,"k":[866,726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":12.00000048877,"op":18.000000733155,"st":-8.00000032584668,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"motion3.png","cl":"png","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1000,1000,0],"ix":2},"a":{"a":0,"k":[866,726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":18.000000733155,"op":24.00000097754,"st":-24.00000097754,"bm":0},{"ddd":0,"ind":5,"ty":2,"nm":"motion4.png","cl":"png","refId":"image_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[920,986,0],"ix":2},"a":{"a":0,"k":[866,726,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":30.0000012219251,"st":-2.00000008146167,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"모양 레이어 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1000,980,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105.847,105.847,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[661.766,661.766],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"타원 패스 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"선 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"칠 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.977,22.57],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[254.927,254.927],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"변형"}],"nm":"타원 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30.0000012219251,"st":0,"bm":0}],"markers":[]} \ No newline at end of file From 625bcdaa0c2797b73c8cd807a873b57e8755e4bc Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 5 Jul 2022 22:12:06 +0900 Subject: [PATCH 135/166] =?UTF-8?q?feat:=20FCM=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EB=B3=B5=EC=82=AC=20=EB=B2=84=ED=8A=BC=20=EB=94=94=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EB=B9=8C=EB=93=9C=EC=97=90=EB=A7=8C=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 --- .../3dollar-in-my-pocket-manager.entitlements | 2 ++ .../AppDelegate.swift | 9 ++++++- 3dollar-in-my-pocket-manager/Info.plist | 1 + .../domains/setting/SettingCoordinator.swift | 12 +++++++++ .../domains/setting/SettingReactor.swift | 27 +++++++++++++++++++ .../domains/setting/SettingView.swift | 16 +++++++++++ .../setting/SettingViewController.swift | 14 ++++++++++ .../strings/en.lproj/Localizations.strings | 2 ++ 8 files changed, 82 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements b/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements index a812db5..80b5221 100644 --- a/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements +++ b/3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements @@ -2,6 +2,8 @@ + aps-environment + development com.apple.developer.applesignin Default diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 56d282d..38df4c4 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -18,6 +18,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.initializeNetworkLogger() self.initializeFirebase() self.initializeNotification() + application.registerForRemoteNotifications() return true } @@ -72,7 +73,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } extension AppDelegate: UNUserNotificationCenterDelegate { - + func userNotificationCenter( + _ center: UNUserNotificationCenter, + willPresent notification: UNNotification, + withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void + ) { + completionHandler([[.sound, .banner]]) + } } extension AppDelegate: MessagingDelegate { diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index ee8e23a..bcbe366 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -54,6 +54,7 @@ UIBackgroundModes location + remote-notification diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift index 6cf0275..d9a43fb 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift @@ -7,6 +7,8 @@ protocol SettingCoordinator: BaseCoordinator, AnyObject { func showSignoutAlert() + func showCopyTokenSuccessAlert() + func goToSignin() func goToKakaoTalkChannel() @@ -37,6 +39,16 @@ extension SettingCoordinator where Self: SettingViewController { } } + func showCopyTokenSuccessAlert() { + AlertUtils.showWithAction( + viewController: self, + title: "setting_copy_token_title".localized, + message: "setting_copy_token_description".localized, + okbuttonTitle: "common_ok".localized) { + + } + } + func goToSignin() { guard let sceneDelegate = UIApplication .shared diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift index 9fde49b..83bdef1 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift @@ -1,16 +1,20 @@ import ReactorKit import RxSwift import RxCocoa +import FirebaseMessaging +import UIKit final class SettingReactor: BaseReactor, Reactor { enum Action { case viewDidLoad + case tapFCMToken case tapLogout case tapSignout } enum Mutation { case setUser(user: User) + case showCopySuccessAlert case goToSignin case showLoading(isShow: Bool) case showErrorAlert(Error) @@ -22,6 +26,7 @@ final class SettingReactor: BaseReactor, Reactor { let initialState: State let goToSigninPublisher = PublishRelay() + let showCopyTokenSuccessAlertPublisher = PublishRelay() private let authService: AuthServiceType private let userDefaults: UserDefaultsUtils @@ -40,6 +45,9 @@ final class SettingReactor: BaseReactor, Reactor { case .viewDidLoad: return self.fetchMyInfo() + case .tapFCMToken: + return self.fetchFCMToken() + case .tapLogout: return .concat([ .just(.showLoading(isShow: true)), @@ -63,6 +71,9 @@ final class SettingReactor: BaseReactor, Reactor { case .setUser(let user): newState.user = user + case .showCopySuccessAlert: + self.showCopyTokenSuccessAlertPublisher.accept(()) + case .goToSignin: self.goToSigninPublisher.accept(()) @@ -83,6 +94,22 @@ final class SettingReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert($0)) } } + private func fetchFCMToken() -> Observable { + return .create { observer in + Messaging.messaging().token { token, error in + if let error = error { + observer.onError(error) + } else if let token = token { + UIPasteboard.general.string = token + observer.onNext(.showCopySuccessAlert) + observer.onCompleted() + } + } + + return Disposables.create() + } + } + private func logout() -> Observable { return self.authService.logout() .do(onNext: { [weak self] _ in diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift index ac3427d..40db9e1 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingView.swift @@ -9,6 +9,16 @@ final class SettingView: BaseView { $0.text = "setting_title".localized } + let fcmTokenButton = UIButton().then { + $0.setTitle("setting_copy_token_title".localized, for: .normal) + $0.setTitleColor(.white, for: .normal) + #if DEBUG + $0.isHidden = false + #else + $0.isHidden = true + #endif + } + let tableHeaderView = SettingTableHeaderView(frame: .init( x: 0, y: 0, @@ -39,6 +49,7 @@ final class SettingView: BaseView { self.tableView.tableFooterView = self.tableFooterView self.addSubViews([ self.titleLabel, + self.fcmTokenButton, self.tableView ]) } @@ -49,6 +60,11 @@ final class SettingView: BaseView { make.top.equalTo(self.safeAreaLayoutGuide).offset(22) } + self.fcmTokenButton.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-20) + make.centerY.equalTo(self.titleLabel) + } + self.tableView.snp.makeConstraints { make in make.left.equalToSuperview() make.right.equalToSuperview() diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 8f1f29b..74941b5 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -70,6 +70,13 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator }) .disposed(by: self.eventDisposeBag) + self.settingReactor.showCopyTokenSuccessAlertPublisher + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.showCopyTokenSuccessAlert() + }) + .disposed(by: self.eventDisposeBag) + self.settingReactor.showLoadginPublisher .asDriver(onErrorJustReturn: false) .drive(onNext: { [weak self] isShow in @@ -94,6 +101,13 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator } func bind(reactor: SettingReactor) { + // Bind Action + self.settingView.fcmTokenButton.rx.tap + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .map { Reactor.Action.tapFCMToken } + .bind(to: reactor.action) + .disposed(by: self.disposeBag) + // Bind State reactor.state .map { $0.user } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 876fb56..0a4b886 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -144,6 +144,8 @@ "setting_signout" = "회원탈퇴"; "setting_signout_title" = "회원 탈퇴 시, 그동안의 데이터가 모두 삭제됩니다.\n회원탈퇴하시겠습니까?"; "setting_signout_button" = "탈퇴"; +"setting_copy_token_title" = "FCM 토큰"; +"setting_copy_token_description" = "토큰을 복사했습니다. 붙여넣기를 통해 사용하세요."; // FAQ "faq_title" = "FAQ"; From 1638259cfe5de3557b9c7e39fe89d61f1a6bc118 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 6 Jul 2022 15:07:01 +0900 Subject: [PATCH 136/166] =?UTF-8?q?feat:=20SPM=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 119 ++++++------------ .../xcshareddata/swiftpm/Package.resolved | 8 +- 2 files changed, 43 insertions(+), 84 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 22af32b..d5d5881 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -35,11 +35,13 @@ 6E211849285DD76F00220E5A /* FAQResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E211848285DD76F00220E5A /* FAQResponse.swift */; }; 6E21184B285DD94C00220E5A /* FAQ.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21184A285DD94C00220E5A /* FAQ.swift */; }; 6E21184D285DE0A800220E5A /* FAQSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21184C285DE0A800220E5A /* FAQSectionModel.swift */; }; + 6E2410B12875550800BADDD5 /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6E2410B02875550800BADDD5 /* ReactorKit */; }; + 6E2410B52875553C00BADDD5 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E2410B42875553C00BADDD5 /* RxDataSources */; }; + 6E2410B62875555100BADDD5 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; platformFilter = ios; }; + 6E2410B72875555100BADDD5 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; - 6E2CD76C284101B9007506FB /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; platformFilter = ios; }; - 6E2CD76D284101B9007506FB /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E37A2E42860AFE4008C046F /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */; }; 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */; }; 6E37A2E82860AFE4008C046F /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E72860AFE4008C046F /* FirebaseMessaging */; }; @@ -86,8 +88,6 @@ 6E5E14AA28312BBA00B1F450 /* Statistic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14A928312BBA00B1F450 /* Statistic.swift */; }; 6E5E14AC2831322D00B1F450 /* TotalStatisticsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5E14AB2831322D00B1F450 /* TotalStatisticsCoordinator.swift */; }; 6E5ECC1A282013BB0033BAAA /* EditScheduleReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5ECC19282013BB0033BAAA /* EditScheduleReactor.swift */; }; - 6E5F212D281976B200922A99 /* Differentiator in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212C281976B200922A99 /* Differentiator */; }; - 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E5F212E281976B200922A99 /* RxDataSources */; }; 6E5F2132281976CD00922A99 /* MyStoreInfoSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F2131281976CD00922A99 /* MyStoreInfoSectionModel.swift */; }; 6E5F21342819778E00922A99 /* Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21332819778E00922A99 /* Menu.swift */; }; 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5F21352819887C00922A99 /* MyStoreInfoCoordinator.swift */; }; @@ -173,9 +173,6 @@ 6ED370FA280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED370F9280C3B3200C445E5 /* MyStoreInfoWorkDayCell.swift */; }; 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838927CB395B00278E14 /* SnapKit */; }; 6ED8838D27CB398300278E14 /* Then in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838C27CB398300278E14 /* Then */; }; - 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8838F27CB39E300278E14 /* RxCocoa */; }; - 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839127CB39E300278E14 /* RxRelay */; }; - 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 6ED8839327CB39E300278E14 /* RxSwift */; }; 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839827CB3A1700278E14 /* SigninView.swift */; }; 6ED8839C27CB3A7A00278E14 /* SocialSigninButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED8839B27CB3A7A00278E14 /* SocialSigninButton.swift */; }; 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6ED883A227CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf */; }; @@ -190,7 +187,6 @@ 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EE0CFAF27CB5BA40027A426 /* Localizations.strings */; }; 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB027CB5C390027A426 /* StringExtensions.swift */; }; 6EE0CFB327CB5D560027A426 /* SigninReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB227CB5D560027A426 /* SigninReactor.swift */; }; - 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFB527CB5D850027A426 /* ReactorKit */; }; 6EE0CFB927CB5DF90027A426 /* SocialType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFB827CB5DF90027A426 /* SocialType.swift */; }; 6EE0CFBB27CB61CE0027A426 /* AppleSignInManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFBA27CB61CE0027A426 /* AppleSignInManager.swift */; }; 6EE0CFBE27CB64B60027A426 /* HTTPUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE0CFBD27CB64B60027A426 /* HTTPUtils.swift */; }; @@ -230,13 +226,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E2CD76E284101B9007506FB /* Embed Frameworks */ = { + 6E2410B82875555100BADDD5 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E2CD76D284101B9007506FB /* Base.framework in Embed Frameworks */, + 6E2410B72875555100BADDD5 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -444,30 +440,26 @@ files = ( 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */, 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */, + 6E2410B12875550800BADDD5 /* ReactorKit in Frameworks */, 6EE2624C27DDBE64008B3531 /* SPPermissionsLocationAlways in Frameworks */, - 6ED8839427CB39E300278E14 /* RxSwift in Frameworks */, 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */, - 6E5F212F281976B200922A99 /* RxDataSources in Frameworks */, - 6ED8839227CB39E300278E14 /* RxRelay in Frameworks */, 6E37A2E82860AFE4008C046F /* FirebaseMessaging in Frameworks */, - 6E5F212D281976B200922A99 /* Differentiator in Frameworks */, 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, + 6E2410B62875555100BADDD5 /* Base.framework in Frameworks */, 6E37A2E42860AFE4008C046F /* FirebaseAnalytics in Frameworks */, 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */, 6EE0CFC127CB64E40027A426 /* Alamofire in Frameworks */, 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */, - 6ED8839027CB39E300278E14 /* RxCocoa in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, - 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EEBC7BF28731F7700CBA0F0 /* Lottie in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */, 6E37A2EA2860AFE4008C046F /* FirebaseRemoteConfig in Frameworks */, - 6E2CD76C284101B9007506FB /* Base.framework in Frameworks */, + 6E2410B52875553C00BADDD5 /* RxDataSources in Frameworks */, CEBEC490A703C26FE9A7B8CC /* Pods_3dollar_in_my_pocket_manager.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1188,7 +1180,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E2CD76E284101B9007506FB /* Embed Frameworks */, + 6E2410B82875555100BADDD5 /* Embed Frameworks */, ); buildRules = ( ); @@ -1198,13 +1190,9 @@ packageProductDependencies = ( 6ED8838927CB395B00278E14 /* SnapKit */, 6ED8838C27CB398300278E14 /* Then */, - 6ED8838F27CB39E300278E14 /* RxCocoa */, - 6ED8839127CB39E300278E14 /* RxRelay */, - 6ED8839327CB39E300278E14 /* RxSwift */, 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */, 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */, 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */, - 6EE0CFB527CB5D850027A426 /* ReactorKit */, 6EE0CFC027CB64E40027A426 /* Alamofire */, 6EE2624927DDBE64008B3531 /* SPPermissionsCamera */, 6EE2624B27DDBE64008B3531 /* SPPermissionsLocationAlways */, @@ -1214,13 +1202,13 @@ 6E8E7F2E27EEBDB7005345BB /* CropViewController */, 6E8E7F3027EEBDB7005345BB /* TOCropViewController */, 6E6C9C76280BEE26009AFAE8 /* Kingfisher */, - 6E5F212C281976B200922A99 /* Differentiator */, - 6E5F212E281976B200922A99 /* RxDataSources */, 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */, 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */, 6E37A2E72860AFE4008C046F /* FirebaseMessaging */, 6E37A2E92860AFE4008C046F /* FirebaseRemoteConfig */, 6EEBC7BE28731F7700CBA0F0 /* Lottie */, + 6E2410B02875550800BADDD5 /* ReactorKit */, + 6E2410B42875553C00BADDD5 /* RxDataSources */, ); productName = "3dollar-in-my-pocket-manager"; productReference = 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */; @@ -1253,16 +1241,15 @@ packageReferences = ( 6ED8838827CB395B00278E14 /* XCRemoteSwiftPackageReference "SnapKit" */, 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */, - 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */, 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, - 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */, 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */, 6EE2624827DDBE64008B3531 /* XCRemoteSwiftPackageReference "SPPermissions" */, 6E8E7F2D27EEBDB7005345BB /* XCRemoteSwiftPackageReference "TOCropViewController" */, 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */, - 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */, 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, 6EEBC7BD28731F7700CBA0F0 /* XCRemoteSwiftPackageReference "lottie-ios" */, + 6E2410AF2875550800BADDD5 /* XCRemoteSwiftPackageReference "ReactorKit" */, + 6E2410B32875553C00BADDD5 /* XCRemoteSwiftPackageReference "RxDataSources" */, ); productRefGroup = 6EB94EA127CB208F00609E77 /* Products */; projectDirPath = ""; @@ -1678,7 +1665,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 9; DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; @@ -1718,7 +1705,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 9; DEVELOPMENT_TEAM = X975A2HM62; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; @@ -1773,15 +1760,15 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + 6E2410AF2875550800BADDD5 /* XCRemoteSwiftPackageReference "ReactorKit" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + repositoryURL = "https://github.com/ReactorKit/ReactorKit.git"; requirement = { - branch = master; - kind = branch; + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; }; }; - 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { + 6E2410B32875553C00BADDD5 /* XCRemoteSwiftPackageReference "RxDataSources" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/RxSwiftCommunity/RxDataSources.git"; requirement = { @@ -1789,6 +1776,14 @@ minimumVersion = 5.0.0; }; }; + 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + branch = master; + kind = branch; + }; + }; 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/onevcat/Kingfisher.git"; @@ -1821,14 +1816,6 @@ kind = branch; }; }; - 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ReactiveX/RxSwift.git"; - requirement = { - branch = main; - kind = branch; - }; - }; 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kakao/kakao-ios-sdk"; @@ -1837,14 +1824,6 @@ minimumVersion = 2.0.0; }; }; - 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ReactorKit/ReactorKit.git"; - requirement = { - branch = master; - kind = branch; - }; - }; 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/Alamofire.git"; @@ -1872,6 +1851,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 6E2410B02875550800BADDD5 /* ReactorKit */ = { + isa = XCSwiftPackageProductDependency; + package = 6E2410AF2875550800BADDD5 /* XCRemoteSwiftPackageReference "ReactorKit" */; + productName = ReactorKit; + }; + 6E2410B42875553C00BADDD5 /* RxDataSources */ = { + isa = XCSwiftPackageProductDependency; + package = 6E2410B32875553C00BADDD5 /* XCRemoteSwiftPackageReference "RxDataSources" */; + productName = RxDataSources; + }; 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */ = { isa = XCSwiftPackageProductDependency; package = 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; @@ -1892,16 +1881,6 @@ package = 6E37A2E22860AFE4008C046F /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; productName = FirebaseRemoteConfig; }; - 6E5F212C281976B200922A99 /* Differentiator */ = { - isa = XCSwiftPackageProductDependency; - package = 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = Differentiator; - }; - 6E5F212E281976B200922A99 /* RxDataSources */ = { - isa = XCSwiftPackageProductDependency; - package = 6E5F212B281976B200922A99 /* XCRemoteSwiftPackageReference "RxDataSources" */; - productName = RxDataSources; - }; 6E6C9C76280BEE26009AFAE8 /* Kingfisher */ = { isa = XCSwiftPackageProductDependency; package = 6E6C9C75280BEE26009AFAE8 /* XCRemoteSwiftPackageReference "Kingfisher" */; @@ -1927,21 +1906,6 @@ package = 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */; productName = Then; }; - 6ED8838F27CB39E300278E14 /* RxCocoa */ = { - isa = XCSwiftPackageProductDependency; - package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxCocoa; - }; - 6ED8839127CB39E300278E14 /* RxRelay */ = { - isa = XCSwiftPackageProductDependency; - package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxRelay; - }; - 6ED8839327CB39E300278E14 /* RxSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxSwift; - }; 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */ = { isa = XCSwiftPackageProductDependency; package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; @@ -1957,11 +1921,6 @@ package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; productName = KakaoSDKUser; }; - 6EE0CFB527CB5D850027A426 /* ReactorKit */ = { - isa = XCSwiftPackageProductDependency; - package = 6EE0CFB427CB5D850027A426 /* XCRemoteSwiftPackageReference "ReactorKit" */; - productName = ReactorKit; - }; 6EE0CFC027CB64E40027A426 /* Alamofire */ = { isa = XCSwiftPackageProductDependency; package = 6EE0CFBF27CB64E40027A426 /* XCRemoteSwiftPackageReference "Alamofire" */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8e9d2f6..35e36a6 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -140,8 +140,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ReactorKit/ReactorKit.git", "state" : { - "branch" : "master", - "revision" : "65654e182bc9d62fd6b78da6fc4db5968c6bbe1c" + "revision" : "8fa33f09c6f6621a2aa536d739956d53b84dd139", + "version" : "3.2.0" } }, { @@ -158,8 +158,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ReactiveX/RxSwift.git", "state" : { - "branch" : "main", - "revision" : "7741a11cb4252c379c8e034508cb1b92b8b40427" + "revision" : "b4307ba0b6425c0ba4178e138799946c3da594f8", + "version" : "6.5.0" } }, { From 97a720ad89d679f9ce5ad152c4bb9ec2fb60afe2 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Wed, 6 Jul 2022 15:45:00 +0900 Subject: [PATCH 137/166] fix: bitcode disable --- .../project.pbxproj | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index d5d5881..f35ba14 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -37,8 +37,6 @@ 6E21184D285DE0A800220E5A /* FAQSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E21184C285DE0A800220E5A /* FAQSectionModel.swift */; }; 6E2410B12875550800BADDD5 /* ReactorKit in Frameworks */ = {isa = PBXBuildFile; productRef = 6E2410B02875550800BADDD5 /* ReactorKit */; }; 6E2410B52875553C00BADDD5 /* RxDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = 6E2410B42875553C00BADDD5 /* RxDataSources */; }; - 6E2410B62875555100BADDD5 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; platformFilter = ios; }; - 6E2410B72875555100BADDD5 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; @@ -160,6 +158,8 @@ 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAC27CB209000609E77 /* Assets.xcassets */; }; 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */; }; + 6EBD5BEF287564D900B1D0F8 /* Base.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; platformFilter = ios; }; + 6EBD5BF0287564D900B1D0F8 /* Base.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6E1AA1B727CB210800C96D92 /* Base.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 6EBF1AE727FE65950011268B /* StoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE627FE65950011268B /* StoreService.swift */; }; 6EBF1AE927FE6A980011268B /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AE827FE6A980011268B /* Store.swift */; }; 6EBF1AEB27FE7A1D0011268B /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EBF1AEA27FE7A1D0011268B /* HomeCoordinator.swift */; }; @@ -226,13 +226,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 6E2410B82875555100BADDD5 /* Embed Frameworks */ = { + 6EBD5BF1287564D900B1D0F8 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 6E2410B72875555100BADDD5 /* Base.framework in Embed Frameworks */, + 6EBD5BF0287564D900B1D0F8 /* Base.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -447,7 +447,7 @@ 6ED8838D27CB398300278E14 /* Then in Frameworks */, 6EE2624E27DDBE64008B3531 /* SPPermissionsLocationWhenInUse in Frameworks */, 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */, - 6E2410B62875555100BADDD5 /* Base.framework in Frameworks */, + 6EBD5BEF287564D900B1D0F8 /* Base.framework in Frameworks */, 6E37A2E42860AFE4008C046F /* FirebaseAnalytics in Frameworks */, 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */, 6E8E7F3127EEBDB7005345BB /* TOCropViewController in Frameworks */, @@ -1180,7 +1180,7 @@ 6EB94E9D27CB208F00609E77 /* Frameworks */, 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, - 6E2410B82875555100BADDD5 /* Embed Frameworks */, + 6EBD5BF1287564D900B1D0F8 /* Embed Frameworks */, ); buildRules = ( ); @@ -1667,6 +1667,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 9; DEVELOPMENT_TEAM = X975A2HM62; + ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; @@ -1707,6 +1708,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 9; DEVELOPMENT_TEAM = X975A2HM62; + ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; From 10622bf4ae9ff11800508f30757c0bcb096bfb25 Mon Sep 17 00:00:00 2001 From: Hyunsik Yoo Date: Sat, 23 Jul 2022 21:29:55 +0900 Subject: [PATCH 138/166] =?UTF-8?q?feat:=20=EC=8A=A4=ED=94=8C=EB=9E=98?= =?UTF-8?q?=EC=8B=9C=20=EB=A1=9C=EB=9D=A0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 51 +++++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 2 +- .../signin/SigninViewController.swift | 1 - .../domains/splash/SplashReactor.swift | 3 +- .../domains/splash/SplashView.swift | 25 ++++++++- .../domains/splash/SplashViewController.swift | 50 +++++++++++------- .../resources/lottie/splash.json | 1 + 7 files changed, 110 insertions(+), 23 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/resources/lottie/splash.json diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index f35ba14..035280a 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -63,6 +63,7 @@ 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E479461280AE42000A3D96C /* PaddingLabel.swift */; }; 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */; }; 6E5678C1285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */; }; + 6E5D8895288B7A2400DE811A /* splash.json in Resources */ = {isa = PBXBuildFile; fileRef = 6E5D8894288B7A2400DE811A /* splash.json */; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */; }; 6E5DCE6127FDB01F00CA58EE /* ReverseGeoLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */; }; @@ -179,6 +180,7 @@ 6ED883A527CB3C7E00278E14 /* UIFontExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A427CB3C7E00278E14 /* UIFontExtensions.swift */; }; 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A627CB443F00278E14 /* UIColorExtensions.swift */; }; 6ED883A927CB456F00278E14 /* SigninViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED883A827CB456F00278E14 /* SigninViewController.swift */; }; + 6EE041D8288ADAD300E17D5B /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE041D7288ADAD300E17D5B /* Lottie */; }; 6EE0CF9F27CB567B0027A426 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */; }; 6EE0CFA127CB567B0027A426 /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA027CB567B0027A426 /* KakaoSDKCommon */; }; 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE0CFA227CB567B0027A426 /* KakaoSDKUser */; }; @@ -294,6 +296,7 @@ 6E479461280AE42000A3D96C /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoMenuEmptyCell.swift; sourceTree = ""; }; + 6E5D8894288B7A2400DE811A /* splash.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = splash.json; sourceTree = ""; }; 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapService.swift; sourceTree = ""; }; 6E5DCE5E27FDB00200CA58EE /* NaverMapResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaverMapResponse.swift; sourceTree = ""; }; 6E5DCE6027FDB01F00CA58EE /* ReverseGeoLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReverseGeoLocation.swift; sourceTree = ""; }; @@ -455,6 +458,8 @@ 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EEBC7BF28731F7700CBA0F0 /* Lottie in Frameworks */, + 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, + 6EE041D8288ADAD300E17D5B /* Lottie in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */, @@ -655,6 +660,14 @@ path = shared; sourceTree = ""; }; + 6E5D8892288B7A1500DE811A /* lottie */ = { + isa = PBXGroup; + children = ( + 6E5D8894288B7A2400DE811A /* splash.json */, + ); + path = lottie; + sourceTree = ""; + }; 6E5DCE6A27FDB0E100CA58EE /* map */ = { isa = PBXGroup; children = ( @@ -1017,6 +1030,7 @@ isa = PBXGroup; children = ( 6EEBC7BA28731F1C00CBA0F0 /* lottie */, + 6E5D8892288B7A1500DE811A /* lottie */, 6EE0CFAA27CB5B970027A426 /* strings */, 6ED883A127CB3C5D00278E14 /* fonts */, ); @@ -1281,6 +1295,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 6E5D8895288B7A2400DE811A /* splash.json in Resources */, 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */, 6EEBC7BC28731F2700CBA0F0 /* loading.json in Resources */, @@ -1818,6 +1833,22 @@ kind = branch; }; }; + 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ReactiveX/RxSwift.git"; + requirement = { + branch = main; + kind = branch; + }; + }; + 6EE041D6288ADAD300E17D5B /* XCRemoteSwiftPackageReference "lottie-ios" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/airbnb/lottie-ios.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kakao/kakao-ios-sdk"; @@ -1908,6 +1939,26 @@ package = 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */; productName = Then; }; + 6ED8838F27CB39E300278E14 /* RxCocoa */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxCocoa; + }; + 6ED8839127CB39E300278E14 /* RxRelay */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxRelay; + }; + 6ED8839327CB39E300278E14 /* RxSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxSwift; + }; + 6EE041D7288ADAD300E17D5B /* Lottie */ = { + isa = XCSwiftPackageProductDependency; + package = 6EE041D6288ADAD300E17D5B /* XCRemoteSwiftPackageReference "lottie-ios" */; + productName = Lottie; + }; 6EE0CF9E27CB567B0027A426 /* KakaoSDKAuth */ = { isa = XCSwiftPackageProductDependency; package = 6EE0CF9D27CB567B0027A426 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index 35e36a6..af30991 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -176,7 +176,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", + "revision" : "14299050782ac18a40edac8e7369425c13998b68", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 5eeb461..25dc9d1 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -3,7 +3,6 @@ import UIKit import Base import ReactorKit - final class SigninViewController: BaseViewController, View, SigninCoordinator { private let signinView = SigninView() private let signinReactor = SigninReactor( diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift index b68e841..9d1bdbc 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashReactor.swift @@ -28,7 +28,6 @@ final class SplashReactor: BaseReactor, Reactor { private let userDefaultsUtils: UserDefaultsUtils private let context: Context - init( authService: AuthServiceType, feedbackService: FeedbackServiceType, @@ -49,7 +48,7 @@ final class SplashReactor: BaseReactor, Reactor { self.fetchFeedbackTypes(), .just(.goToSignin) ]) - + } else { return .merge([ self.fetchFeedbackTypes(), diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift index 7548614..69f0a3a 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashView.swift @@ -1,10 +1,33 @@ import UIKit import Base +import Lottie final class SplashView: BaseView { + let lottieView = AnimationView(name: "splash").then { + $0.autoresizingMask = [.flexibleHeight, .flexibleWidth] + $0.contentMode = .scaleAspectFit + $0.loopMode = .playOnce + } override func setup() { - self.backgroundColor = .white + self.backgroundColor = .gray100 + self.addSubViews([ + self.lottieView + ]) + } + + override func bindConstraints() { + self.lottieView.snp.makeConstraints { make in + make.center.equalToSuperview() + make.width.equalTo(UIScreen.main.bounds.width) + make.height.equalTo(UIScreen.main.bounds.width) + } + } + + func startLottie(completion: @escaping () -> Void) { + self.lottieView.play { _ in + completion() + } } } diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift index 4f568ea..04db01d 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift @@ -2,6 +2,7 @@ import UIKit import Base import ReactorKit +import RxRelay final class SplashViewController: BaseViewController, View, SplashCoordinator { private let splashView = SplashView() @@ -12,6 +13,7 @@ final class SplashViewController: BaseViewController, View, SplashCoordinator { context: Context.shared ) private weak var coordinator: SplashCoordinator? + private let finishLottiePublisher = PublishRelay() static func instance() -> SplashViewController { return SplashViewController(nibName: nil, bundle: nil) @@ -27,29 +29,41 @@ final class SplashViewController: BaseViewController, View, SplashCoordinator { self.reactor = self.splashReactor self.coordinator = self self.splashReactor.action.onNext(.viewDidLoad) + self.splashView.startLottie { [weak self] in + self?.finishLottiePublisher.accept(()) + } } override func bindEvent() { - self.splashReactor.goToSigninPublisher - .asDriver(onErrorJustReturn: ()) - .drive(onNext: { [weak self] in - self?.coordinator?.goToSignin() - }) - .disposed(by: self.eventDisposeBag) + Observable.zip([ + self.splashReactor.goToSigninPublisher, + self.finishLottiePublisher + ]) + .asDriver(onErrorJustReturn: []) + .drive(onNext: { [weak self] _ in + self?.coordinator?.goToSignin() + }) + .disposed(by: self.eventDisposeBag) - self.splashReactor.goToWaitingPublisher - .asDriver(onErrorJustReturn: ()) - .drive(onNext: { [weak self] in - self?.coordinator?.goToWaiting() - }) - .disposed(by: self.eventDisposeBag) + Observable.zip([ + self.splashReactor.goToWaitingPublisher, + self.finishLottiePublisher + ]) + .asDriver(onErrorJustReturn: []) + .drive(onNext: { [weak self] _ in + self?.coordinator?.goToWaiting() + }) + .disposed(by: self.eventDisposeBag) - self.splashReactor.goToMainPublisher - .asDriver(onErrorJustReturn: ()) - .drive(onNext: { [weak self] in - self?.coordinator?.goToMain() - }) - .disposed(by: self.eventDisposeBag) + Observable.zip([ + self.splashReactor.goToMainPublisher, + self.finishLottiePublisher + ]) + .asDriver(onErrorJustReturn: []) + .drive(onNext: { [weak self] _ in + self?.coordinator?.goToMain() + }) + .disposed(by: self.eventDisposeBag) self.splashReactor.showErrorAlert .asDriver(onErrorJustReturn: BaseError.unknown) diff --git a/3dollar-in-my-pocket-manager/resources/lottie/splash.json b/3dollar-in-my-pocket-manager/resources/lottie/splash.json new file mode 100644 index 0000000..3257229 --- /dev/null +++ b/3dollar-in-my-pocket-manager/resources/lottie/splash.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.0.0","a":"","k":"","d":"","tc":"none"},"fr":30,"ip":0,"op":150,"w":1125,"h":1125,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1/partners_splash_cloud Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[1298,562.5,0],"to":[-249.333,0,0],"ti":[249.333,0,0]},{"t":150,"s":[-198,562.5,0]}],"ix":2},"a":{"a":0,"k":[1323,562.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.462],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.98],[1.214,-6.531],[53.641,3.549],[61.76,1.079]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1265.767,950.067],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-129.873],[129.873,0],[0,129.873],[-129.872,0]],"o":[[0,129.873],[-129.872,0],[0,-129.873],[129.873,0]],"v":[[235.156,144.025],[0,379.18],[-235.156,144.025],[0,-91.13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1285.194,1033.87],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.798,0],[1.981,-0.127],[138.952,0],[35.495,-100.372],[55.655,0],[8.546,-0.897],[53.541,36.943],[67.734,0],[0,-183.167],[-26.335,-48.364],[-2.127,0],[-0.911,0.495],[1.585,2.91],[0,53.414],[-176.55,0],[-53.528,-36.934],[-23.734,-56.514],[33.03,-26.143],[-2.057,-2.599],[-2.596,2.054],[-52.445,0],[-43.286,-59.274],[-1.852,0],[-1.066,0.78],[1.954,2.677],[12.554,11.22],[-105.503,0],[-2.288,-132.152],[12.815,-12.235],[-2.288,-2.397],[-2.4,2.291],[-20.707,0],[0,-44.183],[4.037,-9.741],[-3.061,-1.268],[-0.765,0],[-0.958,2.312],[0,12.208]],"o":[[-2.001,0],[-3.101,-138.058],[-109.063,0],[-42.658,-34.234],[-8.729,0],[-24.485,-59.948],[-55.541,-38.326],[-183.167,0],[0,55.415],[1.088,2.001],[0.968,0],[2.91,-1.585],[-25.379,-46.608],[0,-176.549],[65.288,0],[50.733,35.009],[-40.833,6.408],[-2.598,2.057],[2.054,2.601],[41.024,-32.472],[73.298,0],[1.175,1.608],[1.227,0],[2.675,-1.954],[-10.093,-13.82],[32.559,-97.969],[132.853,0],[-17.062,3.36],[-2.397,2.289],[2.288,2.399],[14.97,-14.288],[44.183,0],[0,10.623],[-1.269,3.062],[0.75,0.311],[2.356,-0.003],[4.643,-11.203],[0,-50.798]],"v":[[581.288,132.414],[575.317,132.629],[319.942,-116.806],[80.031,50.44],[-71.906,-3.192],[-97.819,-1.792],[-216.984,-149.85],[-405.419,-208.432],[-737.603,123.751],[-697.349,282.382],[-692.074,285.514],[-689.211,284.784],[-686.811,276.645],[-725.603,123.751],[-405.419,-196.432],[-223.799,-139.974],[-110.165,-0.192],[-222.229,49.035],[-223.21,57.464],[-214.781,58.445],[-71.906,8.808],[114.281,103.469],[119.133,105.93],[122.666,104.775],[123.973,96.391],[89.869,58.773],[319.942,-104.806],[563.356,134.165],[517.679,157.893],[517.482,166.375],[525.964,166.571],[581.288,144.414],[661.415,224.541],[655.33,255.229],[658.576,263.069],[660.87,263.529],[666.416,259.823],[673.415,224.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[673.415,916.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.016,3.8],[2.001,-2.636],[-2.64,-2.001],[-3.73,-4.087],[-1.629,0],[-1.148,1.049],[2.232,2.446]],"o":[[-2.646,-2.007],[-2.001,2.64],[4.433,3.36],[1.183,1.298],[1.442,0],[2.449,-2.233],[-4.222,-4.629]],"v":[[-2.874,-10.37],[-11.279,-9.212],[-10.122,-0.807],[2.183,10.419],[6.618,12.377],[10.658,10.81],[11.048,2.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1062.536,934.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.461],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.981],[1.215,-6.531],[53.641,3.549],[61.76,1.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[986.676,922.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.313,0],[22.143,-6.029],[-0.87,-3.196],[-2.642,0],[-0.528,0.144],[-22.254,0],[0,3.313]],"o":[[-23.317,0],[-3.197,0.87],[0.727,2.669],[0.521,0],[21.115,-5.751],[3.313,0],[0,-3.313]],"v":[[33.797,-10.44],[-34.714,-1.352],[-38.927,6.013],[-33.14,10.44],[-31.561,10.226],[33.797,1.56],[39.797,-4.44]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.997,810.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[65.052,5.386],[133.507,0],[34.73,-101.385],[63.374,0],[7.647,-0.694],[137.962,0],[0,-180.815],[-180.815,0],[-41.492,19.021],[-76.259,0],[-36.541,95.128],[-64.231,0],[-43.386,36.147],[-31.72,0],[0,70.011]],"o":[[-9.366,-135.4],[-110.077,0],[-44.446,-38.438],[-7.828,0],[-48.197,-120.766],[-180.815,0],[0,180.815],[48.63,0],[46.478,53.283],[107.994,0],[44.602,40.742],[60.086,0],[22.233,19.255],[70.012,0],[0,-66.442]],"v":[[565.417,131.199],[313.215,-111.047],[74.777,62.978],[-90.986,1.287],[-114.201,2.355],[-418.38,-203.752],[-745.775,123.642],[-418.38,451.037],[-282.112,421.399],[-90.986,508.356],[145.756,345.701],[313.215,411.187],[471.867,353.384],[554.818,384.289],[681.586,257.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[681.586,921.248],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.798,0],[1.981,-0.127],[138.952,0],[35.495,-100.372],[55.655,0],[8.546,-0.897],[53.541,36.943],[67.734,0],[0,-183.167],[-26.335,-48.364],[-2.127,0],[-0.911,0.495],[1.585,2.91],[0,53.414],[-176.55,0],[-53.528,-36.934],[-23.734,-56.514],[33.03,-26.143],[-2.057,-2.599],[-2.596,2.054],[-52.445,0],[-43.286,-59.274],[-1.852,0],[-1.066,0.78],[1.954,2.677],[12.554,11.22],[-105.503,0],[-2.288,-132.152],[12.815,-12.235],[-2.288,-2.397],[-2.4,2.291],[-20.707,0],[0,-44.183],[4.037,-9.741],[-3.061,-1.268],[-0.765,0],[-0.958,2.312],[0,12.208]],"o":[[-2.001,0],[-3.101,-138.058],[-109.063,0],[-42.658,-34.234],[-8.729,0],[-24.486,-59.948],[-55.541,-38.326],[-183.167,0],[0,55.415],[1.088,2.001],[0.968,0],[2.91,-1.585],[-25.379,-46.608],[0,-176.549],[65.288,0],[50.733,35.009],[-40.833,6.408],[-2.598,2.057],[2.054,2.601],[41.024,-32.472],[73.298,0],[1.175,1.608],[1.227,0],[2.675,-1.954],[-10.093,-13.82],[32.559,-97.969],[132.853,0],[-17.062,3.36],[-2.397,2.289],[2.288,2.399],[14.97,-14.288],[44.183,0],[0,10.623],[-1.269,3.062],[0.75,0.311],[2.356,-0.003],[4.643,-11.203],[0,-50.798]],"v":[[644.465,132.414],[638.493,132.629],[383.118,-116.806],[143.207,50.44],[-8.729,-3.192],[-34.642,-1.792],[-153.807,-149.85],[-342.242,-208.432],[-674.426,123.751],[-634.172,282.382],[-628.897,285.514],[-626.034,284.784],[-623.634,276.645],[-662.426,123.751],[-342.242,-196.432],[-160.622,-139.974],[-46.988,-0.192],[-159.052,49.035],[-160.033,57.464],[-151.604,58.445],[-8.729,8.808],[177.458,103.469],[182.31,105.93],[185.843,104.775],[187.149,96.391],[153.045,58.773],[383.118,-104.806],[626.532,134.165],[580.855,157.893],[580.658,166.375],[589.14,166.571],[644.465,144.414],[724.592,224.541],[718.507,255.229],[721.752,263.069],[724.046,263.529],[729.593,259.823],[736.592,224.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1970.97,916.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.016,3.8],[2.001,-2.636],[-2.64,-2.001],[-3.73,-4.087],[-1.629,0],[-1.148,1.049],[2.232,2.446]],"o":[[-2.646,-2.007],[-2.001,2.64],[4.433,3.36],[1.183,1.298],[1.442,0],[2.449,-2.233],[-4.222,-4.629]],"v":[[-2.874,-10.37],[-11.279,-9.212],[-10.122,-0.807],[2.183,10.419],[6.618,12.377],[10.658,10.81],[11.048,2.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2423.267,934.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.461],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.981],[1.215,-6.531],[53.642,3.549],[61.76,1.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2347.407,922.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.313,0],[22.143,-6.029],[-0.87,-3.196],[-2.641,0],[-0.528,0.144],[-22.254,0],[0,3.313]],"o":[[-23.317,0],[-3.197,0.87],[0.727,2.669],[0.522,0],[21.115,-5.751],[3.313,0],[0,-3.313]],"v":[[33.797,-10.44],[-34.714,-1.352],[-38.927,6.013],[-33.141,10.44],[-31.561,10.226],[33.797,1.56],[39.797,-4.44]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1597.728,810.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[65.052,5.386],[133.507,0],[34.73,-101.385],[63.374,0],[7.648,-0.694],[137.962,0],[0,-180.815],[-180.815,0],[-41.492,19.021],[-76.259,0],[-36.541,95.128],[-64.231,0],[-43.386,36.147],[-31.72,0],[0,70.011]],"o":[[-9.366,-135.4],[-110.077,0],[-44.446,-38.438],[-7.828,0],[-48.197,-120.766],[-180.815,0],[0,180.815],[48.63,0],[46.478,53.283],[107.994,0],[44.602,40.742],[60.086,0],[22.233,19.255],[70.012,0],[0,-66.442]],"v":[[636.766,131.199],[384.563,-111.047],[146.125,62.978],[-19.637,1.287],[-42.853,2.355],[-347.031,-203.752],[-674.426,123.642],[-347.031,451.037],[-210.763,421.399],[-19.637,508.356],[217.105,345.701],[384.563,411.187],[543.216,353.384],[626.167,384.289],[752.935,257.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1970.969,921.248],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"null","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[-537.5,562.5,0],"to":[183.333,0,0],"ti":[-183.333,0,0]},{"t":40,"s":[562.5,562.5,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[331.797,352.562],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.602,-2.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 2/partners_splash Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-40,0],"to":[0,6.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":81,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":91,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":101,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":111,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":121,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":131,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":141,"s":[0,-40,0],"to":[0,0,0],"ti":[0,-6.667,0]},{"t":150,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[562.5,562.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[15.307,-0.316],[38.951,0],[8.579,-36.41],[0,0],[0,11.525],[4.142,0],[0,-4.143],[-1.913,-4.385],[60.983,0.326],[38.291,0],[10.936,-32.77],[0,0],[0,17.475],[0,0],[-17.443,1.005],[-108.363,-6.363],[0,0],[0,0],[-4.143,0],[0,4.143],[0,0],[-24.43,0],[0,0],[-15.328,-17.987],[0,0],[0,-22.636]],"o":[[0,15.379],[-8.584,-36.395],[-38.992,0],[0,0],[-11.528,0],[0,-4.143],[-4.143,0],[0,5.08],[-53.863,3.419],[-9.272,-35.425],[-36.4,0],[0,0],[-17.435,-1.002],[0,0],[0,-17.475],[108.364,-6.363],[0,0],[0,0],[0,4.143],[4.142,0],[0,0],[0,-24.431],[0,0],[23.622,0],[0,0],[14.737,17.314],[0,0]],"v":[[293.061,105.899],[265.394,134.12],[185.152,70.549],[104.843,134.15],[102.35,134.15],[81.444,113.247],[73.944,105.747],[66.444,113.247],[69.432,127.542],[-103.46,132.191],[-183.303,70.549],[-261.587,127.018],[-261.968,126.999],[-293.061,94.044],[-293.061,83.174],[-261.96,50.217],[35.345,50.217],[66.444,52.029],[66.444,56.065],[73.944,63.565],[81.444,56.065],[81.444,-101.266],[125.752,-145.573],[170.026,-145.573],[231.315,-117.271],[270.209,-71.646],[293.061,-9.695]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[17.045,20.029],[0,0],[28.022,0],[0,0],[0,-32.703],[0,0],[0,0],[108.994,-6.398],[0,-25.416],[0,0],[-24.324,-2.552],[0,-3.848],[-4.142,0],[0,4.142],[-37.234,0],[-5.708,-31.493],[-0.014,-0.068],[0,-4.048],[-4.142,0],[0,4.142],[0.137,1.941],[-4.594,0],[-52.29,3.587],[-8.119,0],[0,0],[0,-1.316],[-4.142,0],[0,4.142],[-37.234,0],[0,-37.234],[-4.143,0],[0,4.142],[0.065,1.345],[0,22.935],[0,0]],"o":[[0,0],[-18.179,-21.336],[0,0],[-32.704,0],[0,0],[0,0],[-108.999,-6.399],[-25.362,1.461],[0,0],[0,24.652],[-0.512,3.708],[0,4.142],[4.143,0],[0,-37.234],[33.113,0],[0.012,0.069],[0.686,3.854],[0,4.142],[4.143,0],[0,-1.975],[4.626,0.022],[59.242,0],[6.021,4.561],[0,0],[-0.061,1.301],[0,4.142],[4.143,0],[0,-37.234],[37.198,0],[0,4.142],[4.142,0],[0,-1.362],[22.589,-1.407],[0,0],[0,-26.196]],"v":[[281.629,-81.373],[242.729,-127.002],[170.026,-160.573],[125.752,-160.573],[66.444,-101.266],[66.444,37.004],[36.221,35.244],[-262.83,35.242],[-308.061,83.174],[-308.061,94.044],[-265.029,141.737],[-265.827,153.073],[-258.327,160.573],[-250.827,153.073],[-183.303,85.55],[-116.878,141.008],[-116.841,141.214],[-115.777,153.073],[-108.277,160.573],[-100.777,153.073],[-101.009,147.206],[-87.148,147.258],[80.737,141.848],[102.35,149.15],[102.728,149.15],[102.628,153.073],[110.128,160.573],[117.628,153.073],[185.152,85.55],[252.614,153.073],[260.114,160.573],[267.614,153.073],[267.511,149.013],[308.061,105.899],[308.061,-9.695]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[604.39,620.213],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.153,6.047],[0,0],[17.327,0],[0,0],[0,-16.12],[0,0],[-19.268,-0.156],[0,0],[0,0],[-0.026,4.126],[4.14,0.025],[0,0],[0,11.029],[0,0],[-7.852,0],[0,0],[-8.397,-9.819],[0,0],[-2.094,-9.104],[2.423,-3.045],[3.868,0],[0,0],[0,-4.142],[-4.143,0],[0,0],[-5.276,6.63],[1.901,8.26]],"o":[[0,0],[-11.256,-13.166],[0,0],[-16.122,0],[0,0],[0,19.233],[0,0],[0,0],[4.122,0],[0.027,-4.141],[0,0],[-11.05,-0.089],[0,0],[0,-7.85],[0,0],[12.935,0],[0,0],[4.825,5.665],[0.871,3.781],[-2.414,3.034],[0,0],[-4.143,0],[0,4.143],[0,0],[8.464,0],[5.286,-6.643],[-2.954,-12.813]],"v":[[57.926,-6.593],[35.133,-33.34],[-9.841,-54.057],[-44.355,-54.057],[-73.594,-24.822],[-73.594,18.711],[-38.66,53.874],[-8.713,54.057],[-8.666,54.057],[-1.166,46.603],[-8.619,39.057],[-38.552,38.874],[-58.594,18.711],[-58.594,-24.822],[-44.355,-39.057],[-9.841,-39.057],[23.725,-23.601],[46.509,3.135],[57.073,23.542],[54.63,34.283],[44.745,39.057],[31.102,39.057],[23.602,46.557],[31.102,54.057],[44.745,54.057],[66.366,43.625],[71.693,20.176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[788.015,558.525],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.143,0.026],[0,0],[0,0],[0.026,-4.126],[-4.143,-0.026],[0,0],[0,0],[-0.026,4.126]],"o":[[0,0],[0,0],[-4.122,0],[-0.026,4.143],[0,0],[0,0],[4.122,0],[0.026,-4.143]],"v":[[15.022,-7.407],[-14.928,-7.593],[-14.975,-7.593],[-22.475,-0.14],[-15.022,7.407],[14.928,7.593],[14.975,7.593],[22.475,0.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[746.524,640.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.067,0],[0,4.143],[-4.143,0],[0,3.797],[3.797,0],[1.33,-1.995],[3.442,2.288],[-2.294,3.445],[-7.351,0],[0,-12.07]],"o":[[-4.143,0],[0,-4.143],[3.797,0],[0,-3.797],[-2.355,0],[-2.303,3.451],[-3.448,-2.297],[4.098,-6.153],[12.067,0],[0,12.071]],"v":[[-0.653,21.888],[-8.153,14.388],[-0.653,6.888],[6.232,0],[-0.653,-6.887],[-6.451,-3.747],[-16.852,-1.661],[-18.938,-12.061],[-0.653,-21.887],[21.232,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.676,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.143,0],[0,0],[0,4.143],[4.143,0],[0,0],[0,-4.143]],"o":[[0,0],[4.143,0],[0,-4.143],[0,0],[-4.143,0],[0,4.143]],"v":[[-33.158,7.5],[33.158,7.5],[40.658,0],[33.158,-7.5],[-33.158,-7.5],[-40.658,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.197,740.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,4.143],[4.143,0],[0,0],[0,-4.143],[-4.143,0],[0,0]],"o":[[0,-4.143],[0,0],[-4.143,0],[0,4.143],[0,0],[4.143,0]],"v":[[20.438,0],[12.938,-7.5],[-12.938,-7.5],[-20.438,0],[-12.938,7.5],[12.938,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.101,709.996],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,4.143],[4.143,0],[0,0],[0,-4.143],[-4.143,0],[0,0]],"o":[[0,-4.143],[0,0],[-4.143,0],[0,4.143],[0,0],[4.143,0]],"v":[[20.438,0],[12.938,-7.5],[-12.938,-7.5],[-20.438,0],[-12.938,7.5],[12.938,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[164.241,678.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.143,0],[0,0],[0,4.143],[4.143,0],[0,0],[0,-4.143]],"o":[[0,0],[4.143,0],[0,-4.143],[0,0],[-4.143,0],[0,4.143]],"v":[[-33.158,7.5],[33.158,7.5],[40.658,0],[33.158,-7.5],[-33.158,-7.5],[-40.658,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.197,678.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[28.515,0],[0,-28.515],[-28.515,0],[0,28.515]],"o":[[-28.515,0],[0,28.515],[28.515,0],[0,-28.515]],"v":[[0.002,-51.712],[-51.714,0],[0.002,51.712],[51.714,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.015,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.143,0],[0,4.143],[3.797,0],[0,-3.797],[4.142,0],[0,4.143],[-12.067,0],[0,-12.07]],"o":[[-4.143,0],[0,-3.797],[-3.797,0],[0,4.143],[-4.143,0],[0,-12.07],[12.071,0],[0,4.143]],"v":[[14.386,14.694],[6.886,7.194],[-0.002,0.306],[-6.886,7.194],[-14.386,14.694],[-21.886,7.194],[-0.002,-14.694],[21.886,7.194]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[789.532,766.092],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[28.515,0],[0,-28.515],[-28.515,0],[0,28.515]],"o":[[-28.515,0],[0,28.515],[28.515,0],[0,-28.515]],"v":[[-0.001,-51.712],[-51.714,0],[-0.001,51.712],[51.714,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[789.534,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.87,18.648],[0,0],[25.749,0],[0,0],[0,-28.65],[0,0],[0,0],[108.306,-6.36],[0,-21.426],[0,0],[0,0],[-21.426,-1.236],[0,0],[0,0],[-35.136,0],[-6.36,-35.013],[0,0],[-60.573,4.137],[-7.287,0],[0,0],[0,0],[-37.542,0],[-5.496,-36],[0,0],[0,19.761],[0,0]],"o":[[0,0],[-16.734,-19.635],[0,0],[-28.59,0],[0,0],[0,0],[-108.306,-6.36],[-21.426,1.233],[0,0],[0,0],[0,21.426],[0,0],[0,0],[8.151,-32.541],[36.801,0],[0,0],[63.909,0.495],[5.001,4.446],[0,0],[0,0],[5.496,-36],[37.545,0],[0,0],[13.215,0],[0,0],[-0.063,-24.45]],"v":[[273.79,-70.794],[234.889,-116.427],[167.893,-147.363],[123.619,-147.363],[71.812,-95.556],[71.812,50.355],[37.912,48.381],[-260.27,48.381],[-298.43,88.824],[-298.43,94.26],[-298.43,99.693],[-260.27,140.139],[-253.973,140.445],[-253.91,140.445],[-181.232,83.7],[-107.504,145.263],[-107.381,145.323],[81.382,140.076],[100.216,147.363],[108.862,147.363],[108.985,147.363],[183.019,83.76],[257.056,147.363],[269.221,147.363],[298.429,111.609],[298.429,-3.984]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.086274509804,0.086274509804,0.086274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[602.31,614.563],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.369,2.158],[0.559,0.646],[2.011,10.921],[-1.603,4.01],[3.847,1.537],[1.537,-3.847],[0.322,-1.92],[9.643,2.593],[1.076,-3.999],[-4.001,-1.077],[-11.856,0],[-1.979,0.15],[-0.057,-0.306],[-0.62,-2.409],[12.309,-2.482],[-0.819,-4.06],[-3.498,0],[-0.5,0.101],[-12.226,5.071],[-1.197,-2.417],[6.041,-13.054],[-3.76,-1.74],[-1.055,0],[-1.268,2.739],[-10.854,3.385],[-0.813,-1.082],[-2.281,0],[-1.349,1.013],[2.486,3.314]],"o":[[-0.313,-0.811],[-5.724,-9.627],[-0.775,-4.137],[1.538,-3.846],[-3.849,-1.538],[-0.761,1.905],[-11.974,1.037],[-3.997,-1.073],[-1.077,3.999],[9.159,2.465],[1.956,0],[0.056,0.315],[0.447,2.426],[-11.64,4.907],[-4.061,0.818],[0.718,3.561],[0.49,0],[12.903,-2.603],[1.019,2.497],[-13.428,5.148],[-1.739,3.759],[1.019,0.472],[2.831,0],[4.762,-10.291],[0.818,1.201],[1.474,1.965],[1.566,0],[3.313,-2.485],[-1.267,-1.689]],"v":[[33.139,10.464],[31.809,8.278],[19.98,-23.069],[20.122,-36.479],[15.941,-46.227],[6.195,-42.046],[4.6,-36.29],[-29.26,-40.525],[-38.451,-35.231],[-33.156,-26.041],[-0.84,-21.043],[5.069,-21.279],[5.233,-20.328],[6.863,-13.076],[-29.158,-1.878],[-35.027,6.956],[-27.682,12.975],[-26.193,12.826],[11.598,1.202],[14.904,8.584],[-15.924,37.113],[-12.266,47.068],[-9.121,47.765],[-2.31,43.412],[22.607,21.752],[25.042,25.168],[31.048,28.168],[35.542,26.668],[37.042,16.168]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[383.36,529.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.777,-3.52],[1.966,-1.211],[2.191,0.538],[0.988,0.896],[0.489,1.039],[3.753,-1.77],[-1.761,-3.748],[-1.608,-1.791],[25.159,-15.636],[16.888,-1.662],[0.5,0.565],[2.622,1.884],[2.417,-3.362],[-3.366,-2.414],[-1.248,-1.532],[-0.645,-1.017],[1.237,-5.479],[4.699,-2.924],[6.858,6.239],[3.624,5.746],[3.502,-2.209],[-2.209,-3.504],[0.392,-4.549],[0.01,-0.246],[5.334,-3.319],[5.365,1.262],[2.999,4.837],[0.533,1.731],[-2.278,4.74],[3.734,1.796],[1.793,-3.73],[-2.667,-8.763],[-0.375,-0.936],[0.224,-0.313],[2.376,-1.494],[5.553,1.412],[2.616,4.62],[-4.402,8.672],[-0.217,3.619],[8.805,5.464],[5.966,-1.694],[4.055,-4.702],[3.02,-34.081],[7.715,-6.425],[10.118,0.993],[6.674,8.147],[-5.928,13.403],[-3.515,2.151],[-3.631,12.902],[3.988,1.122],[1.122,-3.988],[7.998,-4.942],[3.662,-0.903],[9.055,14.587],[-2.28,10.101],[-8.631,5.37],[-4.119,0.939],[-6.07,-1.7],[-1.113,3.99],[3.989,1.116],[8.505,-1.953],[0.895,-0.254],[0.265,0.126],[4.006,6.479],[-2.28,10.098],[-8.682,5.403],[-9.818,-3],[-9.944,-7.379],[-13.469,-0.967],[0,0],[-5.222,2.123],[-0.983,6.69],[6.594,4.643],[6.861,1.654],[1.536,0.655],[1.731,2.826],[-12.295,7.641],[-5.228,-0.271],[-9.467,-6.918],[-1.535,0],[-1.469,2.01],[3.345,2.445],[0.521,10.074],[-2.452,4.715],[-15.368,-2.978],[-4.73,-4.532],[-1.027,-4.686],[-4.056,0.888],[0.888,4.048],[6.066,5.754],[0.164,0.153],[-8.399,5.22],[-8.301,-13.368],[-0.284,-5.415],[0,0],[0,0],[-21.373,-5.168],[-1.415,-0.435],[0,0],[-0.188,-0.069],[0,0],[-4.605,-2.215],[-11.324,-24.411],[1.445,-2.747],[-3.665,-1.93],[-1.928,3.663],[-2.186,1.402],[-0.118,0.081],[-4.461,-7.226],[7.052,-4.395],[0.903,-0.378],[3.566,1.298],[1.418,-3.89],[-3.891,-1.418],[-3.504,0],[-2.498,0.658]],"o":[[-0.527,2.284],[-1.94,1.191],[-1.482,-0.367],[-0.975,-0.9],[-1.761,-3.75],[-3.75,1.76],[0.978,2.084],[-6.897,29.006],[-14.376,8.918],[-0.619,-0.886],[-1.901,-2.345],[-3.363,-2.414],[-2.417,3.364],[1.538,1.107],[0.46,0.525],[2.994,4.81],[-1.227,5.437],[-7.838,4.89],[-0.016,-6.718],[-2.208,-3.504],[-3.504,2.209],[2.476,3.93],[-0.034,0.244],[-0.769,6.351],[-4.64,2.892],[-5.525,-1.292],[-1.04,-1.705],[-1.563,-5.139],[1.794,-3.736],[-3.734,-1.787],[-3.911,8.141],[0.297,0.964],[-0.261,0.268],[-1.617,2.268],[-4.827,3.006],[-5.306,-1.354],[-4.808,-8.537],[1.955,-3.849],[0.433,-7.081],[-4.021,-2.47],[-5.983,1.615],[-15.857,18.698],[-0.769,8.666],[-7.78,6.44],[-10.383,-1.005],[-9.497,-11.633],[3.698,-1.261],[11.231,-6.943],[1.124,-3.987],[-3.98,-1.128],[-2.612,9.278],[-3.471,2.124],[-16.348,4.128],[-5.529,-8.874],[2.269,-10.05],[3.636,-2.225],[6.087,-1.396],[3.989,1.113],[1.118,-3.989],[-8.474,-2.376],[-0.908,0.207],[-0.243,-0.152],[-6.909,-3.265],[-5.528,-8.874],[2.269,-10.051],[9.226,-5.749],[13.323,4.083],[16.156,12.036],[0,0],[7.868,0.589],[8.757,-3.527],[1.051,-7.681],[-2.864,-2.054],[-3.186,-0.767],[-3.037,-1.335],[-7.796,-12.546],[4.543,-2.832],[2.044,12.287],[1.334,0.976],[2.312,0],[2.443,-3.344],[-7.303,-5.338],[-0.311,-5.887],[6.805,-13.216],[6.349,1.201],[3.906,3.706],[0.886,4.046],[4.046,-0.886],[-1.672,-7.627],[-0.161,-0.155],[-0.332,-10.08],[13.112,-8.116],[2.277,3.641],[0,0],[0,0],[19.326,-8.028],[1.412,0.326],[0,0],[0.208,0.047],[0,0],[4.91,1.487],[23.519,11.206],[-2.132,2.123],[-1.931,3.665],[3.674,1.933],[1.239,-2.351],[0.123,-0.075],[7.155,-4.27],[4.521,7.311],[-0.662,0.4],[-3.419,1.393],[-3.893,-1.415],[-1.418,3.891],[3.375,1.231],[2.563,0],[2.845,2.069]],"v":[[228.292,-22.194],[224.421,-16.772],[217.999,-15.764],[214.196,-17.719],[211.99,-20.642],[202.016,-24.242],[198.414,-14.267],[202.297,-8.452],[152.779,60.639],[105.062,76.73],[103.36,74.495],[96.54,68.121],[86.076,69.839],[87.792,80.305],[91.896,84.165],[93.552,86.478],[96.279,102.433],[87.095,115.397],[62.128,112.865],[56.582,93.714],[46.24,91.368],[43.894,101.712],[47.055,114.665],[46.982,115.396],[37.426,130.586],[21.904,133.118],[8.668,123.59],[6.329,118.475],[7.439,103.157],[3.926,93.146],[-6.082,96.659],[-8.014,122.861],[-6.992,125.704],[-7.738,126.553],[-13.776,132.233],[-30.108,134.736],[-42.4,125.462],[-40.06,101.457],[-36.201,90.664],[-45.379,70.813],[-62.974,69.477],[-78.517,79.25],[-103.767,149.84],[-117.128,173.595],[-144.896,182.055],[-171.352,167.855],[-177.051,127.025],[-166.207,121.912],[-143.159,91.139],[-148.346,81.887],[-157.596,87.073],[-174.065,109.133],[-184.797,113.691],[-227.258,96.186],[-232.297,66.764],[-215.368,42.836],[-203.689,38.071],[-185.112,38.534],[-175.87,33.332],[-181.069,24.089],[-207.033,23.449],[-209.725,24.178],[-210.462,23.733],[-227.138,8.85],[-232.177,-20.572],[-215.198,-44.535],[-185.228,-48.858],[-150.159,-31.581],[-111.499,-14.612],[-109.713,-14.479],[-91.426,-15.625],[-76.543,-31.205],[-84.366,-48.573],[-98.441,-53.4],[-106.774,-55.692],[-114.163,-63.71],[-106.01,-100.319],[-91.069,-104.197],[-73.079,-73.958],[-68.66,-72.513],[-62.599,-75.588],[-64.229,-86.069],[-76.725,-110.677],[-73.46,-126.869],[-34.59,-144.845],[-17.423,-135.97],[-9.88,-123.143],[-0.948,-117.424],[4.771,-126.358],[-7.073,-146.827],[-7.574,-147.273],[5.418,-172.02],[44.24,-162.52],[47.251,-148.064],[47.251,-136.829],[57.626,-141.135],[120.688,-145.575],[124.932,-144.434],[125.491,-144.285],[126.095,-144.09],[126.549,-143.936],[140.875,-138.364],[195.31,-82.608],[189.895,-75.329],[193.035,-65.199],[203.167,-68.341],[208.344,-73.991],[208.715,-74.213],[229.697,-68.931],[225.045,-47.665],[222.689,-46.496],[211.855,-46.35],[202.24,-41.872],[206.717,-32.258],[217.108,-30.413],[224.723,-31.431]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[7.623,12.336],[12.721,-3.575],[26.197,12.48],[5.576,1.699],[0.691,0.171],[1.605,0.372],[19.906,-6.189],[2.342,3.748],[20.146,-12.474],[2.248,-11.606],[3.4,0.643],[9.884,-19.195],[0.704,-5.175],[6.888,-4.292],[-12.136,-19.531],[-6.886,-3.028],[-4.122,-0.993],[-1.105,-0.591],[-0.056,0.02],[0.151,-1.111],[4.264,-1.719],[5.959,0.445],[0,0],[15.138,11.278],[14.966,4.585],[12.909,-8.036],[3.158,-13.995],[-7.614,-12.224],[-5.57,-4.095],[2.92,-12.943],[-7.621,-12.235],[-18.283,0],[-0.127,0.001],[-11.047,-13.531],[-14.386,-1.392],[-1.735,0],[-9.545,7.901],[-1.136,12.8],[-13.684,16.134],[-3.165,0.852],[-0.91,-0.255],[0.259,-4.315],[0.898,-1.766],[-9.126,-16.21],[-9.303,-2.37],[-8.309,5.17],[-2.209,2.422],[-6.395,-1.496],[-2.726,0],[-5.682,3.536],[-2.888,5.979],[-6.224,0],[-5.704,3.563],[-2.115,9.387],[0.892,4.779],[-15.003,9.308],[-8.439,31.109],[-1.392,0],[-3.741,2.303],[-1.453,6.293],[4.399,5.555]],"o":[[-7.329,-11.858],[-12.873,-26.959],[-5.207,-2.505],[-0.629,-0.229],[-1.682,-0.51],[-20.989,-5.076],[-0.718,-4.2],[-12.646,-20.362],[-10.188,6.33],[-3.216,-1.375],[-21.979,-4.248],[-2.314,4.452],[-7.915,-0.215],[-19.311,12.003],[2.994,4.887],[2.766,1.18],[2.915,0.703],[1.365,0.958],[0.015,0.082],[-0.093,0.34],[-1.988,0.805],[0,0],[-9.32,-0.669],[-11.331,-8.408],[-13.965,-4.268],[-12.114,7.538],[-3.154,13.974],[3.671,5.935],[-10.677,7.559],[-3.154,13.973],[10.117,16.298],[0.127,0],[-4.006,16.325],[9.23,11.268],[1.751,0.17],[12.266,0],[10.937,-9.105],[2.741,-30.914],[2.047,-2.376],[2.416,-0.683],[1.648,1.037],[-0.148,0.847],[-4.172,8.215],[4.659,8.227],[9.491,2.417],[2.828,-1.781],[4.641,4.45],[2.726,0.636],[6.553,0],[5.793,-3.603],[5.503,3.116],[6.425,0],[8.124,-5.053],[1.096,-4.858],[17.53,-2.39],[27.385,-17.021],[1.395,0.251],[4.286,0],[5.411,-3.331],[1.604,-7.251],[9.757,-9.727]],"v":[[242.459,-76.816],[208.284,-90.207],[147.353,-151.893],[131.107,-158.228],[129.102,-158.845],[124.138,-160.174],[61.284,-158.395],[56.97,-170.452],[-2.488,-184.767],[-21.807,-156.526],[-31.772,-159.578],[-86.781,-133.763],[-91.327,-119.208],[-113.935,-113.054],[-126.928,-55.833],[-112.737,-41.927],[-101.956,-38.816],[-93.055,-36.346],[-91.315,-34.966],[-91.393,-33.327],[-97.051,-29.53],[-108.594,-29.439],[-110.414,-29.573],[-141.21,-43.619],[-180.837,-63.2],[-223.125,-57.27],[-246.809,-23.875],[-239.884,16.76],[-225.879,31.894],[-246.928,63.464],[-239.997,104.108],[-194.185,129.863],[-193.802,129.851],[-182.964,177.35],[-146.342,196.986],[-141.112,197.241],[-107.547,185.134],[-88.826,151.164],[-67.116,89],[-58.97,83.935],[-52.936,83.777],[-51.159,89.633],[-53.435,94.665],[-55.461,132.84],[-33.81,149.27],[-5.816,144.949],[1.734,138.608],[18.49,147.725],[26.69,148.678],[45.352,143.323],[58.536,128.65],[76.457,133.408],[95.029,128.126],[110.91,105.732],[111.175,91.158],[160.691,73.384],[215.865,-0.934],[220.05,-0.515],[232.284,-3.999],[242.922,-18.885],[238.182,-39.106]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[482.563,490.145],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.832,-3.681],[3.106,-1.913],[0,0],[4.155,6.625],[-0.87,3.704],[-3.114,1.919],[-2.464,0],[-2.716,-4.339]],"o":[[-0.817,3.625],[0,0],[-6.466,4.021],[-2.036,-3.268],[0.84,-3.58],[2.221,-1.38],[4.714,0],[2.01,3.252]],"v":[[13.626,5.474],[7.541,14.062],[7.515,14.078],[-11.76,9.34],[-13.567,-1.472],[-7.45,-9.989],[-0.293,-12.025],[11.801,-5.278]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[13.436,-8.361],[1.761,-7.495],[-4.172,-6.697],[-9.726,0],[-4.667,2.897],[-1.714,7.591],[4.105,6.653]],"o":[[-6.51,4.008],[-1.79,7.618],[5.578,8.903],[5.157,0],[6.562,-4.048],[1.702,-7.531],[-8.54,-13.635]],"v":[[-15.343,-22.742],[-28.169,-4.904],[-24.48,17.288],[0.401,31.103],[15.422,26.826],[28.257,8.777],[24.542,-13.197]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[611.222,418.492],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.001,-6.366],[1.573,-0.675],[0.299,-0.182],[9.031,14.52],[-9.057,11.372],[-3.337,2.09],[2.199,3.509],[3.509,-2.199],[3.004,-3.31],[2.509,5.237],[-3.955,6.592],[-7.27,3.356],[-5.565,-0.123],[-8.307,-5.281],[-3.555,-9.66],[9.076,-6.49],[-2.409,-3.369],[-2.338,0],[-1.321,0.945],[-9.22,-0.236],[-2.371,-4.57],[1.101,-1.046],[8.296,-0.602],[-0.299,-4.132],[-3.896,0],[-0.184,0.013],[-8.726,8.148],[-0.021,0.021],[-1.032,-1.631]],"o":[[-1.465,0.731],[-0.33,0.142],[-15.118,5.793],[-7.821,-12.56],[2.376,-2.986],[3.51,-2.201],[-2.197,-3.512],[-3.875,2.428],[-5.049,0.33],[-2.86,-5.965],[4.286,-7.147],[5.33,-2.481],[7.901,0.139],[2.335,10.076],[-8.811,1.134],[-3.369,2.409],[1.464,2.048],[1.51,0],[6.122,-4.377],[2.076,4.691],[-0.691,0.923],[-6.095,5.69],[-4.131,0.3],[0.287,3.947],[0.182,0],[11.823,-0.859],[0.021,-0.02],[0.992,1.65],[-5.528,12.977]],"v":[[17.183,85.766],[12.569,87.903],[11.647,88.415],[-29.923,73.986],[-27.857,33.976],[-19.248,26.326],[-16.875,15.987],[-27.214,13.614],[-37.54,22.271],[-50.885,13.86],[-49.081,-6.812],[-31.172,-23.094],[-14.327,-26.79],[10.963,-18.275],[19.754,11.359],[-7.333,22.841],[-9.072,33.304],[-2.964,36.442],[1.392,35.043],[25.762,26.036],[32.423,39.932],[29.756,42.868],[7.111,52.769],[0.174,60.793],[7.647,67.75],[8.199,67.731],[40.038,53.788],[40.108,53.719],[43.176,58.626]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.287,4.924],[6.116,28.04],[-2.405,24.476],[4.123,0.404],[0.404,-4.123],[-3.073,-20.216],[6.935,0.121],[7.331,-3.41],[5.821,-9.705],[-5.054,-10.546],[-7.602,-2.409],[-8.765,-14.078],[-16.555,0.003],[-7.802,4.57],[-6.606,11.498],[-0.72,-0.951],[-2.268,0],[-1.354,1.025],[2.499,3.304]],"o":[[-15.902,-24.204],[-5.19,-23.619],[0.406,-4.122],[-4.117,-0.425],[-2.034,20.688],[-7.181,-2.973],[-7.79,-0.133],[-9.955,4.595],[-6.576,10.963],[3.657,7.634],[-6.21,14.646],[9.542,15.339],[8.408,0],[12.922,-6.42],[0.73,0.998],[1.475,1.948],[1.576,0],[3.304,-2.501],[-2.795,-3.689]],"v":[[58.041,54.12],[24.859,-24.607],[20.665,-97.089],[13.934,-105.286],[5.738,-98.557],[7.35,-37.026],[-14.065,-41.787],[-37.479,-36.704],[-61.945,-14.529],[-64.413,20.342],[-46.306,35.988],[-42.66,81.911],[-0.417,105.708],[24.309,98.955],[52.837,72.902],[55.009,75.824],[60.994,78.796],[65.515,77.276],[66.968,66.768]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[506.106,471.212],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.306,0.183]],"o":[[0.303,-0.183],[0,0]],"v":[[-0.457,0.274],[0.458,-0.274]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[527.094,563.414],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.83,-3.477],[0,0]],"o":[[0,0],[-3.54,2.196]],"v":[[-4.027,4.332],[4.028,-4.332]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[683.121,413.977],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.31,2.136],[0,0]],"o":[[0,0],[5.124,1.89]],"v":[[8.117,-1.068],[-8.117,-0.822]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[700.02,451.663],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.489,0.12],[-0.489,-0.183]],"o":[[0.549,0.12],[-0.549,-0.183]],"v":[[-0.794,-0.243],[0.793,0.243]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[610.608,338.725],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.65,-1.524]],"o":[[0.915,1.953],[0,0]],"v":[[-1.953,-2.624],[1.953,2.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[689.72,475.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.008,-6.165],[6.348,10.131],[-10.011,6.165],[-6.345,-10.131]],"o":[[-10.011,6.225],[-6.348,-10.191],[10.008,-6.225],[6.288,10.194]],"v":[[11.475,18.402],[-18.126,11.259],[-11.412,-18.402],[18.186,-11.262]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[611.222,420.538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21.177,-8.727],[0,0],[-22.461,-5.43]],"o":[[0,0],[21.177,-8.787],[-22.461,-5.43]],"v":[[-33.812,5.005],[-33.812,5.126],[33.811,0.304]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[571.185,336.893],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.069,0.069]],"v":[[-0.069,0],[0.069,0.069],[0.069,-0.069]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[537.329,341.968],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.698,4.518],[0,0]],"o":[[0,0],[-1.467,-6.408]],"v":[[-4.852,-8.331],[4.853,8.331]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[475.215,357.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.953,1.404],[0,0]],"o":[[0,0],[-1.587,-1.953]],"v":[[-2.685,-2.503],[2.685,2.504]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[577.409,566.861],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.48,5.556],[0,0]],"o":[[0,0],[0.612,-6.105]],"v":[[-2.412,-9.003],[1.8,9.003]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[535.208,596.92],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-9.519,-6.957]],"o":[[0.609,11.778],[0,0]],"v":[[-7.78,-15.135],[7.78,15.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[406.185,394.995],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-19.47,11.412],[-6.714,17.517],[0,0],[6.162,28.257],[10.497,0.183],[6.165,-2.868],[4.944,-8.238],[-4.212,-8.79],[-9.276,2.502],[0,0],[-9.765,-15.684]],"o":[[14.463,-7.08],[0,0],[-16.725,-25.389],[-9.888,-6.897],[-6.837,-0.12],[-8.727,4.029],[-4.944,8.241],[4.212,8.787],[0,0],[-10.74,13.488],[12.144,19.47]],"v":[[25.634,57.736],[56.455,23.8],[56.822,23.557],[22.582,-57.677],[-9.155,-69.029],[-29.297,-64.634],[-50.474,-45.41],[-52.609,-17.639],[-28.747,-5.495],[-28.625,-5.372],[-31.186,43.271]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[501.007,505.952],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.136,-6.957],[0,0]],"o":[[0,0],[-3.051,6.348]],"v":[[0.306,10.375],[1.83,-10.375]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[481.412,600.428],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.446,-1.65],[0,0]],"o":[[0,0],[-7.201,-1.953]],"v":[[-11.138,0.55],[11.138,1.099]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.326,520.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.345,10.194],[-10.008,6.165],[-6.348,-10.131],[10.011,-6.165]],"o":[[-6.348,-10.191],[10.011,-6.225],[6.348,10.194],[-10.008,6.225]],"v":[[112.727,-61.796],[119.438,-91.456],[149.039,-84.316],[142.325,-54.652]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-16.785,-25.389],[0,0],[14.466,-7.08],[12.147,19.53],[-10.683,13.488],[0,0],[4.212,8.727],[-4.941,8.238],[-8.727,4.029],[-6.834,-0.123],[-9.888,-6.837]],"o":[[0,0],[-6.714,17.517],[-19.407,11.415],[-9.765,-15.684],[0,0],[-9.276,2.439],[-4.209,-8.787],[4.944,-8.241],[6.225,-2.868],[10.437,0.183],[6.105,28.317]],"v":[[77.51,35.858],[77.144,36.101],[46.322,70.034],[-10.498,55.508],[-7.933,6.866],[-8.056,6.746],[-31.921,-5.401],[-29.785,-33.169],[-8.605,-52.396],[11.534,-56.788],[43.271,-45.436]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-18.92,4.761],[0,0],[-12.207,-14.952],[-19.47,16.113],[-0.978,10.986],[-15.318,18.066],[-4.515,1.221],[-1.89,-1.158],[0.366,-5.979],[-10.068,-17.883],[-13.245,8.241],[-2.136,2.991],[0,0],[-3.051,6.348],[0,0],[-1.344,-2.196],[-13.242,8.238],[-0.855,8.484],[0,0],[0.552,-6.042],[-12.024,7.446],[8.361,13.425],[0.855,0.978],[0,0],[-1.587,-1.953],[0,0],[-16.722,10.374],[-6.411,31.065],[0,0],[0.915,2.013],[0,0],[-2.688,-0.669],[-2.013,8.727],[7.386,2.928],[5.187,1.893],[0,0],[-1.098,0.672],[6.714,10.863],[10.68,-6.591],[0,0],[-3.54,2.196],[27.159,12.939],[5.247,1.65],[0.549,0.183],[1.587,0.366],[21.177,-8.787],[0,0],[-0.063,0],[3.357,5.37],[16.599,-10.317],[-0.732,-12.57],[0,0],[-1.464,-6.408],[0,0],[7.752,1.467],[8.484,-16.479],[-0.366,-6.96],[0,0],[0.612,11.718],[0,0],[7.935,-4.944],[-10.008,-16.11],[-4.578,-2.013],[-3.237,-2.319],[0.672,-4.884],[4.698,-1.893],[8.301,0.609],[15.075,11.232],[9.764,2.991],[11.169,-6.957],[-13.61,-21.849],[-7.874,-3.723],[0,0],[-7.202,-1.953],[0,0],[4.394,-2.685],[-13.61,-21.849]],"o":[[0,0],[-8.179,15.93],[16.296,19.896],[9.093,-7.569],[2.745,-31.002],[3.051,-3.54],[4.518,-1.281],[5.31,3.297],[-0.426,7.143],[7.812,13.794],[3.294,-2.073],[0,0],[-2.136,-6.957],[0,0],[0.732,2.379],[8.361,13.488],[7.752,-4.824],[0,0],[3.48,5.616],[9.033,10.68],[13.242,-8.238],[-0.732,-1.161],[0,0],[1.953,1.404],[0,0],[18.432,-1.404],[28.869,-17.943],[0,0],[-1.65,-1.464],[0,0],[1.953,1.77],[8.727,2.136],[1.77,-7.995],[-5.307,2.136],[0,0],[1.161,-0.489],[10.68,-6.651],[-6.714,-10.863],[0,0],[1.83,-3.48],[-11.352,-28.014],[-5.004,-2.379],[-0.549,-0.183],[-1.587,-0.489],[-22.461,-5.43],[0,0],[0.06,0],[-0.306,-5.922],[-10.497,-16.908],[-11.352,7.017],[0,0],[4.761,4.578],[0,0],[-5.736,-5.493],[-18.309,-3.54],[-3.171,6.102],[0,0],[-9.522,-6.957],[0,0],[-8.484,-2.076],[-15.807,9.825],[2.808,4.578],[5.004,2.136],[4.332,3.051],[-0.669,4.575],[-3.906,1.587],[-11.901,-0.855],[-13.488,-10.008],[-11.78,-3.6],[-21.484,13.368],[4.944,7.995],[0,0],[7.385,-1.647],[0,0],[-4.822,1.098],[-21.483,13.365],[10.925,17.823]],"v":[[-180.776,117.578],[-180.654,118.126],[-175.039,169.15],[-110.224,175.925],[-94.171,147.056],[-70.675,80.654],[-58.897,73.268],[-47.179,73.757],[-41.563,86.756],[-46.813,125.696],[-7.69,135.155],[0.488,127.466],[1.22,117.335],[2.747,96.584],[1.22,117.335],[4.334,124.169],[43.454,133.63],[56.576,112.391],[52.364,94.384],[56.636,112.391],[93.257,118.433],[102.107,79.19],[99.725,75.893],[94.355,70.889],[99.725,75.893],[105.401,81.203],[158.927,63.749],[212.636,-13.639],[211.232,-15.472],[207.326,-20.719],[211.232,-15.472],[218.312,-11.749],[237.719,-23.77],[227.708,-42.751],[211.475,-42.508],[227.708,-42.751],[231.128,-44.461],[238.268,-76.075],[206.777,-83.704],[198.719,-75.037],[206.777,-83.704],[146.414,-148.46],[131.036,-154.441],[129.449,-154.927],[124.688,-156.211],[57.065,-151.39],[56.942,-151.45],[57.065,-151.51],[52.913,-169.819],[3.785,-181.72],[-12.757,-149.62],[-9.949,-144.736],[-0.244,-128.074],[-10.009,-144.859],[-30.943,-155.662],[-77.878,-133.75],[-81.967,-113.731],[-66.403,-83.461],[-81.967,-113.731],[-82.21,-114.22],[-107.782,-110.132],[-118.342,-63.199],[-107.599,-52.273],[-86.542,-45.925],[-81.784,-35.671],[-92.035,-26.029],[-108.76,-25.54],[-143.485,-41.044],[-180.837,-59.476],[-216.968,-54.349],[-231.311,9.368],[-211.475,27.068],[-203.114,27.251],[-180.837,27.8],[-203.114,27.251],[-217.029,32.927],[-231.372,96.644]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[480.375,493.592],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":5,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Layer 4/partners_splash Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,562.5,0],"ix":2},"a":{"a":0,"k":[562.5,562.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.174,0.174,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.794]},"t":81,"s":[40,40,100]},{"t":101,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.18,12.075],[-16.221,14.377],[-8.322,-7.633],[10.035,-12.403],[15.891,-15.201],[9.969,9.114]],"o":[[13.524,-17.667],[12.237,-10.923],[8.457,7.764],[-13.257,16.515],[-11.088,10.596],[-10.068,-9.279]],"v":[[29.133,10.051],[68.517,-33.113],[100.593,-33.179],[102.633,-1.759],[63.516,40.814],[29.628,42.262]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.619,12.338],[-11.712,9.475],[-9.507,-8.719],[6.876,-9.574],[9.18,-8.259],[-10.56,-9.969],[6.186,-8.521],[15.201,8.49],[9.672,12.699]],"o":[[8.193,-11.91],[9.375,-7.535],[9.048,8.324],[-6.876,9.575],[10.266,6.678],[9.048,8.587],[-7.137,9.871],[-14.313,-7.962],[-10.134,-13.391]],"v":[[-52.098,-76.905],[-20.217,-111.614],[9.36,-110.431],[13.572,-81.379],[-10.677,-54.96],[24.462,-26.796],[28.968,-1.332],[-2.22,3.11],[-52.623,-39.101]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[11.451,11.616],[3.849,-3.291],[-11.481,-11.91],[-4.671,3.915]],"o":[[-3.486,5.001],[12.699,10.296],[2.829,-4.245],[-12.897,-10.725]],"v":[[-51.474,21.896],[-60.06,31.241],[-23.409,64.897],[-14.823,55.553]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[3.948,-4.308],[15.3,11.316],[20.76,22.635],[-9.408,13.227],[-8.652,7.666],[-11.613,-8.489],[-15.135,-17.172],[9.213,-10.956],[6.12,-0.396]],"o":[[-7.239,7.863],[-24.741,-18.36],[-11.055,-12.075],[6.318,-8.981],[10.596,-9.443],[18.525,13.489],[14.082,15.957],[-7.206,8.421],[1.644,5.034]],"v":[[2.058,111.287],[-31.404,105.728],[-97.698,45.092],[-103.26,7.978],[-80.361,-16.96],[-44.4,-15.906],[20.382,42.524],[27.192,81.874],[5.445,96.91]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[917.141,300.515],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.285,-14.411],[12.006,5.231],[2.139,1.151],[0,0],[12.207,5.33],[-4.737,14.411],[-10.659,18.852],[-10.167,-4.408],[5.463,-14.97],[0,0],[-2.403,-1.021]],"o":[[-6.513,14.97],[-1.845,-0.823],[0,0],[-7.041,13.621],[-12.372,-5.396],[7.008,-21.122],[7.995,-14.312],[10.332,4.508],[0,0],[2.205,0.527],[10.923,4.77]],"v":[[99.951,0.296],[71.955,15.562],[67.215,13.292],[61.59,24.675],[31.914,37.211],[19.05,6.745],[46.521,-56.655],[77.217,-67.019],[88.995,-38.132],[86.463,-31.322],[93.339,-28.984]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.776,4.079],[13.653,5.955],[1.779,-4.047],[-13.851,-6.054]],"o":[[1.776,-4.047],[-13.851,-6.054],[-1.776,4.047],[13.656,5.987]],"v":[[-12.207,62.775],[-27.999,48.628],[-49.122,46.654],[-33.33,60.801]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[8.16,-1.052],[4.803,10.232],[-7.632,4.343],[-13.359,1.415],[5.889,3.652],[-4.443,10.166],[-11.877,-2.994],[-12.501,-8.555],[13.293,-10.265],[6.219,-3.224],[-3.093,-5.528],[8.454,-6.218],[8.817,6.021],[5.724,9.081]],"o":[[-7.434,0.922],[-3.849,-8.291],[10.266,-5.856],[-8.424,-3.882],[-10.266,-6.251],[3.948,-9.048],[15.267,3.816],[18.819,12.831],[-3.981,3.093],[6.087,5.725],[4.77,8.685],[-7.896,6.021],[-8.982,-6.119],[-10.167,3.224]],"v":[[-67.086,-12.404],[-90.807,-24.083],[-83.766,-46.719],[-30.696,-63.564],[-53.397,-75.014],[-62.214,-99.096],[-37.968,-108.308],[18.621,-83.37],[16.515,-43.824],[0.69,-34.25],[15.201,-17.141],[8.883,7.37],[-16.779,5.198],[-38.79,-18.918]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[10.956,-25.104],[40.962,17.897],[-10.956,25.103],[-41.16,-17.997]],"o":[[-10.956,25.104],[-41.193,-17.964],[10.956,-25.103],[40.995,17.898]],"v":[[33.954,82.943],[-47.772,93.405],[-95.28,26.485],[-13.917,15.858]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[762.719,197.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.759,-15.694],[13.095,0.625],[2.205,0.296],[1.383,-11.647],[13.656,1.053],[1.317,14.575],[-5.628,29.38],[-11.055,-0.526],[-0.429,-15.957],[0.591,-16.483],[-2.433,-0.131]],"o":[[-0.789,16.286],[-2.007,-0.099],[-1.149,19.51],[-2.007,16.45],[-13.455,-1.053],[-2.895,-32.407],[2.961,-15.595],[11.253,0.526],[0.327,9.706],[2.238,-0.296],[11.91,0.56]],"v":[[99.276,-4.064],[78.549,20.151],[73.515,19.723],[69.534,68.943],[44.826,92.368],[25.02,68.021],[31.536,-72.233],[54.894,-92.895],[76.347,-69.471],[75.819,-28.773],[82.695,-29.036]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.094,-11.68],[8.685,-8.456],[9.609,5.691],[7.074,8.028],[3.42,-4.672],[11.415,6.021],[-4.08,13.522],[-16.911,24.412],[-9.114,-3.882],[4.572,-15.496],[7.929,-18.556]],"o":[[6.777,10.002],[-8.259,7.863],[-7.467,-4.376],[-3.519,6.284],[-7.767,10.725],[-10.431,-5.527],[10.332,-34.612],[9.114,-13.062],[9.474,4.08],[-3.621,12.141],[15.498,8.259]],"v":[[13.209,24.494],[10.479,56.013],[-20.022,56.967],[-42.459,37.325],[-52.92,53.973],[-85.722,65.093],[-95.955,34.364],[-45.222,-72.925],[-15.48,-83.19],[-3.372,-53.58],[-21.633,-4.854]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[560.759,152.66],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.876,10.89],[-6.018,-2.633],[-9.54,3.29],[2.139,6.087],[8.391,-2.896],[5.46,-2.106],[3.684,10.66],[-8.949,3.093],[-5.364,1.875],[2.139,6.12],[7.038,-2.434],[3.915,-7.107],[14.345,4.442],[-2.237,9.541],[-26.847,9.311],[-9.114,-26.287],[15.696,-12.469],[0,0],[-6.285,-18.095],[35.202,-12.206],[17.406,13.357]],"o":[[8.556,-13.424],[8.259,3.52],[8.556,-2.961],[-2.169,-6.284],[-5.328,1.842],[-9.576,3.751],[-4.08,-11.811],[5.526,-1.908],[7.041,-2.434],[-2.136,-6.119],[-7.437,2.566],[-4.311,7.896],[-12.206,-3.882],[4.541,-19.477],[28.92,-10.035],[5.79,16.747],[0,0],[21.123,-1.777],[9.639,27.801],[-24.939,8.653],[-8.223,-6.35]],"v":[[-44.926,46.357],[-19.396,38.166],[9.557,39.218],[20.513,24.117],[2.483,18.853],[-11.794,24.445],[-33.508,9.805],[-24.922,-13.423],[-11.893,-17.734],[-2.452,-31.683],[-18.439,-36.586],[-35.714,-21.221],[-62.988,-9.443],[-76.314,-31.914],[-28.181,-78.237],[41.438,-54.583],[28.508,-11.943],[28.639,-11.547],[68.911,14.806],[24.001,79.62],[-42.13,73.961]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.3,177.319],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.377,-12.601],[10.528,-7.831],[1.876,-1.151],[-6.087,-9.542],[11.22,-7.864],[10.265,10.431],[14.279,26.288],[-8.916,6.613],[-10.462,-12.042],[-10.397,-13.621],[-1.941,1.447]],"o":[[9.739,13.094],[-1.612,1.217],[11.154,15.299],[8.883,13.982],[-11.055,7.731],[-22.801,-23.228],[-7.6,-13.917],[9.048,-6.745],[6.646,7.6],[1.645,-1.48],[9.509,-7.107]],"v":[[79.291,-60.916],[78.633,-29.034],[74.487,-26.206],[101.433,12.75],[97.518,46.308],[66.756,40.057],[-17.207,-72.497],[-12.239,-103.292],[18.885,-98.586],[45.403,-65.325],[50.667,-69.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.752,-9.081],[-4.606,-17.668],[9.31,-32.046],[12.042,1.35],[-1.382,13.326],[7.238,27.012],[12.075,-7.732],[7.435,9.311],[-10.989,10.199],[-18.852,10.758]],"o":[[7.633,7.896],[7.567,28.755],[-3.521,12.138],[-13.061,-1.347],[3.059,-29.643],[-8.982,8.193],[-10.331,6.679],[-7.535,-9.475],[13.358,-12.436],[12.7,-7.206]],"v":[[-19.016,-51.308],[-1.579,-18.078],[2.534,90.099],[-23.623,109.279],[-40.599,83.748],[-45.337,-7.386],[-73.862,14.328],[-102.781,10.216],[-98.307,-21.237],[-53.003,-54.17]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.401,258.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":81,"op":150,"st":21,"bm":0}],"markers":[]} \ No newline at end of file From 631bfa15ac555ce4b1c9db159af2f96500518acd Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Mon, 8 Aug 2022 23:08:59 +0900 Subject: [PATCH 139/166] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=95=8C=20=EB=B0=9B=EB=8A=94=20=ED=95=B8=EB=93=9C?= =?UTF-8?q?=ED=8F=B0=20=EB=B2=88=ED=98=B8=20=EC=9D=B8=ED=92=8B=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../membership/signup/SignupReactor.swift | 17 ----------------- .../membership/signup/SignupView.swift | 19 +------------------ .../signup/SignupViewController.swift | 5 ----- .../models/dto/request/SignupRequest.swift | 2 -- .../strings/en.lproj/Localizations.strings | 3 --- .../services/AuthService.swift | 3 --- 6 files changed, 1 insertion(+), 48 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index 271981c..42103c3 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -10,7 +10,6 @@ final class SignupReactor: BaseReactor, Reactor { case inputOwnerName(String) case inputStoreName(String) case inputRegisterationNumber(String) - case inputPhoneNumber(String) case selectCategory(index: Int) case selectPhoto(UIImage) case tapSignup @@ -20,7 +19,6 @@ final class SignupReactor: BaseReactor, Reactor { case setOwnerName(String) case setStoreName(String) case setRegisterationNumber(String) - case setPhoneNumber(String) case selectCategory(StoreCategory) case deselectCategory(StoreCategory) case setCategories([StoreCategory]) @@ -36,7 +34,6 @@ final class SignupReactor: BaseReactor, Reactor { var ownerName = "" var storeName = "" var registerationNumber = "" - var phoneNumber = "" var categories: [StoreCategory] = [] var selectedCategories: [StoreCategory] = [] var photo: UIImage? @@ -92,12 +89,6 @@ final class SignupReactor: BaseReactor, Reactor { .just(.setSignupButtonEnable(self.validate(registerationNumber: registerationNumber))) ]) - case .inputPhoneNumber(let phoneNumber): - return .merge([ - .just(.setPhoneNumber(phoneNumber)), - .just(.setSignupButtonEnable(self.validate(phoneNumber: phoneNumber))) - ]) - case .selectCategory(let index): let selectedCategory = self.currentState.categories[index] @@ -131,9 +122,6 @@ final class SignupReactor: BaseReactor, Reactor { case .setRegisterationNumber(let registerationNumber): newState.registerationNumber = registerationNumber - case .setPhoneNumber(let phoneNumber): - newState.phoneNumber = phoneNumber - case .selectCategory(let category): newState.selectedCategories.append(category) @@ -171,19 +159,16 @@ final class SignupReactor: BaseReactor, Reactor { ownerName: String? = nil, storeName: String? = nil, registerationNumber: String? = nil, - phoneNumber: String? = nil, photo: UIImage? = nil ) -> Bool { let ownerName = ownerName ?? self.currentState.ownerName let storeName = storeName ?? self.currentState.storeName let registerationNumber = registerationNumber ?? self.currentState.registerationNumber - let phoneNumber = phoneNumber ?? self.currentState.phoneNumber let photo = photo ?? self.currentState.photo return !ownerName.isEmpty && !storeName.isEmpty && !registerationNumber.isEmpty - && !phoneNumber.isEmpty && photo != nil } @@ -198,7 +183,6 @@ final class SignupReactor: BaseReactor, Reactor { let ownerName = self.currentState.ownerName let storeName = self.currentState.storeName let registerationNumber = self.currentState.registerationNumber - let phoneNumber = self.currentState.phoneNumber let categories = self.currentState.selectedCategories let photo = self.currentState.photo ?? UIImage() let socialType = self.socialType @@ -210,7 +194,6 @@ final class SignupReactor: BaseReactor, Reactor { ownerName: ownerName, storeName: storeName, registerationNumber: registerationNumber, - phoneNumber: phoneNumber, categories: categories, photoUrl: imageResponse.imageUrl, socialType: socialType, diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift index a82d472..6e5d068 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupView.swift @@ -62,16 +62,6 @@ final class SignupView: BaseView { $0.format = "XXX-XX-XXXXX" } - let phoneNumberField = InputField( - title: "signup_phone_number_title".localized, - isRequired: true, - description: "signup_phone_number_description".localized, - placeholder: "signup_phone_number_placeholder".localized - ).then { - $0.keyboardType = .numberPad - $0.format = "XXX-XXXX-XXXX" - } - let categoryCollectionView = CategorySelectView() let photoView = PhotoUploadView(type: .signup) @@ -107,7 +97,6 @@ final class SignupView: BaseView { self.ownerNameField, self.storeNameField, self.registerationNumberField, - self.phoneNumberField, self.categoryCollectionView, self.photoView ]) @@ -176,16 +165,10 @@ final class SignupView: BaseView { make.top.equalTo(self.storeNameField.snp.bottom).offset(32) } - self.phoneNumberField.snp.makeConstraints { make in - make.left.equalTo(self.ownerNameField) - make.right.equalTo(self.ownerNameField) - make.top.equalTo(self.registerationNumberField.snp.bottom).offset(32) - } - self.categoryCollectionView.snp.makeConstraints { make in make.left.equalTo(self.ownerNameField) make.right.equalTo(self.ownerNameField) - make.top.equalTo(self.phoneNumberField.snp.bottom).offset(32) + make.top.equalTo(self.registerationNumberField.snp.bottom).offset(32) } self.photoView.snp.makeConstraints { make in diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index 1009996..d2ec763 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -112,11 +112,6 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { .bind(to: reactor.action) .disposed(by: self.disposeBag) - self.signupView.phoneNumberField.rx.text - .map { Reactor.Action.inputPhoneNumber($0) } - .bind(to: reactor.action) - .disposed(by: self.disposeBag) - self.signupView.categoryCollectionView.categoryCollectionView.rx.itemSelected .map { Reactor.Action.selectCategory(index: $0.row) } .bind(to: reactor.action) diff --git a/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift index bed386a..b45a3ba 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/SignupRequest.swift @@ -4,7 +4,6 @@ struct SignupRequest: Requestable { let bossName: String let businessNumber: String let certificationPhotoUrl: String - let contactsNumber: String let socialType: SocialType let storeCategoriesIds: [String] let storeName: String @@ -15,7 +14,6 @@ struct SignupRequest: Requestable { "bossName": bossName, "businessNumber": businessNumber, "certificationPhotoUrl": certificationPhotoUrl, - "contactsNumber": contactsNumber, "socialType": socialType.rawValue, "storeCategoriesIds": storeCategoriesIds, "storeName": storeName, diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 0a4b886..1bd13bb 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -49,9 +49,6 @@ "signup_registeration_number_title" = "사업자 등록 번호"; "signup_registeration_number_description" = "“-”를 제외한 숫자만 입력"; "signup_registeration_number_placeholder" = "사업자 등록 번호를 입력해 주세요."; -"signup_phone_number_title" = "전화번호"; -"signup_phone_number_description" = "“-”를 제외한 숫자만 입력"; -"signup_phone_number_placeholder" = "전화번호를 입력해 주세요."; "signup_category_title" = "카테고리 선택"; "signup_category_description" = "최대 3개"; "signup_photo_title" = "가게 인증 사진"; diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 2d7b1ae..c4a7b5a 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -11,7 +11,6 @@ protocol AuthServiceType { ownerName: String, storeName: String, registerationNumber: String, - phoneNumber: String, categories: [StoreCategory], photoUrl: String, socialType: SocialType, @@ -73,7 +72,6 @@ struct AuthService: AuthServiceType { ownerName: String, storeName: String, registerationNumber: String, - phoneNumber: String, categories: [StoreCategory], photoUrl: String, socialType: SocialType, @@ -85,7 +83,6 @@ struct AuthService: AuthServiceType { bossName: ownerName, businessNumber: registerationNumber, certificationPhotoUrl: photoUrl, - contactsNumber: phoneNumber, socialType: socialType, storeCategoriesIds: categories.map { $0.categoryId }, storeName: storeName, From 551d47a30c75a430a25a6073da8a491cca9416ac Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 9 Aug 2022 14:18:52 +0900 Subject: [PATCH 140/166] =?UTF-8?q?feat:=20=EC=8A=B9=EC=9D=B8=20=EB=8C=80?= =?UTF-8?q?=EA=B8=B0=ED=99=94=EB=A9=B4=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 40 ++--- .../xcshareddata/swiftpm/Package.resolved | 2 +- ...c0f6d37fef00af1216ca2324971546583450 1.png | Bin 366 -> 0 bytes ...6d37fef00af1216ca2324971546583450 1@2x.png | Bin 583 -> 0 bytes ...6d37fef00af1216ca2324971546583450 1@3x.png | Bin 921 -> 0 bytes .../ic_apple.imageset/Contents.json | 15 +- .../ic_apple.imageset/ic_logo_apple.pdf | Bin 0 -> 48425 bytes .../ic_kakao.imageset/Contents.json | 15 +- .../ic_kakao.imageset/ic_logo_kakao.pdf | Bin 0 -> 2418 bytes .../ic_kakao.imageset/ic_logo_kakao.png | Bin 447 -> 0 bytes .../ic_kakao.imageset/ic_logo_kakao@2x.png | Bin 756 -> 0 bytes .../ic_kakao.imageset/ic_logo_kakao@3x.png | Bin 1050 -> 0 bytes .../Contents.json | 23 +++ .../img_waiting_bottom_1.imageset/Group.png | Bin 0 -> 9609 bytes .../Group@2x.png | Bin 0 -> 22970 bytes .../Group@3x.png | Bin 0 -> 38263 bytes .../Contents.json | 23 +++ .../Group 803.png | Bin 0 -> 16896 bytes .../Group 803@2x.png | Bin 0 -> 43391 bytes .../Group 803@3x.png | Bin 0 -> 77761 bytes .../Contents.json | 23 +++ .../Group 802.png | Bin 0 -> 24952 bytes .../Group 802@2x.png | Bin 0 -> 72742 bytes .../Group 802@3x.png | Bin 0 -> 136084 bytes .../signin/subviews/SocialSigninButton.swift | 5 +- .../membership/waiting/WaitingView.swift | 144 ++++++++++++++++-- .../waiting/WaitingViewController.swift | 4 + .../domains/splash/SplashViewController.swift | 4 + .../extensions/UIApplicationExtensions.swift | 11 ++ .../resources/lottie/splash.json | 2 +- .../strings/en.lproj/Localizations.strings | 5 +- 31 files changed, 245 insertions(+), 71 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1.png delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@2x.png delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/ic_logo_apple.pdf create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao.pdf delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao.png delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@2x.png delete mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_1.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_1.imageset/Group.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_1.imageset/Group@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_1.imageset/Group@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Group 803.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Group 803@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Group 803@3x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_3.imageset/Contents.json create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_3.imageset/Group 802.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_3.imageset/Group 802@2x.png create mode 100644 3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_3.imageset/Group 802@3x.png create mode 100644 3dollar-in-my-pocket-manager/extensions/UIApplicationExtensions.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 035280a..73fb451 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -40,6 +40,7 @@ 6E25FED027F531AB00BE2941 /* TabBarTag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */; }; 6E25FED327F535F100BE2941 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED227F535F100BE2941 /* LocationManager.swift */; }; 6E25FED627F5363600BE2941 /* LocationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E25FED527F5363600BE2941 /* LocationError.swift */; }; + 6E2FF3AE28A1F79A00497FE4 /* loading.json in Resources */ = {isa = PBXBuildFile; fileRef = 6E2FF3AD28A1F79A00497FE4 /* loading.json */; }; 6E37A2E42860AFE4008C046F /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E32860AFE4008C046F /* FirebaseAnalytics */; }; 6E37A2E62860AFE4008C046F /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E52860AFE4008C046F /* FirebaseCrashlytics */; }; 6E37A2E82860AFE4008C046F /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 6E37A2E72860AFE4008C046F /* FirebaseMessaging */; }; @@ -154,6 +155,7 @@ 6EA53BA0284DD766007A3839 /* SettingReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53B9F284DD766007A3839 /* SettingReactor.swift */; }; 6EA53BA2284DD8DB007A3839 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA1284DD8DB007A3839 /* User.swift */; }; 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */; }; + 6EB56F2928A223DF00834663 /* UIApplicationExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */; }; 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -202,7 +204,6 @@ 6EE2625027DDBE64008B3531 /* SPPermissionsNotification in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2624F27DDBE64008B3531 /* SPPermissionsNotification */; }; 6EE2625227DDBE64008B3531 /* SPPermissionsPhotoLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = 6EE2625127DDBE64008B3531 /* SPPermissionsPhotoLibrary */; }; 6EEA3D6B27F1E74C00BC5F31 /* MainTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */; }; - 6EEBC7BC28731F2700CBA0F0 /* loading.json in Resources */ = {isa = PBXBuildFile; fileRef = 6EEBC7BB28731F2700CBA0F0 /* loading.json */; }; 6EEBC7BF28731F7700CBA0F0 /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 6EEBC7BE28731F7700CBA0F0 /* Lottie */; }; 6EF1D499282D366400DA9D35 /* TotalStatisticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */; }; 6EF676B127EEC91E00D43E99 /* BossAccountInfoResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */; }; @@ -276,6 +277,7 @@ 6E25FECF27F531AB00BE2941 /* TabBarTag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarTag.swift; sourceTree = ""; }; 6E25FED227F535F100BE2941 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; 6E25FED527F5363600BE2941 /* LocationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationError.swift; sourceTree = ""; }; + 6E2FF3AD28A1F79A00497FE4 /* loading.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = loading.json; sourceTree = ""; }; 6E37AF6B27E7057F004FBE25 /* WaitingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingViewController.swift; sourceTree = ""; }; 6E37AF6E27E7069C004FBE25 /* WaitingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingReactor.swift; sourceTree = ""; }; 6E37AF7027E707FC004FBE25 /* WaitingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingCoordinator.swift; sourceTree = ""; }; @@ -385,6 +387,7 @@ 6EA53B9F284DD766007A3839 /* SettingReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingReactor.swift; sourceTree = ""; }; 6EA53BA1284DD8DB007A3839 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingCoordinator.swift; sourceTree = ""; }; + 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplicationExtensions.swift; sourceTree = ""; }; 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -421,7 +424,6 @@ 6EE0CFC427CB65C80027A426 /* UserDefaultsUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsUtils.swift; sourceTree = ""; }; 6EE2624627DDB9F2008B3531 /* SignupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignupCoordinator.swift; sourceTree = ""; }; 6EEA3D6A27F1E74C00BC5F31 /* MainTabController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabController.swift; sourceTree = ""; }; - 6EEBC7BB28731F2700CBA0F0 /* loading.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = loading.json; sourceTree = ""; }; 6EF1D498282D366400DA9D35 /* TotalStatisticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalStatisticsView.swift; sourceTree = ""; }; 6EF676B027EEC91E00D43E99 /* BossAccountInfoResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BossAccountInfoResponse.swift; sourceTree = ""; }; 6EF676B327EECBED00D43E99 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; @@ -458,7 +460,6 @@ 6E8E7F2F27EEBDB7005345BB /* CropViewController in Frameworks */, 6ED8838A27CB395B00278E14 /* SnapKit in Frameworks */, 6EEBC7BF28731F7700CBA0F0 /* Lottie in Frameworks */, - 6EE0CFB627CB5D850027A426 /* ReactorKit in Frameworks */, 6EE041D8288ADAD300E17D5B /* Lottie in Frameworks */, 6EE0CFA327CB567B0027A426 /* KakaoSDKUser in Frameworks */, 6EE2624A27DDBE64008B3531 /* SPPermissionsCamera in Frameworks */, @@ -1022,6 +1023,7 @@ 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */, 6E37AF7727E715C1004FBE25 /* UIViewControllerExtensions.swift */, 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */, + 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */, ); path = extensions; sourceTree = ""; @@ -1133,7 +1135,7 @@ 6EEBC7BA28731F1C00CBA0F0 /* lottie */ = { isa = PBXGroup; children = ( - 6EEBC7BB28731F2700CBA0F0 /* loading.json */, + 6E2FF3AD28A1F79A00497FE4 /* loading.json */, ); path = lottie; sourceTree = ""; @@ -1297,8 +1299,8 @@ files = ( 6E5D8895288B7A2400DE811A /* splash.json in Resources */, 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, + 6E2FF3AE28A1F79A00497FE4 /* loading.json in Resources */, 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */, - 6EEBC7BC28731F2700CBA0F0 /* loading.json in Resources */, 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */, 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, @@ -1480,6 +1482,7 @@ 6E211849285DD76F00220E5A /* FAQResponse.swift in Sources */, 6E5F21362819887C00922A99 /* MyStoreInfoCoordinator.swift in Sources */, 6E473B9627D861B800232139 /* SignupViewController.swift in Sources */, + 6EB56F2928A223DF00834663 /* UIApplicationExtensions.swift in Sources */, 6E5DCE6727FDB09400CA58EE /* Land.swift in Sources */, 6E6B431F285DB9B300AD84A5 /* FAQCollectionViewCell.swift in Sources */, 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, @@ -1680,7 +1683,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1721,7 +1724,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1833,14 +1836,6 @@ kind = branch; }; }; - 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ReactiveX/RxSwift.git"; - requirement = { - branch = main; - kind = branch; - }; - }; 6EE041D6288ADAD300E17D5B /* XCRemoteSwiftPackageReference "lottie-ios" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/airbnb/lottie-ios.git"; @@ -1939,21 +1934,6 @@ package = 6ED8838B27CB398300278E14 /* XCRemoteSwiftPackageReference "Then" */; productName = Then; }; - 6ED8838F27CB39E300278E14 /* RxCocoa */ = { - isa = XCSwiftPackageProductDependency; - package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxCocoa; - }; - 6ED8839127CB39E300278E14 /* RxRelay */ = { - isa = XCSwiftPackageProductDependency; - package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxRelay; - }; - 6ED8839327CB39E300278E14 /* RxSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 6ED8838E27CB39E300278E14 /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxSwift; - }; 6EE041D7288ADAD300E17D5B /* Lottie */ = { isa = XCSwiftPackageProductDependency; package = 6EE041D6288ADAD300E17D5B /* XCRemoteSwiftPackageReference "lottie-ios" */; diff --git a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved index af30991..35e36a6 100644 --- a/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/3dollar-in-my-pocket-manager.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -176,7 +176,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/ivanvorobei/SPPermissions", "state" : { - "revision" : "14299050782ac18a40edac8e7369425c13998b68", + "revision" : "ec3fc55e4fbc212cc746a84304f4aece0cb45467", "version" : "7.1.5" } }, diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1.png deleted file mode 100644 index 1aaaca78ffd33e58eb1921e9be1b19ccf912adc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9S!3HE7rssMADb50q$YKTtZeb8+WSBKa0w~B> z9OUlAu5*SfT2h;axuH2VAVVmrajaMqfGz-{+H?Z~HdR)r* zr;%6UBKy^Y6Yu33*gVjB(Y$%%_D!le677Ek%6;eP`(#zkT6bYd>b9-oQkKgmZdtn` z`@vVa+MpvQwV^S!p@UC;r8s0*(%3%A^o;5i_~5?XYP@5#YA;{ICimo`T?@ooeL4}+(x KpUXO@geCy{AB!yj diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@2x.png deleted file mode 100644 index d6ab1c54365b6d4cbd20ba52bdf2eae34f4529c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmV-N0=WH&P)iypZV9Xwr87ne$CFzJ3B!3(m?DHF^g_^$S@HRB1{F8Q%l@CL@uD5JR;-} zVaB1H$pDc%A_vO3c8ElYJ}9TgA@W5`z(d-E$SKhSPpKpJi8Z1Z86?$7)e-NYktiV^ zh~s$Y?+M!R$nc)iL{t$UF!Sn=I3OO8My81~xK{}CMr;uyM1H(YJFx__f?`S9ZouqI z2~$X{CwZ9UlXyRaxY3FPf1e9UerOF*tJRL1fA$(&<5D z4FOqE7I}e~w7J&jX6WV|W?BEomeD?ioydYMQxDx-%7QIZ1l|0|f-Un6-IU9ME%OT9 zw90}l^90>=$$~8thHm(%(Q6lMnJegL837At6#B0NW}7IMGNmv_NFPGGM70#!_awuF zq|Bg4nV6K}|H@%sGI>IViv`30^mFDamci`C+9T7CfXph3Y$8c^ltg$tsZA!shpmW$ z%sf&I->XEkD6)t&GnXY1J_F|>gDk)tzFZGIihn;uw7^`ij>Eijf>tG8$yUlvegVUR VWQ5%lHQ4|F002ovPDHLkV1m~P^Y;J% diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_apple.imageset/3bc2be40c33e2f7502f4c7eeced265b6ddef09ea42d72d604306f76d2702f8b7515bbe93555022021f4cb8ca81eff4c0da45f1719aadac6e9eec33f5ec4d3c2e1d250932ee92decfce0b522580c7c0f6d37fef00af1216ca2324971546583450 1@3x.png deleted file mode 100644 index 37e646186a30a60b0f53e010036c9b8bc99bed88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/Contents.json index e657fd8..25f1192 100644 --- a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/Contents.json +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/Contents.json @@ -1,19 +1,8 @@ { "images" : [ { - "filename" : "ic_logo_kakao.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ic_logo_kakao@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ic_logo_kakao@3x.png", - "idiom" : "universal", - "scale" : "3x" + "filename" : "ic_logo_kakao.pdf", + "idiom" : "universal" } ], "info" : { diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao.pdf b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c08de41effe6cfaa0087d51279ecc5d5115f7db6 GIT binary patch literal 2418 zcmeHIOK;pZ5We$Q%*8-*2*vjU2n@te6m1Z9w}${h53vq4@3dV}j!SyW3Bx>Jh_L{F3VX{s9zT zTusn*+dMrk1cvYNY>*iR*Ql>8>+Z2^Q(b*NI6pm|RIQ(G`@!f{)9xm0mAdAstx`uO z^3Aie<{3VK;9^+wMwvY{?|w&BDB1OGDtD~7NPlgrw7Ncn^Y!wp>e!!5?!~j}S9zDu z^!}3K(Fh+MR68cPlF^BPzDVhv@w8FWx(HoWv&cCnCL+Dng{0`S|(pyv%} z%xOj{CJibxQIWFgnheOKiWs!z+8b*m%n)(v4AO?8`JN>1gI1WBtZvR*HakNVdte_~ z&3B1B!(ISh1P^i;dnozPIVg55+d^a~(=T!-%Y9$zJ8dTw%;&;9kfFZ(o{ zU&`TU{kH7>7c*y9m7Ut`}%MPOihCao8idN4>j`wIlJ#zfz)0!U$0G4IA+PXY#Mv`B1v!Ry6HRk zKx1SM>889-6Yw_OZOZ>TkVw-!+vr*B2kLoK_o+sU#K0cBp}E-u_T&Lt@I=rU0S)b+ zH+SeNPy{R3dwkwJp{zXeze8l9348id6-C%(i*w}XWnXTa`$O61Hhp9Qq-0~g(SLB3 z<`Lr4A_KGlD|B4JVdS(H5KX)TNNRTs;aK~}Eq5&Fk8gz|Cvdo6VH{Xg!p;`^w%lw} z%ZT2eE|A<8U9(Fs;l<|eP000;W1^@s654Bdt00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP+Ma_+I z?rL?x1nwrWj)Rhx_8oMNn#e)Nqiv)?Nrdt3SqmaM3`*q3;t!aSyvjA?b%_*uKc7xk%RRl$bJd;(GNcZi{>9?Sp$002ovPDHLkV1ncqwXy&J diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@2x.png deleted file mode 100644 index a980469b6a0f1cf10b6a4b0d588e985ed78ee196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmV8U5(DG)@OurByy3#sA0Sb$-3x6;;A>uc(!Vozj!U%@WFYojS8ObfeE`DlEpFwAf zJ6!@AOoOXCJ#_s;E)hpcg)sb0zA99QMnJE{)O6a!02%3ZI-fZ`3vu#^mrC`?@E7cwM<0n+hf_s} z6Du}+UGfc-7rpm~4x@>lEDokSwlSX?BEX^^p5tV7(BXEXV>F03sIHJGB8~^uU!~cQ ztRQTwCCdns=c9`TGHoxfD^UcQ#`wZAvt{c@K8XMmG!WB*`|U)tW{O~&S1phzV%kFH zw76<)J@QlQ@#0vbh_RNSLKLAv5NK^<)8hnTfF=>FuP0SRoU1hEG-$Y~zHqB22&dK- zu}jDnNt><0NrY8zB!k?U5G#PTS9#8roxKsPkobXhk|My8sXUFZHmXsG_~IVXVOpJ? zyW7!I>WrEDa&aq^j5S*d=z}bN=rX@h-^mtCFp!FGJw48YEXJDb`BPvRY3=NPg_~!+ z&cSt&Y?p|}vh^2|r;YM<0!ugvzS;a>{>mJP4=tOUO)70pHfv%0Omd(sJHCx4C_>zK zT^X~1QKI~%zKu{5#YB*KJ3q|F7(#;|x4QPONFfo@hdquZ$nHx+_|&E4SOvL7yi%%b mm~EE(u4rrCrp`f diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/ic_kakao.imageset/ic_logo_kakao@3x.png deleted file mode 100644 index 8d4f0adcd19a635ad02db061fc3b3c0568b34c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_1.imageset/Group@2x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_1.imageset/Group@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..04183b2bfac6d603ffa4e9951610760877a7554d GIT binary patch literal 22970 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Contents.json b/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Contents.json new file mode 100644 index 0000000..73f10ff --- /dev/null +++ b/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 803.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 803@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 803@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Group 803.png b/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_2.imageset/Group 803.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3eeb1da57c6745c4f900a4f9625ddac7c8f8de GIT binary patch literal 16896 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 I$-fQxKa4G)8vpM{rjjcHhqR;UPw+y=^WGJ5`q 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 literal 0 HcmV?d00001 diff --git a/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_3.imageset/Group 802@3x.png b/3dollar-in-my-pocket-manager/Assets.xcassets/img_waiting_bottom_3.imageset/Group 802@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f6cd926f13eb94ab1e2dde628718ca2d834f0251 GIT binary patch literal 136084 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%0A+=ZyO}W`@HER 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 WaitingViewController { return WaitingViewController(nibName: nil, bundle: nil) } diff --git a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift index 04db01d..5fe0d81 100644 --- a/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/splash/SplashViewController.swift @@ -15,6 +15,10 @@ final class SplashViewController: BaseViewController, View, SplashCoordinator { private weak var coordinator: SplashCoordinator? private let finishLottiePublisher = PublishRelay() + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + static func instance() -> SplashViewController { return SplashViewController(nibName: nil, bundle: nil) } diff --git a/3dollar-in-my-pocket-manager/extensions/UIApplicationExtensions.swift b/3dollar-in-my-pocket-manager/extensions/UIApplicationExtensions.swift new file mode 100644 index 0000000..21108cd --- /dev/null +++ b/3dollar-in-my-pocket-manager/extensions/UIApplicationExtensions.swift @@ -0,0 +1,11 @@ +import UIKit + +extension UIApplication { + var keyWindow: UIWindow? { + return UIApplication.shared.connectedScenes + .filter { $0.activationState == .foregroundActive } + .first(where: { $0 is UIWindowScene }) + .flatMap({ $0 as? UIWindowScene })?.windows + .first(where: \.isKeyWindow) + } +} diff --git a/3dollar-in-my-pocket-manager/resources/lottie/splash.json b/3dollar-in-my-pocket-manager/resources/lottie/splash.json index 3257229..f90a03a 100644 --- a/3dollar-in-my-pocket-manager/resources/lottie/splash.json +++ b/3dollar-in-my-pocket-manager/resources/lottie/splash.json @@ -1 +1 @@ -{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.0.0","a":"","k":"","d":"","tc":"none"},"fr":30,"ip":0,"op":150,"w":1125,"h":1125,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1/partners_splash_cloud Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[1298,562.5,0],"to":[-249.333,0,0],"ti":[249.333,0,0]},{"t":150,"s":[-198,562.5,0]}],"ix":2},"a":{"a":0,"k":[1323,562.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.462],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.98],[1.214,-6.531],[53.641,3.549],[61.76,1.079]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1265.767,950.067],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-129.873],[129.873,0],[0,129.873],[-129.872,0]],"o":[[0,129.873],[-129.872,0],[0,-129.873],[129.873,0]],"v":[[235.156,144.025],[0,379.18],[-235.156,144.025],[0,-91.13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1285.194,1033.87],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.798,0],[1.981,-0.127],[138.952,0],[35.495,-100.372],[55.655,0],[8.546,-0.897],[53.541,36.943],[67.734,0],[0,-183.167],[-26.335,-48.364],[-2.127,0],[-0.911,0.495],[1.585,2.91],[0,53.414],[-176.55,0],[-53.528,-36.934],[-23.734,-56.514],[33.03,-26.143],[-2.057,-2.599],[-2.596,2.054],[-52.445,0],[-43.286,-59.274],[-1.852,0],[-1.066,0.78],[1.954,2.677],[12.554,11.22],[-105.503,0],[-2.288,-132.152],[12.815,-12.235],[-2.288,-2.397],[-2.4,2.291],[-20.707,0],[0,-44.183],[4.037,-9.741],[-3.061,-1.268],[-0.765,0],[-0.958,2.312],[0,12.208]],"o":[[-2.001,0],[-3.101,-138.058],[-109.063,0],[-42.658,-34.234],[-8.729,0],[-24.485,-59.948],[-55.541,-38.326],[-183.167,0],[0,55.415],[1.088,2.001],[0.968,0],[2.91,-1.585],[-25.379,-46.608],[0,-176.549],[65.288,0],[50.733,35.009],[-40.833,6.408],[-2.598,2.057],[2.054,2.601],[41.024,-32.472],[73.298,0],[1.175,1.608],[1.227,0],[2.675,-1.954],[-10.093,-13.82],[32.559,-97.969],[132.853,0],[-17.062,3.36],[-2.397,2.289],[2.288,2.399],[14.97,-14.288],[44.183,0],[0,10.623],[-1.269,3.062],[0.75,0.311],[2.356,-0.003],[4.643,-11.203],[0,-50.798]],"v":[[581.288,132.414],[575.317,132.629],[319.942,-116.806],[80.031,50.44],[-71.906,-3.192],[-97.819,-1.792],[-216.984,-149.85],[-405.419,-208.432],[-737.603,123.751],[-697.349,282.382],[-692.074,285.514],[-689.211,284.784],[-686.811,276.645],[-725.603,123.751],[-405.419,-196.432],[-223.799,-139.974],[-110.165,-0.192],[-222.229,49.035],[-223.21,57.464],[-214.781,58.445],[-71.906,8.808],[114.281,103.469],[119.133,105.93],[122.666,104.775],[123.973,96.391],[89.869,58.773],[319.942,-104.806],[563.356,134.165],[517.679,157.893],[517.482,166.375],[525.964,166.571],[581.288,144.414],[661.415,224.541],[655.33,255.229],[658.576,263.069],[660.87,263.529],[666.416,259.823],[673.415,224.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[673.415,916.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.016,3.8],[2.001,-2.636],[-2.64,-2.001],[-3.73,-4.087],[-1.629,0],[-1.148,1.049],[2.232,2.446]],"o":[[-2.646,-2.007],[-2.001,2.64],[4.433,3.36],[1.183,1.298],[1.442,0],[2.449,-2.233],[-4.222,-4.629]],"v":[[-2.874,-10.37],[-11.279,-9.212],[-10.122,-0.807],[2.183,10.419],[6.618,12.377],[10.658,10.81],[11.048,2.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1062.536,934.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.461],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.981],[1.215,-6.531],[53.641,3.549],[61.76,1.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[986.676,922.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.313,0],[22.143,-6.029],[-0.87,-3.196],[-2.642,0],[-0.528,0.144],[-22.254,0],[0,3.313]],"o":[[-23.317,0],[-3.197,0.87],[0.727,2.669],[0.521,0],[21.115,-5.751],[3.313,0],[0,-3.313]],"v":[[33.797,-10.44],[-34.714,-1.352],[-38.927,6.013],[-33.14,10.44],[-31.561,10.226],[33.797,1.56],[39.797,-4.44]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.997,810.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[65.052,5.386],[133.507,0],[34.73,-101.385],[63.374,0],[7.647,-0.694],[137.962,0],[0,-180.815],[-180.815,0],[-41.492,19.021],[-76.259,0],[-36.541,95.128],[-64.231,0],[-43.386,36.147],[-31.72,0],[0,70.011]],"o":[[-9.366,-135.4],[-110.077,0],[-44.446,-38.438],[-7.828,0],[-48.197,-120.766],[-180.815,0],[0,180.815],[48.63,0],[46.478,53.283],[107.994,0],[44.602,40.742],[60.086,0],[22.233,19.255],[70.012,0],[0,-66.442]],"v":[[565.417,131.199],[313.215,-111.047],[74.777,62.978],[-90.986,1.287],[-114.201,2.355],[-418.38,-203.752],[-745.775,123.642],[-418.38,451.037],[-282.112,421.399],[-90.986,508.356],[145.756,345.701],[313.215,411.187],[471.867,353.384],[554.818,384.289],[681.586,257.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[681.586,921.248],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.798,0],[1.981,-0.127],[138.952,0],[35.495,-100.372],[55.655,0],[8.546,-0.897],[53.541,36.943],[67.734,0],[0,-183.167],[-26.335,-48.364],[-2.127,0],[-0.911,0.495],[1.585,2.91],[0,53.414],[-176.55,0],[-53.528,-36.934],[-23.734,-56.514],[33.03,-26.143],[-2.057,-2.599],[-2.596,2.054],[-52.445,0],[-43.286,-59.274],[-1.852,0],[-1.066,0.78],[1.954,2.677],[12.554,11.22],[-105.503,0],[-2.288,-132.152],[12.815,-12.235],[-2.288,-2.397],[-2.4,2.291],[-20.707,0],[0,-44.183],[4.037,-9.741],[-3.061,-1.268],[-0.765,0],[-0.958,2.312],[0,12.208]],"o":[[-2.001,0],[-3.101,-138.058],[-109.063,0],[-42.658,-34.234],[-8.729,0],[-24.486,-59.948],[-55.541,-38.326],[-183.167,0],[0,55.415],[1.088,2.001],[0.968,0],[2.91,-1.585],[-25.379,-46.608],[0,-176.549],[65.288,0],[50.733,35.009],[-40.833,6.408],[-2.598,2.057],[2.054,2.601],[41.024,-32.472],[73.298,0],[1.175,1.608],[1.227,0],[2.675,-1.954],[-10.093,-13.82],[32.559,-97.969],[132.853,0],[-17.062,3.36],[-2.397,2.289],[2.288,2.399],[14.97,-14.288],[44.183,0],[0,10.623],[-1.269,3.062],[0.75,0.311],[2.356,-0.003],[4.643,-11.203],[0,-50.798]],"v":[[644.465,132.414],[638.493,132.629],[383.118,-116.806],[143.207,50.44],[-8.729,-3.192],[-34.642,-1.792],[-153.807,-149.85],[-342.242,-208.432],[-674.426,123.751],[-634.172,282.382],[-628.897,285.514],[-626.034,284.784],[-623.634,276.645],[-662.426,123.751],[-342.242,-196.432],[-160.622,-139.974],[-46.988,-0.192],[-159.052,49.035],[-160.033,57.464],[-151.604,58.445],[-8.729,8.808],[177.458,103.469],[182.31,105.93],[185.843,104.775],[187.149,96.391],[153.045,58.773],[383.118,-104.806],[626.532,134.165],[580.855,157.893],[580.658,166.375],[589.14,166.571],[644.465,144.414],[724.592,224.541],[718.507,255.229],[721.752,263.069],[724.046,263.529],[729.593,259.823],[736.592,224.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1970.97,916.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.016,3.8],[2.001,-2.636],[-2.64,-2.001],[-3.73,-4.087],[-1.629,0],[-1.148,1.049],[2.232,2.446]],"o":[[-2.646,-2.007],[-2.001,2.64],[4.433,3.36],[1.183,1.298],[1.442,0],[2.449,-2.233],[-4.222,-4.629]],"v":[[-2.874,-10.37],[-11.279,-9.212],[-10.122,-0.807],[2.183,10.419],[6.618,12.377],[10.658,10.81],[11.048,2.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2423.267,934.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.461],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.981],[1.215,-6.531],[53.642,3.549],[61.76,1.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2347.407,922.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.313,0],[22.143,-6.029],[-0.87,-3.196],[-2.641,0],[-0.528,0.144],[-22.254,0],[0,3.313]],"o":[[-23.317,0],[-3.197,0.87],[0.727,2.669],[0.522,0],[21.115,-5.751],[3.313,0],[0,-3.313]],"v":[[33.797,-10.44],[-34.714,-1.352],[-38.927,6.013],[-33.141,10.44],[-31.561,10.226],[33.797,1.56],[39.797,-4.44]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1597.728,810.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[65.052,5.386],[133.507,0],[34.73,-101.385],[63.374,0],[7.648,-0.694],[137.962,0],[0,-180.815],[-180.815,0],[-41.492,19.021],[-76.259,0],[-36.541,95.128],[-64.231,0],[-43.386,36.147],[-31.72,0],[0,70.011]],"o":[[-9.366,-135.4],[-110.077,0],[-44.446,-38.438],[-7.828,0],[-48.197,-120.766],[-180.815,0],[0,180.815],[48.63,0],[46.478,53.283],[107.994,0],[44.602,40.742],[60.086,0],[22.233,19.255],[70.012,0],[0,-66.442]],"v":[[636.766,131.199],[384.563,-111.047],[146.125,62.978],[-19.637,1.287],[-42.853,2.355],[-347.031,-203.752],[-674.426,123.642],[-347.031,451.037],[-210.763,421.399],[-19.637,508.356],[217.105,345.701],[384.563,411.187],[543.216,353.384],[626.167,384.289],[752.935,257.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1970.969,921.248],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"null","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[-537.5,562.5,0],"to":[183.333,0,0],"ti":[-183.333,0,0]},{"t":40,"s":[562.5,562.5,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[331.797,352.562],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.602,-2.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 2/partners_splash Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-40,0],"to":[0,6.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":81,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":91,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":101,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":111,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":121,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":131,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":141,"s":[0,-40,0],"to":[0,0,0],"ti":[0,-6.667,0]},{"t":150,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[562.5,562.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[15.307,-0.316],[38.951,0],[8.579,-36.41],[0,0],[0,11.525],[4.142,0],[0,-4.143],[-1.913,-4.385],[60.983,0.326],[38.291,0],[10.936,-32.77],[0,0],[0,17.475],[0,0],[-17.443,1.005],[-108.363,-6.363],[0,0],[0,0],[-4.143,0],[0,4.143],[0,0],[-24.43,0],[0,0],[-15.328,-17.987],[0,0],[0,-22.636]],"o":[[0,15.379],[-8.584,-36.395],[-38.992,0],[0,0],[-11.528,0],[0,-4.143],[-4.143,0],[0,5.08],[-53.863,3.419],[-9.272,-35.425],[-36.4,0],[0,0],[-17.435,-1.002],[0,0],[0,-17.475],[108.364,-6.363],[0,0],[0,0],[0,4.143],[4.142,0],[0,0],[0,-24.431],[0,0],[23.622,0],[0,0],[14.737,17.314],[0,0]],"v":[[293.061,105.899],[265.394,134.12],[185.152,70.549],[104.843,134.15],[102.35,134.15],[81.444,113.247],[73.944,105.747],[66.444,113.247],[69.432,127.542],[-103.46,132.191],[-183.303,70.549],[-261.587,127.018],[-261.968,126.999],[-293.061,94.044],[-293.061,83.174],[-261.96,50.217],[35.345,50.217],[66.444,52.029],[66.444,56.065],[73.944,63.565],[81.444,56.065],[81.444,-101.266],[125.752,-145.573],[170.026,-145.573],[231.315,-117.271],[270.209,-71.646],[293.061,-9.695]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[17.045,20.029],[0,0],[28.022,0],[0,0],[0,-32.703],[0,0],[0,0],[108.994,-6.398],[0,-25.416],[0,0],[-24.324,-2.552],[0,-3.848],[-4.142,0],[0,4.142],[-37.234,0],[-5.708,-31.493],[-0.014,-0.068],[0,-4.048],[-4.142,0],[0,4.142],[0.137,1.941],[-4.594,0],[-52.29,3.587],[-8.119,0],[0,0],[0,-1.316],[-4.142,0],[0,4.142],[-37.234,0],[0,-37.234],[-4.143,0],[0,4.142],[0.065,1.345],[0,22.935],[0,0]],"o":[[0,0],[-18.179,-21.336],[0,0],[-32.704,0],[0,0],[0,0],[-108.999,-6.399],[-25.362,1.461],[0,0],[0,24.652],[-0.512,3.708],[0,4.142],[4.143,0],[0,-37.234],[33.113,0],[0.012,0.069],[0.686,3.854],[0,4.142],[4.143,0],[0,-1.975],[4.626,0.022],[59.242,0],[6.021,4.561],[0,0],[-0.061,1.301],[0,4.142],[4.143,0],[0,-37.234],[37.198,0],[0,4.142],[4.142,0],[0,-1.362],[22.589,-1.407],[0,0],[0,-26.196]],"v":[[281.629,-81.373],[242.729,-127.002],[170.026,-160.573],[125.752,-160.573],[66.444,-101.266],[66.444,37.004],[36.221,35.244],[-262.83,35.242],[-308.061,83.174],[-308.061,94.044],[-265.029,141.737],[-265.827,153.073],[-258.327,160.573],[-250.827,153.073],[-183.303,85.55],[-116.878,141.008],[-116.841,141.214],[-115.777,153.073],[-108.277,160.573],[-100.777,153.073],[-101.009,147.206],[-87.148,147.258],[80.737,141.848],[102.35,149.15],[102.728,149.15],[102.628,153.073],[110.128,160.573],[117.628,153.073],[185.152,85.55],[252.614,153.073],[260.114,160.573],[267.614,153.073],[267.511,149.013],[308.061,105.899],[308.061,-9.695]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[604.39,620.213],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.153,6.047],[0,0],[17.327,0],[0,0],[0,-16.12],[0,0],[-19.268,-0.156],[0,0],[0,0],[-0.026,4.126],[4.14,0.025],[0,0],[0,11.029],[0,0],[-7.852,0],[0,0],[-8.397,-9.819],[0,0],[-2.094,-9.104],[2.423,-3.045],[3.868,0],[0,0],[0,-4.142],[-4.143,0],[0,0],[-5.276,6.63],[1.901,8.26]],"o":[[0,0],[-11.256,-13.166],[0,0],[-16.122,0],[0,0],[0,19.233],[0,0],[0,0],[4.122,0],[0.027,-4.141],[0,0],[-11.05,-0.089],[0,0],[0,-7.85],[0,0],[12.935,0],[0,0],[4.825,5.665],[0.871,3.781],[-2.414,3.034],[0,0],[-4.143,0],[0,4.143],[0,0],[8.464,0],[5.286,-6.643],[-2.954,-12.813]],"v":[[57.926,-6.593],[35.133,-33.34],[-9.841,-54.057],[-44.355,-54.057],[-73.594,-24.822],[-73.594,18.711],[-38.66,53.874],[-8.713,54.057],[-8.666,54.057],[-1.166,46.603],[-8.619,39.057],[-38.552,38.874],[-58.594,18.711],[-58.594,-24.822],[-44.355,-39.057],[-9.841,-39.057],[23.725,-23.601],[46.509,3.135],[57.073,23.542],[54.63,34.283],[44.745,39.057],[31.102,39.057],[23.602,46.557],[31.102,54.057],[44.745,54.057],[66.366,43.625],[71.693,20.176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[788.015,558.525],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.143,0.026],[0,0],[0,0],[0.026,-4.126],[-4.143,-0.026],[0,0],[0,0],[-0.026,4.126]],"o":[[0,0],[0,0],[-4.122,0],[-0.026,4.143],[0,0],[0,0],[4.122,0],[0.026,-4.143]],"v":[[15.022,-7.407],[-14.928,-7.593],[-14.975,-7.593],[-22.475,-0.14],[-15.022,7.407],[14.928,7.593],[14.975,7.593],[22.475,0.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[746.524,640.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.067,0],[0,4.143],[-4.143,0],[0,3.797],[3.797,0],[1.33,-1.995],[3.442,2.288],[-2.294,3.445],[-7.351,0],[0,-12.07]],"o":[[-4.143,0],[0,-4.143],[3.797,0],[0,-3.797],[-2.355,0],[-2.303,3.451],[-3.448,-2.297],[4.098,-6.153],[12.067,0],[0,12.071]],"v":[[-0.653,21.888],[-8.153,14.388],[-0.653,6.888],[6.232,0],[-0.653,-6.887],[-6.451,-3.747],[-16.852,-1.661],[-18.938,-12.061],[-0.653,-21.887],[21.232,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.676,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.143,0],[0,0],[0,4.143],[4.143,0],[0,0],[0,-4.143]],"o":[[0,0],[4.143,0],[0,-4.143],[0,0],[-4.143,0],[0,4.143]],"v":[[-33.158,7.5],[33.158,7.5],[40.658,0],[33.158,-7.5],[-33.158,-7.5],[-40.658,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.197,740.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,4.143],[4.143,0],[0,0],[0,-4.143],[-4.143,0],[0,0]],"o":[[0,-4.143],[0,0],[-4.143,0],[0,4.143],[0,0],[4.143,0]],"v":[[20.438,0],[12.938,-7.5],[-12.938,-7.5],[-20.438,0],[-12.938,7.5],[12.938,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.101,709.996],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,4.143],[4.143,0],[0,0],[0,-4.143],[-4.143,0],[0,0]],"o":[[0,-4.143],[0,0],[-4.143,0],[0,4.143],[0,0],[4.143,0]],"v":[[20.438,0],[12.938,-7.5],[-12.938,-7.5],[-20.438,0],[-12.938,7.5],[12.938,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[164.241,678.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.143,0],[0,0],[0,4.143],[4.143,0],[0,0],[0,-4.143]],"o":[[0,0],[4.143,0],[0,-4.143],[0,0],[-4.143,0],[0,4.143]],"v":[[-33.158,7.5],[33.158,7.5],[40.658,0],[33.158,-7.5],[-33.158,-7.5],[-40.658,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.197,678.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[28.515,0],[0,-28.515],[-28.515,0],[0,28.515]],"o":[[-28.515,0],[0,28.515],[28.515,0],[0,-28.515]],"v":[[0.002,-51.712],[-51.714,0],[0.002,51.712],[51.714,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.015,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.143,0],[0,4.143],[3.797,0],[0,-3.797],[4.142,0],[0,4.143],[-12.067,0],[0,-12.07]],"o":[[-4.143,0],[0,-3.797],[-3.797,0],[0,4.143],[-4.143,0],[0,-12.07],[12.071,0],[0,4.143]],"v":[[14.386,14.694],[6.886,7.194],[-0.002,0.306],[-6.886,7.194],[-14.386,14.694],[-21.886,7.194],[-0.002,-14.694],[21.886,7.194]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[789.532,766.092],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[28.515,0],[0,-28.515],[-28.515,0],[0,28.515]],"o":[[-28.515,0],[0,28.515],[28.515,0],[0,-28.515]],"v":[[-0.001,-51.712],[-51.714,0],[-0.001,51.712],[51.714,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[789.534,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.87,18.648],[0,0],[25.749,0],[0,0],[0,-28.65],[0,0],[0,0],[108.306,-6.36],[0,-21.426],[0,0],[0,0],[-21.426,-1.236],[0,0],[0,0],[-35.136,0],[-6.36,-35.013],[0,0],[-60.573,4.137],[-7.287,0],[0,0],[0,0],[-37.542,0],[-5.496,-36],[0,0],[0,19.761],[0,0]],"o":[[0,0],[-16.734,-19.635],[0,0],[-28.59,0],[0,0],[0,0],[-108.306,-6.36],[-21.426,1.233],[0,0],[0,0],[0,21.426],[0,0],[0,0],[8.151,-32.541],[36.801,0],[0,0],[63.909,0.495],[5.001,4.446],[0,0],[0,0],[5.496,-36],[37.545,0],[0,0],[13.215,0],[0,0],[-0.063,-24.45]],"v":[[273.79,-70.794],[234.889,-116.427],[167.893,-147.363],[123.619,-147.363],[71.812,-95.556],[71.812,50.355],[37.912,48.381],[-260.27,48.381],[-298.43,88.824],[-298.43,94.26],[-298.43,99.693],[-260.27,140.139],[-253.973,140.445],[-253.91,140.445],[-181.232,83.7],[-107.504,145.263],[-107.381,145.323],[81.382,140.076],[100.216,147.363],[108.862,147.363],[108.985,147.363],[183.019,83.76],[257.056,147.363],[269.221,147.363],[298.429,111.609],[298.429,-3.984]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.086274509804,0.086274509804,0.086274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[602.31,614.563],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.369,2.158],[0.559,0.646],[2.011,10.921],[-1.603,4.01],[3.847,1.537],[1.537,-3.847],[0.322,-1.92],[9.643,2.593],[1.076,-3.999],[-4.001,-1.077],[-11.856,0],[-1.979,0.15],[-0.057,-0.306],[-0.62,-2.409],[12.309,-2.482],[-0.819,-4.06],[-3.498,0],[-0.5,0.101],[-12.226,5.071],[-1.197,-2.417],[6.041,-13.054],[-3.76,-1.74],[-1.055,0],[-1.268,2.739],[-10.854,3.385],[-0.813,-1.082],[-2.281,0],[-1.349,1.013],[2.486,3.314]],"o":[[-0.313,-0.811],[-5.724,-9.627],[-0.775,-4.137],[1.538,-3.846],[-3.849,-1.538],[-0.761,1.905],[-11.974,1.037],[-3.997,-1.073],[-1.077,3.999],[9.159,2.465],[1.956,0],[0.056,0.315],[0.447,2.426],[-11.64,4.907],[-4.061,0.818],[0.718,3.561],[0.49,0],[12.903,-2.603],[1.019,2.497],[-13.428,5.148],[-1.739,3.759],[1.019,0.472],[2.831,0],[4.762,-10.291],[0.818,1.201],[1.474,1.965],[1.566,0],[3.313,-2.485],[-1.267,-1.689]],"v":[[33.139,10.464],[31.809,8.278],[19.98,-23.069],[20.122,-36.479],[15.941,-46.227],[6.195,-42.046],[4.6,-36.29],[-29.26,-40.525],[-38.451,-35.231],[-33.156,-26.041],[-0.84,-21.043],[5.069,-21.279],[5.233,-20.328],[6.863,-13.076],[-29.158,-1.878],[-35.027,6.956],[-27.682,12.975],[-26.193,12.826],[11.598,1.202],[14.904,8.584],[-15.924,37.113],[-12.266,47.068],[-9.121,47.765],[-2.31,43.412],[22.607,21.752],[25.042,25.168],[31.048,28.168],[35.542,26.668],[37.042,16.168]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[383.36,529.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.777,-3.52],[1.966,-1.211],[2.191,0.538],[0.988,0.896],[0.489,1.039],[3.753,-1.77],[-1.761,-3.748],[-1.608,-1.791],[25.159,-15.636],[16.888,-1.662],[0.5,0.565],[2.622,1.884],[2.417,-3.362],[-3.366,-2.414],[-1.248,-1.532],[-0.645,-1.017],[1.237,-5.479],[4.699,-2.924],[6.858,6.239],[3.624,5.746],[3.502,-2.209],[-2.209,-3.504],[0.392,-4.549],[0.01,-0.246],[5.334,-3.319],[5.365,1.262],[2.999,4.837],[0.533,1.731],[-2.278,4.74],[3.734,1.796],[1.793,-3.73],[-2.667,-8.763],[-0.375,-0.936],[0.224,-0.313],[2.376,-1.494],[5.553,1.412],[2.616,4.62],[-4.402,8.672],[-0.217,3.619],[8.805,5.464],[5.966,-1.694],[4.055,-4.702],[3.02,-34.081],[7.715,-6.425],[10.118,0.993],[6.674,8.147],[-5.928,13.403],[-3.515,2.151],[-3.631,12.902],[3.988,1.122],[1.122,-3.988],[7.998,-4.942],[3.662,-0.903],[9.055,14.587],[-2.28,10.101],[-8.631,5.37],[-4.119,0.939],[-6.07,-1.7],[-1.113,3.99],[3.989,1.116],[8.505,-1.953],[0.895,-0.254],[0.265,0.126],[4.006,6.479],[-2.28,10.098],[-8.682,5.403],[-9.818,-3],[-9.944,-7.379],[-13.469,-0.967],[0,0],[-5.222,2.123],[-0.983,6.69],[6.594,4.643],[6.861,1.654],[1.536,0.655],[1.731,2.826],[-12.295,7.641],[-5.228,-0.271],[-9.467,-6.918],[-1.535,0],[-1.469,2.01],[3.345,2.445],[0.521,10.074],[-2.452,4.715],[-15.368,-2.978],[-4.73,-4.532],[-1.027,-4.686],[-4.056,0.888],[0.888,4.048],[6.066,5.754],[0.164,0.153],[-8.399,5.22],[-8.301,-13.368],[-0.284,-5.415],[0,0],[0,0],[-21.373,-5.168],[-1.415,-0.435],[0,0],[-0.188,-0.069],[0,0],[-4.605,-2.215],[-11.324,-24.411],[1.445,-2.747],[-3.665,-1.93],[-1.928,3.663],[-2.186,1.402],[-0.118,0.081],[-4.461,-7.226],[7.052,-4.395],[0.903,-0.378],[3.566,1.298],[1.418,-3.89],[-3.891,-1.418],[-3.504,0],[-2.498,0.658]],"o":[[-0.527,2.284],[-1.94,1.191],[-1.482,-0.367],[-0.975,-0.9],[-1.761,-3.75],[-3.75,1.76],[0.978,2.084],[-6.897,29.006],[-14.376,8.918],[-0.619,-0.886],[-1.901,-2.345],[-3.363,-2.414],[-2.417,3.364],[1.538,1.107],[0.46,0.525],[2.994,4.81],[-1.227,5.437],[-7.838,4.89],[-0.016,-6.718],[-2.208,-3.504],[-3.504,2.209],[2.476,3.93],[-0.034,0.244],[-0.769,6.351],[-4.64,2.892],[-5.525,-1.292],[-1.04,-1.705],[-1.563,-5.139],[1.794,-3.736],[-3.734,-1.787],[-3.911,8.141],[0.297,0.964],[-0.261,0.268],[-1.617,2.268],[-4.827,3.006],[-5.306,-1.354],[-4.808,-8.537],[1.955,-3.849],[0.433,-7.081],[-4.021,-2.47],[-5.983,1.615],[-15.857,18.698],[-0.769,8.666],[-7.78,6.44],[-10.383,-1.005],[-9.497,-11.633],[3.698,-1.261],[11.231,-6.943],[1.124,-3.987],[-3.98,-1.128],[-2.612,9.278],[-3.471,2.124],[-16.348,4.128],[-5.529,-8.874],[2.269,-10.05],[3.636,-2.225],[6.087,-1.396],[3.989,1.113],[1.118,-3.989],[-8.474,-2.376],[-0.908,0.207],[-0.243,-0.152],[-6.909,-3.265],[-5.528,-8.874],[2.269,-10.051],[9.226,-5.749],[13.323,4.083],[16.156,12.036],[0,0],[7.868,0.589],[8.757,-3.527],[1.051,-7.681],[-2.864,-2.054],[-3.186,-0.767],[-3.037,-1.335],[-7.796,-12.546],[4.543,-2.832],[2.044,12.287],[1.334,0.976],[2.312,0],[2.443,-3.344],[-7.303,-5.338],[-0.311,-5.887],[6.805,-13.216],[6.349,1.201],[3.906,3.706],[0.886,4.046],[4.046,-0.886],[-1.672,-7.627],[-0.161,-0.155],[-0.332,-10.08],[13.112,-8.116],[2.277,3.641],[0,0],[0,0],[19.326,-8.028],[1.412,0.326],[0,0],[0.208,0.047],[0,0],[4.91,1.487],[23.519,11.206],[-2.132,2.123],[-1.931,3.665],[3.674,1.933],[1.239,-2.351],[0.123,-0.075],[7.155,-4.27],[4.521,7.311],[-0.662,0.4],[-3.419,1.393],[-3.893,-1.415],[-1.418,3.891],[3.375,1.231],[2.563,0],[2.845,2.069]],"v":[[228.292,-22.194],[224.421,-16.772],[217.999,-15.764],[214.196,-17.719],[211.99,-20.642],[202.016,-24.242],[198.414,-14.267],[202.297,-8.452],[152.779,60.639],[105.062,76.73],[103.36,74.495],[96.54,68.121],[86.076,69.839],[87.792,80.305],[91.896,84.165],[93.552,86.478],[96.279,102.433],[87.095,115.397],[62.128,112.865],[56.582,93.714],[46.24,91.368],[43.894,101.712],[47.055,114.665],[46.982,115.396],[37.426,130.586],[21.904,133.118],[8.668,123.59],[6.329,118.475],[7.439,103.157],[3.926,93.146],[-6.082,96.659],[-8.014,122.861],[-6.992,125.704],[-7.738,126.553],[-13.776,132.233],[-30.108,134.736],[-42.4,125.462],[-40.06,101.457],[-36.201,90.664],[-45.379,70.813],[-62.974,69.477],[-78.517,79.25],[-103.767,149.84],[-117.128,173.595],[-144.896,182.055],[-171.352,167.855],[-177.051,127.025],[-166.207,121.912],[-143.159,91.139],[-148.346,81.887],[-157.596,87.073],[-174.065,109.133],[-184.797,113.691],[-227.258,96.186],[-232.297,66.764],[-215.368,42.836],[-203.689,38.071],[-185.112,38.534],[-175.87,33.332],[-181.069,24.089],[-207.033,23.449],[-209.725,24.178],[-210.462,23.733],[-227.138,8.85],[-232.177,-20.572],[-215.198,-44.535],[-185.228,-48.858],[-150.159,-31.581],[-111.499,-14.612],[-109.713,-14.479],[-91.426,-15.625],[-76.543,-31.205],[-84.366,-48.573],[-98.441,-53.4],[-106.774,-55.692],[-114.163,-63.71],[-106.01,-100.319],[-91.069,-104.197],[-73.079,-73.958],[-68.66,-72.513],[-62.599,-75.588],[-64.229,-86.069],[-76.725,-110.677],[-73.46,-126.869],[-34.59,-144.845],[-17.423,-135.97],[-9.88,-123.143],[-0.948,-117.424],[4.771,-126.358],[-7.073,-146.827],[-7.574,-147.273],[5.418,-172.02],[44.24,-162.52],[47.251,-148.064],[47.251,-136.829],[57.626,-141.135],[120.688,-145.575],[124.932,-144.434],[125.491,-144.285],[126.095,-144.09],[126.549,-143.936],[140.875,-138.364],[195.31,-82.608],[189.895,-75.329],[193.035,-65.199],[203.167,-68.341],[208.344,-73.991],[208.715,-74.213],[229.697,-68.931],[225.045,-47.665],[222.689,-46.496],[211.855,-46.35],[202.24,-41.872],[206.717,-32.258],[217.108,-30.413],[224.723,-31.431]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[7.623,12.336],[12.721,-3.575],[26.197,12.48],[5.576,1.699],[0.691,0.171],[1.605,0.372],[19.906,-6.189],[2.342,3.748],[20.146,-12.474],[2.248,-11.606],[3.4,0.643],[9.884,-19.195],[0.704,-5.175],[6.888,-4.292],[-12.136,-19.531],[-6.886,-3.028],[-4.122,-0.993],[-1.105,-0.591],[-0.056,0.02],[0.151,-1.111],[4.264,-1.719],[5.959,0.445],[0,0],[15.138,11.278],[14.966,4.585],[12.909,-8.036],[3.158,-13.995],[-7.614,-12.224],[-5.57,-4.095],[2.92,-12.943],[-7.621,-12.235],[-18.283,0],[-0.127,0.001],[-11.047,-13.531],[-14.386,-1.392],[-1.735,0],[-9.545,7.901],[-1.136,12.8],[-13.684,16.134],[-3.165,0.852],[-0.91,-0.255],[0.259,-4.315],[0.898,-1.766],[-9.126,-16.21],[-9.303,-2.37],[-8.309,5.17],[-2.209,2.422],[-6.395,-1.496],[-2.726,0],[-5.682,3.536],[-2.888,5.979],[-6.224,0],[-5.704,3.563],[-2.115,9.387],[0.892,4.779],[-15.003,9.308],[-8.439,31.109],[-1.392,0],[-3.741,2.303],[-1.453,6.293],[4.399,5.555]],"o":[[-7.329,-11.858],[-12.873,-26.959],[-5.207,-2.505],[-0.629,-0.229],[-1.682,-0.51],[-20.989,-5.076],[-0.718,-4.2],[-12.646,-20.362],[-10.188,6.33],[-3.216,-1.375],[-21.979,-4.248],[-2.314,4.452],[-7.915,-0.215],[-19.311,12.003],[2.994,4.887],[2.766,1.18],[2.915,0.703],[1.365,0.958],[0.015,0.082],[-0.093,0.34],[-1.988,0.805],[0,0],[-9.32,-0.669],[-11.331,-8.408],[-13.965,-4.268],[-12.114,7.538],[-3.154,13.974],[3.671,5.935],[-10.677,7.559],[-3.154,13.973],[10.117,16.298],[0.127,0],[-4.006,16.325],[9.23,11.268],[1.751,0.17],[12.266,0],[10.937,-9.105],[2.741,-30.914],[2.047,-2.376],[2.416,-0.683],[1.648,1.037],[-0.148,0.847],[-4.172,8.215],[4.659,8.227],[9.491,2.417],[2.828,-1.781],[4.641,4.45],[2.726,0.636],[6.553,0],[5.793,-3.603],[5.503,3.116],[6.425,0],[8.124,-5.053],[1.096,-4.858],[17.53,-2.39],[27.385,-17.021],[1.395,0.251],[4.286,0],[5.411,-3.331],[1.604,-7.251],[9.757,-9.727]],"v":[[242.459,-76.816],[208.284,-90.207],[147.353,-151.893],[131.107,-158.228],[129.102,-158.845],[124.138,-160.174],[61.284,-158.395],[56.97,-170.452],[-2.488,-184.767],[-21.807,-156.526],[-31.772,-159.578],[-86.781,-133.763],[-91.327,-119.208],[-113.935,-113.054],[-126.928,-55.833],[-112.737,-41.927],[-101.956,-38.816],[-93.055,-36.346],[-91.315,-34.966],[-91.393,-33.327],[-97.051,-29.53],[-108.594,-29.439],[-110.414,-29.573],[-141.21,-43.619],[-180.837,-63.2],[-223.125,-57.27],[-246.809,-23.875],[-239.884,16.76],[-225.879,31.894],[-246.928,63.464],[-239.997,104.108],[-194.185,129.863],[-193.802,129.851],[-182.964,177.35],[-146.342,196.986],[-141.112,197.241],[-107.547,185.134],[-88.826,151.164],[-67.116,89],[-58.97,83.935],[-52.936,83.777],[-51.159,89.633],[-53.435,94.665],[-55.461,132.84],[-33.81,149.27],[-5.816,144.949],[1.734,138.608],[18.49,147.725],[26.69,148.678],[45.352,143.323],[58.536,128.65],[76.457,133.408],[95.029,128.126],[110.91,105.732],[111.175,91.158],[160.691,73.384],[215.865,-0.934],[220.05,-0.515],[232.284,-3.999],[242.922,-18.885],[238.182,-39.106]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[482.563,490.145],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.832,-3.681],[3.106,-1.913],[0,0],[4.155,6.625],[-0.87,3.704],[-3.114,1.919],[-2.464,0],[-2.716,-4.339]],"o":[[-0.817,3.625],[0,0],[-6.466,4.021],[-2.036,-3.268],[0.84,-3.58],[2.221,-1.38],[4.714,0],[2.01,3.252]],"v":[[13.626,5.474],[7.541,14.062],[7.515,14.078],[-11.76,9.34],[-13.567,-1.472],[-7.45,-9.989],[-0.293,-12.025],[11.801,-5.278]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[13.436,-8.361],[1.761,-7.495],[-4.172,-6.697],[-9.726,0],[-4.667,2.897],[-1.714,7.591],[4.105,6.653]],"o":[[-6.51,4.008],[-1.79,7.618],[5.578,8.903],[5.157,0],[6.562,-4.048],[1.702,-7.531],[-8.54,-13.635]],"v":[[-15.343,-22.742],[-28.169,-4.904],[-24.48,17.288],[0.401,31.103],[15.422,26.826],[28.257,8.777],[24.542,-13.197]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[611.222,418.492],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.001,-6.366],[1.573,-0.675],[0.299,-0.182],[9.031,14.52],[-9.057,11.372],[-3.337,2.09],[2.199,3.509],[3.509,-2.199],[3.004,-3.31],[2.509,5.237],[-3.955,6.592],[-7.27,3.356],[-5.565,-0.123],[-8.307,-5.281],[-3.555,-9.66],[9.076,-6.49],[-2.409,-3.369],[-2.338,0],[-1.321,0.945],[-9.22,-0.236],[-2.371,-4.57],[1.101,-1.046],[8.296,-0.602],[-0.299,-4.132],[-3.896,0],[-0.184,0.013],[-8.726,8.148],[-0.021,0.021],[-1.032,-1.631]],"o":[[-1.465,0.731],[-0.33,0.142],[-15.118,5.793],[-7.821,-12.56],[2.376,-2.986],[3.51,-2.201],[-2.197,-3.512],[-3.875,2.428],[-5.049,0.33],[-2.86,-5.965],[4.286,-7.147],[5.33,-2.481],[7.901,0.139],[2.335,10.076],[-8.811,1.134],[-3.369,2.409],[1.464,2.048],[1.51,0],[6.122,-4.377],[2.076,4.691],[-0.691,0.923],[-6.095,5.69],[-4.131,0.3],[0.287,3.947],[0.182,0],[11.823,-0.859],[0.021,-0.02],[0.992,1.65],[-5.528,12.977]],"v":[[17.183,85.766],[12.569,87.903],[11.647,88.415],[-29.923,73.986],[-27.857,33.976],[-19.248,26.326],[-16.875,15.987],[-27.214,13.614],[-37.54,22.271],[-50.885,13.86],[-49.081,-6.812],[-31.172,-23.094],[-14.327,-26.79],[10.963,-18.275],[19.754,11.359],[-7.333,22.841],[-9.072,33.304],[-2.964,36.442],[1.392,35.043],[25.762,26.036],[32.423,39.932],[29.756,42.868],[7.111,52.769],[0.174,60.793],[7.647,67.75],[8.199,67.731],[40.038,53.788],[40.108,53.719],[43.176,58.626]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.287,4.924],[6.116,28.04],[-2.405,24.476],[4.123,0.404],[0.404,-4.123],[-3.073,-20.216],[6.935,0.121],[7.331,-3.41],[5.821,-9.705],[-5.054,-10.546],[-7.602,-2.409],[-8.765,-14.078],[-16.555,0.003],[-7.802,4.57],[-6.606,11.498],[-0.72,-0.951],[-2.268,0],[-1.354,1.025],[2.499,3.304]],"o":[[-15.902,-24.204],[-5.19,-23.619],[0.406,-4.122],[-4.117,-0.425],[-2.034,20.688],[-7.181,-2.973],[-7.79,-0.133],[-9.955,4.595],[-6.576,10.963],[3.657,7.634],[-6.21,14.646],[9.542,15.339],[8.408,0],[12.922,-6.42],[0.73,0.998],[1.475,1.948],[1.576,0],[3.304,-2.501],[-2.795,-3.689]],"v":[[58.041,54.12],[24.859,-24.607],[20.665,-97.089],[13.934,-105.286],[5.738,-98.557],[7.35,-37.026],[-14.065,-41.787],[-37.479,-36.704],[-61.945,-14.529],[-64.413,20.342],[-46.306,35.988],[-42.66,81.911],[-0.417,105.708],[24.309,98.955],[52.837,72.902],[55.009,75.824],[60.994,78.796],[65.515,77.276],[66.968,66.768]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[506.106,471.212],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.306,0.183]],"o":[[0.303,-0.183],[0,0]],"v":[[-0.457,0.274],[0.458,-0.274]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[527.094,563.414],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.83,-3.477],[0,0]],"o":[[0,0],[-3.54,2.196]],"v":[[-4.027,4.332],[4.028,-4.332]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[683.121,413.977],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.31,2.136],[0,0]],"o":[[0,0],[5.124,1.89]],"v":[[8.117,-1.068],[-8.117,-0.822]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[700.02,451.663],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.489,0.12],[-0.489,-0.183]],"o":[[0.549,0.12],[-0.549,-0.183]],"v":[[-0.794,-0.243],[0.793,0.243]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[610.608,338.725],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.65,-1.524]],"o":[[0.915,1.953],[0,0]],"v":[[-1.953,-2.624],[1.953,2.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[689.72,475.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.008,-6.165],[6.348,10.131],[-10.011,6.165],[-6.345,-10.131]],"o":[[-10.011,6.225],[-6.348,-10.191],[10.008,-6.225],[6.288,10.194]],"v":[[11.475,18.402],[-18.126,11.259],[-11.412,-18.402],[18.186,-11.262]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[611.222,420.538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21.177,-8.727],[0,0],[-22.461,-5.43]],"o":[[0,0],[21.177,-8.787],[-22.461,-5.43]],"v":[[-33.812,5.005],[-33.812,5.126],[33.811,0.304]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[571.185,336.893],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.069,0.069]],"v":[[-0.069,0],[0.069,0.069],[0.069,-0.069]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[537.329,341.968],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.698,4.518],[0,0]],"o":[[0,0],[-1.467,-6.408]],"v":[[-4.852,-8.331],[4.853,8.331]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[475.215,357.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.953,1.404],[0,0]],"o":[[0,0],[-1.587,-1.953]],"v":[[-2.685,-2.503],[2.685,2.504]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[577.409,566.861],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.48,5.556],[0,0]],"o":[[0,0],[0.612,-6.105]],"v":[[-2.412,-9.003],[1.8,9.003]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[535.208,596.92],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-9.519,-6.957]],"o":[[0.609,11.778],[0,0]],"v":[[-7.78,-15.135],[7.78,15.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[406.185,394.995],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-19.47,11.412],[-6.714,17.517],[0,0],[6.162,28.257],[10.497,0.183],[6.165,-2.868],[4.944,-8.238],[-4.212,-8.79],[-9.276,2.502],[0,0],[-9.765,-15.684]],"o":[[14.463,-7.08],[0,0],[-16.725,-25.389],[-9.888,-6.897],[-6.837,-0.12],[-8.727,4.029],[-4.944,8.241],[4.212,8.787],[0,0],[-10.74,13.488],[12.144,19.47]],"v":[[25.634,57.736],[56.455,23.8],[56.822,23.557],[22.582,-57.677],[-9.155,-69.029],[-29.297,-64.634],[-50.474,-45.41],[-52.609,-17.639],[-28.747,-5.495],[-28.625,-5.372],[-31.186,43.271]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[501.007,505.952],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.136,-6.957],[0,0]],"o":[[0,0],[-3.051,6.348]],"v":[[0.306,10.375],[1.83,-10.375]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[481.412,600.428],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.446,-1.65],[0,0]],"o":[[0,0],[-7.201,-1.953]],"v":[[-11.138,0.55],[11.138,1.099]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.326,520.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.345,10.194],[-10.008,6.165],[-6.348,-10.131],[10.011,-6.165]],"o":[[-6.348,-10.191],[10.011,-6.225],[6.348,10.194],[-10.008,6.225]],"v":[[112.727,-61.796],[119.438,-91.456],[149.039,-84.316],[142.325,-54.652]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-16.785,-25.389],[0,0],[14.466,-7.08],[12.147,19.53],[-10.683,13.488],[0,0],[4.212,8.727],[-4.941,8.238],[-8.727,4.029],[-6.834,-0.123],[-9.888,-6.837]],"o":[[0,0],[-6.714,17.517],[-19.407,11.415],[-9.765,-15.684],[0,0],[-9.276,2.439],[-4.209,-8.787],[4.944,-8.241],[6.225,-2.868],[10.437,0.183],[6.105,28.317]],"v":[[77.51,35.858],[77.144,36.101],[46.322,70.034],[-10.498,55.508],[-7.933,6.866],[-8.056,6.746],[-31.921,-5.401],[-29.785,-33.169],[-8.605,-52.396],[11.534,-56.788],[43.271,-45.436]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-18.92,4.761],[0,0],[-12.207,-14.952],[-19.47,16.113],[-0.978,10.986],[-15.318,18.066],[-4.515,1.221],[-1.89,-1.158],[0.366,-5.979],[-10.068,-17.883],[-13.245,8.241],[-2.136,2.991],[0,0],[-3.051,6.348],[0,0],[-1.344,-2.196],[-13.242,8.238],[-0.855,8.484],[0,0],[0.552,-6.042],[-12.024,7.446],[8.361,13.425],[0.855,0.978],[0,0],[-1.587,-1.953],[0,0],[-16.722,10.374],[-6.411,31.065],[0,0],[0.915,2.013],[0,0],[-2.688,-0.669],[-2.013,8.727],[7.386,2.928],[5.187,1.893],[0,0],[-1.098,0.672],[6.714,10.863],[10.68,-6.591],[0,0],[-3.54,2.196],[27.159,12.939],[5.247,1.65],[0.549,0.183],[1.587,0.366],[21.177,-8.787],[0,0],[-0.063,0],[3.357,5.37],[16.599,-10.317],[-0.732,-12.57],[0,0],[-1.464,-6.408],[0,0],[7.752,1.467],[8.484,-16.479],[-0.366,-6.96],[0,0],[0.612,11.718],[0,0],[7.935,-4.944],[-10.008,-16.11],[-4.578,-2.013],[-3.237,-2.319],[0.672,-4.884],[4.698,-1.893],[8.301,0.609],[15.075,11.232],[9.764,2.991],[11.169,-6.957],[-13.61,-21.849],[-7.874,-3.723],[0,0],[-7.202,-1.953],[0,0],[4.394,-2.685],[-13.61,-21.849]],"o":[[0,0],[-8.179,15.93],[16.296,19.896],[9.093,-7.569],[2.745,-31.002],[3.051,-3.54],[4.518,-1.281],[5.31,3.297],[-0.426,7.143],[7.812,13.794],[3.294,-2.073],[0,0],[-2.136,-6.957],[0,0],[0.732,2.379],[8.361,13.488],[7.752,-4.824],[0,0],[3.48,5.616],[9.033,10.68],[13.242,-8.238],[-0.732,-1.161],[0,0],[1.953,1.404],[0,0],[18.432,-1.404],[28.869,-17.943],[0,0],[-1.65,-1.464],[0,0],[1.953,1.77],[8.727,2.136],[1.77,-7.995],[-5.307,2.136],[0,0],[1.161,-0.489],[10.68,-6.651],[-6.714,-10.863],[0,0],[1.83,-3.48],[-11.352,-28.014],[-5.004,-2.379],[-0.549,-0.183],[-1.587,-0.489],[-22.461,-5.43],[0,0],[0.06,0],[-0.306,-5.922],[-10.497,-16.908],[-11.352,7.017],[0,0],[4.761,4.578],[0,0],[-5.736,-5.493],[-18.309,-3.54],[-3.171,6.102],[0,0],[-9.522,-6.957],[0,0],[-8.484,-2.076],[-15.807,9.825],[2.808,4.578],[5.004,2.136],[4.332,3.051],[-0.669,4.575],[-3.906,1.587],[-11.901,-0.855],[-13.488,-10.008],[-11.78,-3.6],[-21.484,13.368],[4.944,7.995],[0,0],[7.385,-1.647],[0,0],[-4.822,1.098],[-21.483,13.365],[10.925,17.823]],"v":[[-180.776,117.578],[-180.654,118.126],[-175.039,169.15],[-110.224,175.925],[-94.171,147.056],[-70.675,80.654],[-58.897,73.268],[-47.179,73.757],[-41.563,86.756],[-46.813,125.696],[-7.69,135.155],[0.488,127.466],[1.22,117.335],[2.747,96.584],[1.22,117.335],[4.334,124.169],[43.454,133.63],[56.576,112.391],[52.364,94.384],[56.636,112.391],[93.257,118.433],[102.107,79.19],[99.725,75.893],[94.355,70.889],[99.725,75.893],[105.401,81.203],[158.927,63.749],[212.636,-13.639],[211.232,-15.472],[207.326,-20.719],[211.232,-15.472],[218.312,-11.749],[237.719,-23.77],[227.708,-42.751],[211.475,-42.508],[227.708,-42.751],[231.128,-44.461],[238.268,-76.075],[206.777,-83.704],[198.719,-75.037],[206.777,-83.704],[146.414,-148.46],[131.036,-154.441],[129.449,-154.927],[124.688,-156.211],[57.065,-151.39],[56.942,-151.45],[57.065,-151.51],[52.913,-169.819],[3.785,-181.72],[-12.757,-149.62],[-9.949,-144.736],[-0.244,-128.074],[-10.009,-144.859],[-30.943,-155.662],[-77.878,-133.75],[-81.967,-113.731],[-66.403,-83.461],[-81.967,-113.731],[-82.21,-114.22],[-107.782,-110.132],[-118.342,-63.199],[-107.599,-52.273],[-86.542,-45.925],[-81.784,-35.671],[-92.035,-26.029],[-108.76,-25.54],[-143.485,-41.044],[-180.837,-59.476],[-216.968,-54.349],[-231.311,9.368],[-211.475,27.068],[-203.114,27.251],[-180.837,27.8],[-203.114,27.251],[-217.029,32.927],[-231.372,96.644]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[480.375,493.592],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":5,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Layer 4/partners_splash Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,562.5,0],"ix":2},"a":{"a":0,"k":[562.5,562.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.174,0.174,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.794]},"t":81,"s":[40,40,100]},{"t":101,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.18,12.075],[-16.221,14.377],[-8.322,-7.633],[10.035,-12.403],[15.891,-15.201],[9.969,9.114]],"o":[[13.524,-17.667],[12.237,-10.923],[8.457,7.764],[-13.257,16.515],[-11.088,10.596],[-10.068,-9.279]],"v":[[29.133,10.051],[68.517,-33.113],[100.593,-33.179],[102.633,-1.759],[63.516,40.814],[29.628,42.262]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.619,12.338],[-11.712,9.475],[-9.507,-8.719],[6.876,-9.574],[9.18,-8.259],[-10.56,-9.969],[6.186,-8.521],[15.201,8.49],[9.672,12.699]],"o":[[8.193,-11.91],[9.375,-7.535],[9.048,8.324],[-6.876,9.575],[10.266,6.678],[9.048,8.587],[-7.137,9.871],[-14.313,-7.962],[-10.134,-13.391]],"v":[[-52.098,-76.905],[-20.217,-111.614],[9.36,-110.431],[13.572,-81.379],[-10.677,-54.96],[24.462,-26.796],[28.968,-1.332],[-2.22,3.11],[-52.623,-39.101]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[11.451,11.616],[3.849,-3.291],[-11.481,-11.91],[-4.671,3.915]],"o":[[-3.486,5.001],[12.699,10.296],[2.829,-4.245],[-12.897,-10.725]],"v":[[-51.474,21.896],[-60.06,31.241],[-23.409,64.897],[-14.823,55.553]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[3.948,-4.308],[15.3,11.316],[20.76,22.635],[-9.408,13.227],[-8.652,7.666],[-11.613,-8.489],[-15.135,-17.172],[9.213,-10.956],[6.12,-0.396]],"o":[[-7.239,7.863],[-24.741,-18.36],[-11.055,-12.075],[6.318,-8.981],[10.596,-9.443],[18.525,13.489],[14.082,15.957],[-7.206,8.421],[1.644,5.034]],"v":[[2.058,111.287],[-31.404,105.728],[-97.698,45.092],[-103.26,7.978],[-80.361,-16.96],[-44.4,-15.906],[20.382,42.524],[27.192,81.874],[5.445,96.91]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[917.141,300.515],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.285,-14.411],[12.006,5.231],[2.139,1.151],[0,0],[12.207,5.33],[-4.737,14.411],[-10.659,18.852],[-10.167,-4.408],[5.463,-14.97],[0,0],[-2.403,-1.021]],"o":[[-6.513,14.97],[-1.845,-0.823],[0,0],[-7.041,13.621],[-12.372,-5.396],[7.008,-21.122],[7.995,-14.312],[10.332,4.508],[0,0],[2.205,0.527],[10.923,4.77]],"v":[[99.951,0.296],[71.955,15.562],[67.215,13.292],[61.59,24.675],[31.914,37.211],[19.05,6.745],[46.521,-56.655],[77.217,-67.019],[88.995,-38.132],[86.463,-31.322],[93.339,-28.984]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.776,4.079],[13.653,5.955],[1.779,-4.047],[-13.851,-6.054]],"o":[[1.776,-4.047],[-13.851,-6.054],[-1.776,4.047],[13.656,5.987]],"v":[[-12.207,62.775],[-27.999,48.628],[-49.122,46.654],[-33.33,60.801]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[8.16,-1.052],[4.803,10.232],[-7.632,4.343],[-13.359,1.415],[5.889,3.652],[-4.443,10.166],[-11.877,-2.994],[-12.501,-8.555],[13.293,-10.265],[6.219,-3.224],[-3.093,-5.528],[8.454,-6.218],[8.817,6.021],[5.724,9.081]],"o":[[-7.434,0.922],[-3.849,-8.291],[10.266,-5.856],[-8.424,-3.882],[-10.266,-6.251],[3.948,-9.048],[15.267,3.816],[18.819,12.831],[-3.981,3.093],[6.087,5.725],[4.77,8.685],[-7.896,6.021],[-8.982,-6.119],[-10.167,3.224]],"v":[[-67.086,-12.404],[-90.807,-24.083],[-83.766,-46.719],[-30.696,-63.564],[-53.397,-75.014],[-62.214,-99.096],[-37.968,-108.308],[18.621,-83.37],[16.515,-43.824],[0.69,-34.25],[15.201,-17.141],[8.883,7.37],[-16.779,5.198],[-38.79,-18.918]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[10.956,-25.104],[40.962,17.897],[-10.956,25.103],[-41.16,-17.997]],"o":[[-10.956,25.104],[-41.193,-17.964],[10.956,-25.103],[40.995,17.898]],"v":[[33.954,82.943],[-47.772,93.405],[-95.28,26.485],[-13.917,15.858]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[762.719,197.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.759,-15.694],[13.095,0.625],[2.205,0.296],[1.383,-11.647],[13.656,1.053],[1.317,14.575],[-5.628,29.38],[-11.055,-0.526],[-0.429,-15.957],[0.591,-16.483],[-2.433,-0.131]],"o":[[-0.789,16.286],[-2.007,-0.099],[-1.149,19.51],[-2.007,16.45],[-13.455,-1.053],[-2.895,-32.407],[2.961,-15.595],[11.253,0.526],[0.327,9.706],[2.238,-0.296],[11.91,0.56]],"v":[[99.276,-4.064],[78.549,20.151],[73.515,19.723],[69.534,68.943],[44.826,92.368],[25.02,68.021],[31.536,-72.233],[54.894,-92.895],[76.347,-69.471],[75.819,-28.773],[82.695,-29.036]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.094,-11.68],[8.685,-8.456],[9.609,5.691],[7.074,8.028],[3.42,-4.672],[11.415,6.021],[-4.08,13.522],[-16.911,24.412],[-9.114,-3.882],[4.572,-15.496],[7.929,-18.556]],"o":[[6.777,10.002],[-8.259,7.863],[-7.467,-4.376],[-3.519,6.284],[-7.767,10.725],[-10.431,-5.527],[10.332,-34.612],[9.114,-13.062],[9.474,4.08],[-3.621,12.141],[15.498,8.259]],"v":[[13.209,24.494],[10.479,56.013],[-20.022,56.967],[-42.459,37.325],[-52.92,53.973],[-85.722,65.093],[-95.955,34.364],[-45.222,-72.925],[-15.48,-83.19],[-3.372,-53.58],[-21.633,-4.854]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[560.759,152.66],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.876,10.89],[-6.018,-2.633],[-9.54,3.29],[2.139,6.087],[8.391,-2.896],[5.46,-2.106],[3.684,10.66],[-8.949,3.093],[-5.364,1.875],[2.139,6.12],[7.038,-2.434],[3.915,-7.107],[14.345,4.442],[-2.237,9.541],[-26.847,9.311],[-9.114,-26.287],[15.696,-12.469],[0,0],[-6.285,-18.095],[35.202,-12.206],[17.406,13.357]],"o":[[8.556,-13.424],[8.259,3.52],[8.556,-2.961],[-2.169,-6.284],[-5.328,1.842],[-9.576,3.751],[-4.08,-11.811],[5.526,-1.908],[7.041,-2.434],[-2.136,-6.119],[-7.437,2.566],[-4.311,7.896],[-12.206,-3.882],[4.541,-19.477],[28.92,-10.035],[5.79,16.747],[0,0],[21.123,-1.777],[9.639,27.801],[-24.939,8.653],[-8.223,-6.35]],"v":[[-44.926,46.357],[-19.396,38.166],[9.557,39.218],[20.513,24.117],[2.483,18.853],[-11.794,24.445],[-33.508,9.805],[-24.922,-13.423],[-11.893,-17.734],[-2.452,-31.683],[-18.439,-36.586],[-35.714,-21.221],[-62.988,-9.443],[-76.314,-31.914],[-28.181,-78.237],[41.438,-54.583],[28.508,-11.943],[28.639,-11.547],[68.911,14.806],[24.001,79.62],[-42.13,73.961]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.3,177.319],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.377,-12.601],[10.528,-7.831],[1.876,-1.151],[-6.087,-9.542],[11.22,-7.864],[10.265,10.431],[14.279,26.288],[-8.916,6.613],[-10.462,-12.042],[-10.397,-13.621],[-1.941,1.447]],"o":[[9.739,13.094],[-1.612,1.217],[11.154,15.299],[8.883,13.982],[-11.055,7.731],[-22.801,-23.228],[-7.6,-13.917],[9.048,-6.745],[6.646,7.6],[1.645,-1.48],[9.509,-7.107]],"v":[[79.291,-60.916],[78.633,-29.034],[74.487,-26.206],[101.433,12.75],[97.518,46.308],[66.756,40.057],[-17.207,-72.497],[-12.239,-103.292],[18.885,-98.586],[45.403,-65.325],[50.667,-69.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.752,-9.081],[-4.606,-17.668],[9.31,-32.046],[12.042,1.35],[-1.382,13.326],[7.238,27.012],[12.075,-7.732],[7.435,9.311],[-10.989,10.199],[-18.852,10.758]],"o":[[7.633,7.896],[7.567,28.755],[-3.521,12.138],[-13.061,-1.347],[3.059,-29.643],[-8.982,8.193],[-10.331,6.679],[-7.535,-9.475],[13.358,-12.436],[12.7,-7.206]],"v":[[-19.016,-51.308],[-1.579,-18.078],[2.534,90.099],[-23.623,109.279],[-40.599,83.748],[-45.337,-7.386],[-73.862,14.328],[-102.781,10.216],[-98.307,-21.237],[-53.003,-54.17]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.401,258.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":81,"op":150,"st":21,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"4.8.0","meta":{"g":"LottieFiles AE 1.0.0","a":"","k":"","d":"","tc":"none"},"fr":30,"ip":0,"op":90,"w":1125,"h":1125,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 1/partners_splash_cloud Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[1298,562.5,0],"to":[-249.333,0,0],"ti":[249.333,0,0]},{"t":150,"s":[-198,562.5,0]}],"ix":2},"a":{"a":0,"k":[1323,562.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.462],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.98],[1.214,-6.531],[53.641,3.549],[61.76,1.079]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1265.767,950.067],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-129.873],[129.873,0],[0,129.873],[-129.872,0]],"o":[[0,129.873],[-129.872,0],[0,-129.873],[129.873,0]],"v":[[235.156,144.025],[0,379.18],[-235.156,144.025],[0,-91.13]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1285.194,1033.87],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.798,0],[1.981,-0.127],[138.952,0],[35.495,-100.372],[55.655,0],[8.546,-0.897],[53.541,36.943],[67.734,0],[0,-183.167],[-26.335,-48.364],[-2.127,0],[-0.911,0.495],[1.585,2.91],[0,53.414],[-176.55,0],[-53.528,-36.934],[-23.734,-56.514],[33.03,-26.143],[-2.057,-2.599],[-2.596,2.054],[-52.445,0],[-43.286,-59.274],[-1.852,0],[-1.066,0.78],[1.954,2.677],[12.554,11.22],[-105.503,0],[-2.288,-132.152],[12.815,-12.235],[-2.288,-2.397],[-2.4,2.291],[-20.707,0],[0,-44.183],[4.037,-9.741],[-3.061,-1.268],[-0.765,0],[-0.958,2.312],[0,12.208]],"o":[[-2.001,0],[-3.101,-138.058],[-109.063,0],[-42.658,-34.234],[-8.729,0],[-24.485,-59.948],[-55.541,-38.326],[-183.167,0],[0,55.415],[1.088,2.001],[0.968,0],[2.91,-1.585],[-25.379,-46.608],[0,-176.549],[65.288,0],[50.733,35.009],[-40.833,6.408],[-2.598,2.057],[2.054,2.601],[41.024,-32.472],[73.298,0],[1.175,1.608],[1.227,0],[2.675,-1.954],[-10.093,-13.82],[32.559,-97.969],[132.853,0],[-17.062,3.36],[-2.397,2.289],[2.288,2.399],[14.97,-14.288],[44.183,0],[0,10.623],[-1.269,3.062],[0.75,0.311],[2.356,-0.003],[4.643,-11.203],[0,-50.798]],"v":[[581.288,132.414],[575.317,132.629],[319.942,-116.806],[80.031,50.44],[-71.906,-3.192],[-97.819,-1.792],[-216.984,-149.85],[-405.419,-208.432],[-737.603,123.751],[-697.349,282.382],[-692.074,285.514],[-689.211,284.784],[-686.811,276.645],[-725.603,123.751],[-405.419,-196.432],[-223.799,-139.974],[-110.165,-0.192],[-222.229,49.035],[-223.21,57.464],[-214.781,58.445],[-71.906,8.808],[114.281,103.469],[119.133,105.93],[122.666,104.775],[123.973,96.391],[89.869,58.773],[319.942,-104.806],[563.356,134.165],[517.679,157.893],[517.482,166.375],[525.964,166.571],[581.288,144.414],[661.415,224.541],[655.33,255.229],[658.576,263.069],[660.87,263.529],[666.416,259.823],[673.415,224.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[673.415,916.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.016,3.8],[2.001,-2.636],[-2.64,-2.001],[-3.73,-4.087],[-1.629,0],[-1.148,1.049],[2.232,2.446]],"o":[[-2.646,-2.007],[-2.001,2.64],[4.433,3.36],[1.183,1.298],[1.442,0],[2.449,-2.233],[-4.222,-4.629]],"v":[[-2.874,-10.37],[-11.279,-9.212],[-10.122,-0.807],[2.183,10.419],[6.618,12.377],[10.658,10.81],[11.048,2.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1062.536,934.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.461],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.981],[1.215,-6.531],[53.641,3.549],[61.76,1.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[986.676,922.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.313,0],[22.143,-6.029],[-0.87,-3.196],[-2.642,0],[-0.528,0.144],[-22.254,0],[0,3.313]],"o":[[-23.317,0],[-3.197,0.87],[0.727,2.669],[0.521,0],[21.115,-5.751],[3.313,0],[0,-3.313]],"v":[[33.797,-10.44],[-34.714,-1.352],[-38.927,6.013],[-33.14,10.44],[-31.561,10.226],[33.797,1.56],[39.797,-4.44]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.997,810.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[65.052,5.386],[133.507,0],[34.73,-101.385],[63.374,0],[7.647,-0.694],[137.962,0],[0,-180.815],[-180.815,0],[-41.492,19.021],[-76.259,0],[-36.541,95.128],[-64.231,0],[-43.386,36.147],[-31.72,0],[0,70.011]],"o":[[-9.366,-135.4],[-110.077,0],[-44.446,-38.438],[-7.828,0],[-48.197,-120.766],[-180.815,0],[0,180.815],[48.63,0],[46.478,53.283],[107.994,0],[44.602,40.742],[60.086,0],[22.233,19.255],[70.012,0],[0,-66.442]],"v":[[565.417,131.199],[313.215,-111.047],[74.777,62.978],[-90.986,1.287],[-114.201,2.355],[-418.38,-203.752],[-745.775,123.642],[-418.38,451.037],[-282.112,421.399],[-90.986,508.356],[145.756,345.701],[313.215,411.187],[471.867,353.384],[554.818,384.289],[681.586,257.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[681.586,921.248],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.798,0],[1.981,-0.127],[138.952,0],[35.495,-100.372],[55.655,0],[8.546,-0.897],[53.541,36.943],[67.734,0],[0,-183.167],[-26.335,-48.364],[-2.127,0],[-0.911,0.495],[1.585,2.91],[0,53.414],[-176.55,0],[-53.528,-36.934],[-23.734,-56.514],[33.03,-26.143],[-2.057,-2.599],[-2.596,2.054],[-52.445,0],[-43.286,-59.274],[-1.852,0],[-1.066,0.78],[1.954,2.677],[12.554,11.22],[-105.503,0],[-2.288,-132.152],[12.815,-12.235],[-2.288,-2.397],[-2.4,2.291],[-20.707,0],[0,-44.183],[4.037,-9.741],[-3.061,-1.268],[-0.765,0],[-0.958,2.312],[0,12.208]],"o":[[-2.001,0],[-3.101,-138.058],[-109.063,0],[-42.658,-34.234],[-8.729,0],[-24.486,-59.948],[-55.541,-38.326],[-183.167,0],[0,55.415],[1.088,2.001],[0.968,0],[2.91,-1.585],[-25.379,-46.608],[0,-176.549],[65.288,0],[50.733,35.009],[-40.833,6.408],[-2.598,2.057],[2.054,2.601],[41.024,-32.472],[73.298,0],[1.175,1.608],[1.227,0],[2.675,-1.954],[-10.093,-13.82],[32.559,-97.969],[132.853,0],[-17.062,3.36],[-2.397,2.289],[2.288,2.399],[14.97,-14.288],[44.183,0],[0,10.623],[-1.269,3.062],[0.75,0.311],[2.356,-0.003],[4.643,-11.203],[0,-50.798]],"v":[[644.465,132.414],[638.493,132.629],[383.118,-116.806],[143.207,50.44],[-8.729,-3.192],[-34.642,-1.792],[-153.807,-149.85],[-342.242,-208.432],[-674.426,123.751],[-634.172,282.382],[-628.897,285.514],[-626.034,284.784],[-623.634,276.645],[-662.426,123.751],[-342.242,-196.432],[-160.622,-139.974],[-46.988,-0.192],[-159.052,49.035],[-160.033,57.464],[-151.604,58.445],[-8.729,8.808],[177.458,103.469],[182.31,105.93],[185.843,104.775],[187.149,96.391],[153.045,58.773],[383.118,-104.806],[626.532,134.165],[580.855,157.893],[580.658,166.375],[589.14,166.571],[644.465,144.414],[724.592,224.541],[718.507,255.229],[721.752,263.069],[724.046,263.529],[729.593,259.823],[736.592,224.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1970.97,916.568],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.016,3.8],[2.001,-2.636],[-2.64,-2.001],[-3.73,-4.087],[-1.629,0],[-1.148,1.049],[2.232,2.446]],"o":[[-2.646,-2.007],[-2.001,2.64],[4.433,3.36],[1.183,1.298],[1.442,0],[2.449,-2.233],[-4.222,-4.629]],"v":[[-2.874,-10.37],[-11.279,-9.212],[-10.122,-0.807],[2.183,10.419],[6.618,12.377],[10.658,10.81],[11.048,2.333]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2423.267,934.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.924,1.562],[20.608,-2.247],[16.594,-16.366],[-2.326,-2.358],[-1.55,0],[-1.169,1.154],[-20.496,2.241],[-16.087,-8.587],[-1.562,2.924]],"o":[[-18.229,-9.727],[-23.212,2.54],[-2.358,2.326],[1.175,1.189],[1.521,0],[14.649,-14.447],[18.205,-1.992],[2.92,1.558],[1.558,-2.924]],"v":[[59.29,-7.039],[-0.089,-18.461],[-60.933,10.438],[-60.991,18.922],[-56.72,20.708],[-52.507,18.981],[1.215,-6.531],[53.642,3.549],[61.76,1.08]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2347.407,922.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.313,0],[22.143,-6.029],[-0.87,-3.196],[-2.641,0],[-0.528,0.144],[-22.254,0],[0,3.313]],"o":[[-23.317,0],[-3.197,0.87],[0.727,2.669],[0.522,0],[21.115,-5.751],[3.313,0],[0,-3.313]],"v":[[33.797,-10.44],[-34.714,-1.352],[-38.927,6.013],[-33.141,10.44],[-31.561,10.226],[33.797,1.56],[39.797,-4.44]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.960784373564,0.960784373564,0.960784373564,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1597.728,810.202],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[65.052,5.386],[133.507,0],[34.73,-101.385],[63.374,0],[7.648,-0.694],[137.962,0],[0,-180.815],[-180.815,0],[-41.492,19.021],[-76.259,0],[-36.541,95.128],[-64.231,0],[-43.386,36.147],[-31.72,0],[0,70.011]],"o":[[-9.366,-135.4],[-110.077,0],[-44.446,-38.438],[-7.828,0],[-48.197,-120.766],[-180.815,0],[0,180.815],[48.63,0],[46.478,53.283],[107.994,0],[44.602,40.742],[60.086,0],[22.233,19.255],[70.012,0],[0,-66.442]],"v":[[636.766,131.199],[384.563,-111.047],[146.125,62.978],[-19.637,1.287],[-42.853,2.355],[-347.031,-203.752],[-674.426,123.642],[-347.031,451.037],[-210.763,421.399],[-19.637,508.356],[217.105,345.701],[384.563,411.187],[543.216,353.384],[626.167,384.289],[752.935,257.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.058823533152,0.058823533152,0.058823533152,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1970.969,921.248],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"null","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[-537.5,562.5,0],"to":[183.333,0,0],"ti":[-183.333,0,0]},{"t":40,"s":[562.5,562.5,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[331.797,352.562],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.602,-2.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 2/partners_splash Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-40,0],"to":[0,6.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":81,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":91,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":101,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":111,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":121,"s":[0,-40,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":131,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":141,"s":[0,-40,0],"to":[0,0,0],"ti":[0,-6.667,0]},{"t":150,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[562.5,562.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[15.307,-0.316],[38.951,0],[8.579,-36.41],[0,0],[0,11.525],[4.142,0],[0,-4.143],[-1.913,-4.385],[60.983,0.326],[38.291,0],[10.936,-32.77],[0,0],[0,17.475],[0,0],[-17.443,1.005],[-108.363,-6.363],[0,0],[0,0],[-4.143,0],[0,4.143],[0,0],[-24.43,0],[0,0],[-15.328,-17.987],[0,0],[0,-22.636]],"o":[[0,15.379],[-8.584,-36.395],[-38.992,0],[0,0],[-11.528,0],[0,-4.143],[-4.143,0],[0,5.08],[-53.863,3.419],[-9.272,-35.425],[-36.4,0],[0,0],[-17.435,-1.002],[0,0],[0,-17.475],[108.364,-6.363],[0,0],[0,0],[0,4.143],[4.142,0],[0,0],[0,-24.431],[0,0],[23.622,0],[0,0],[14.737,17.314],[0,0]],"v":[[293.061,105.899],[265.394,134.12],[185.152,70.549],[104.843,134.15],[102.35,134.15],[81.444,113.247],[73.944,105.747],[66.444,113.247],[69.432,127.542],[-103.46,132.191],[-183.303,70.549],[-261.587,127.018],[-261.968,126.999],[-293.061,94.044],[-293.061,83.174],[-261.96,50.217],[35.345,50.217],[66.444,52.029],[66.444,56.065],[73.944,63.565],[81.444,56.065],[81.444,-101.266],[125.752,-145.573],[170.026,-145.573],[231.315,-117.271],[270.209,-71.646],[293.061,-9.695]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[17.045,20.029],[0,0],[28.022,0],[0,0],[0,-32.703],[0,0],[0,0],[108.994,-6.398],[0,-25.416],[0,0],[-24.324,-2.552],[0,-3.848],[-4.142,0],[0,4.142],[-37.234,0],[-5.708,-31.493],[-0.014,-0.068],[0,-4.048],[-4.142,0],[0,4.142],[0.137,1.941],[-4.594,0],[-52.29,3.587],[-8.119,0],[0,0],[0,-1.316],[-4.142,0],[0,4.142],[-37.234,0],[0,-37.234],[-4.143,0],[0,4.142],[0.065,1.345],[0,22.935],[0,0]],"o":[[0,0],[-18.179,-21.336],[0,0],[-32.704,0],[0,0],[0,0],[-108.999,-6.399],[-25.362,1.461],[0,0],[0,24.652],[-0.512,3.708],[0,4.142],[4.143,0],[0,-37.234],[33.113,0],[0.012,0.069],[0.686,3.854],[0,4.142],[4.143,0],[0,-1.975],[4.626,0.022],[59.242,0],[6.021,4.561],[0,0],[-0.061,1.301],[0,4.142],[4.143,0],[0,-37.234],[37.198,0],[0,4.142],[4.142,0],[0,-1.362],[22.589,-1.407],[0,0],[0,-26.196]],"v":[[281.629,-81.373],[242.729,-127.002],[170.026,-160.573],[125.752,-160.573],[66.444,-101.266],[66.444,37.004],[36.221,35.244],[-262.83,35.242],[-308.061,83.174],[-308.061,94.044],[-265.029,141.737],[-265.827,153.073],[-258.327,160.573],[-250.827,153.073],[-183.303,85.55],[-116.878,141.008],[-116.841,141.214],[-115.777,153.073],[-108.277,160.573],[-100.777,153.073],[-101.009,147.206],[-87.148,147.258],[80.737,141.848],[102.35,149.15],[102.728,149.15],[102.628,153.073],[110.128,160.573],[117.628,153.073],[185.152,85.55],[252.614,153.073],[260.114,160.573],[267.614,153.073],[267.511,149.013],[308.061,105.899],[308.061,-9.695]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[604.39,620.213],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.153,6.047],[0,0],[17.327,0],[0,0],[0,-16.12],[0,0],[-19.268,-0.156],[0,0],[0,0],[-0.026,4.126],[4.14,0.025],[0,0],[0,11.029],[0,0],[-7.852,0],[0,0],[-8.397,-9.819],[0,0],[-2.094,-9.104],[2.423,-3.045],[3.868,0],[0,0],[0,-4.142],[-4.143,0],[0,0],[-5.276,6.63],[1.901,8.26]],"o":[[0,0],[-11.256,-13.166],[0,0],[-16.122,0],[0,0],[0,19.233],[0,0],[0,0],[4.122,0],[0.027,-4.141],[0,0],[-11.05,-0.089],[0,0],[0,-7.85],[0,0],[12.935,0],[0,0],[4.825,5.665],[0.871,3.781],[-2.414,3.034],[0,0],[-4.143,0],[0,4.143],[0,0],[8.464,0],[5.286,-6.643],[-2.954,-12.813]],"v":[[57.926,-6.593],[35.133,-33.34],[-9.841,-54.057],[-44.355,-54.057],[-73.594,-24.822],[-73.594,18.711],[-38.66,53.874],[-8.713,54.057],[-8.666,54.057],[-1.166,46.603],[-8.619,39.057],[-38.552,38.874],[-58.594,18.711],[-58.594,-24.822],[-44.355,-39.057],[-9.841,-39.057],[23.725,-23.601],[46.509,3.135],[57.073,23.542],[54.63,34.283],[44.745,39.057],[31.102,39.057],[23.602,46.557],[31.102,54.057],[44.745,54.057],[66.366,43.625],[71.693,20.176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[788.015,558.525],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.143,0.026],[0,0],[0,0],[0.026,-4.126],[-4.143,-0.026],[0,0],[0,0],[-0.026,4.126]],"o":[[0,0],[0,0],[-4.122,0],[-0.026,4.143],[0,0],[0,0],[4.122,0],[0.026,-4.143]],"v":[[15.022,-7.407],[-14.928,-7.593],[-14.975,-7.593],[-22.475,-0.14],[-15.022,7.407],[14.928,7.593],[14.975,7.593],[22.475,0.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[746.524,640.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.067,0],[0,4.143],[-4.143,0],[0,3.797],[3.797,0],[1.33,-1.995],[3.442,2.288],[-2.294,3.445],[-7.351,0],[0,-12.07]],"o":[[-4.143,0],[0,-4.143],[3.797,0],[0,-3.797],[-2.355,0],[-2.303,3.451],[-3.448,-2.297],[4.098,-6.153],[12.067,0],[0,12.071]],"v":[[-0.653,21.888],[-8.153,14.388],[-0.653,6.888],[6.232,0],[-0.653,-6.887],[-6.451,-3.747],[-16.852,-1.661],[-18.938,-12.061],[-0.653,-21.887],[21.232,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.676,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.143,0],[0,0],[0,4.143],[4.143,0],[0,0],[0,-4.143]],"o":[[0,0],[4.143,0],[0,-4.143],[0,0],[-4.143,0],[0,4.143]],"v":[[-33.158,7.5],[33.158,7.5],[40.658,0],[33.158,-7.5],[-33.158,-7.5],[-40.658,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.197,740.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,4.143],[4.143,0],[0,0],[0,-4.143],[-4.143,0],[0,0]],"o":[[0,-4.143],[0,0],[-4.143,0],[0,4.143],[0,0],[4.143,0]],"v":[[20.438,0],[12.938,-7.5],[-12.938,-7.5],[-20.438,0],[-12.938,7.5],[12.938,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.101,709.996],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,4.143],[4.143,0],[0,0],[0,-4.143],[-4.143,0],[0,0]],"o":[[0,-4.143],[0,0],[-4.143,0],[0,4.143],[0,0],[4.143,0]],"v":[[20.438,0],[12.938,-7.5],[-12.938,-7.5],[-20.438,0],[-12.938,7.5],[12.938,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[164.241,678.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.143,0],[0,0],[0,4.143],[4.143,0],[0,0],[0,-4.143]],"o":[[0,0],[4.143,0],[0,-4.143],[0,0],[-4.143,0],[0,4.143]],"v":[[-33.158,7.5],[33.158,7.5],[40.658,0],[33.158,-7.5],[-33.158,-7.5],[-40.658,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[242.197,678.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[28.515,0],[0,-28.515],[-28.515,0],[0,28.515]],"o":[[-28.515,0],[0,28.515],[28.515,0],[0,-28.515]],"v":[[0.002,-51.712],[-51.714,0],[0.002,51.712],[51.714,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[421.015,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.143,0],[0,4.143],[3.797,0],[0,-3.797],[4.142,0],[0,4.143],[-12.067,0],[0,-12.07]],"o":[[-4.143,0],[0,-3.797],[-3.797,0],[0,4.143],[-4.143,0],[0,-12.07],[12.071,0],[0,4.143]],"v":[[14.386,14.694],[6.886,7.194],[-0.002,0.306],[-6.886,7.194],[-14.386,14.694],[-21.886,7.194],[-0.002,-14.694],[21.886,7.194]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[789.532,766.092],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[28.515,0],[0,-28.515],[-28.515,0],[0,28.515]],"o":[[-28.515,0],[0,28.515],[28.515,0],[0,-28.515]],"v":[[-0.001,-51.712],[-51.714,0],[-0.001,51.712],[51.714,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[789.534,773.286],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.87,18.648],[0,0],[25.749,0],[0,0],[0,-28.65],[0,0],[0,0],[108.306,-6.36],[0,-21.426],[0,0],[0,0],[-21.426,-1.236],[0,0],[0,0],[-35.136,0],[-6.36,-35.013],[0,0],[-60.573,4.137],[-7.287,0],[0,0],[0,0],[-37.542,0],[-5.496,-36],[0,0],[0,19.761],[0,0]],"o":[[0,0],[-16.734,-19.635],[0,0],[-28.59,0],[0,0],[0,0],[-108.306,-6.36],[-21.426,1.233],[0,0],[0,0],[0,21.426],[0,0],[0,0],[8.151,-32.541],[36.801,0],[0,0],[63.909,0.495],[5.001,4.446],[0,0],[0,0],[5.496,-36],[37.545,0],[0,0],[13.215,0],[0,0],[-0.063,-24.45]],"v":[[273.79,-70.794],[234.889,-116.427],[167.893,-147.363],[123.619,-147.363],[71.812,-95.556],[71.812,50.355],[37.912,48.381],[-260.27,48.381],[-298.43,88.824],[-298.43,94.26],[-298.43,99.693],[-260.27,140.139],[-253.973,140.445],[-253.91,140.445],[-181.232,83.7],[-107.504,145.263],[-107.381,145.323],[81.382,140.076],[100.216,147.363],[108.862,147.363],[108.985,147.363],[183.019,83.76],[257.056,147.363],[269.221,147.363],[298.429,111.609],[298.429,-3.984]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.086274509804,0.086274509804,0.086274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[602.31,614.563],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.369,2.158],[0.559,0.646],[2.011,10.921],[-1.603,4.01],[3.847,1.537],[1.537,-3.847],[0.322,-1.92],[9.643,2.593],[1.076,-3.999],[-4.001,-1.077],[-11.856,0],[-1.979,0.15],[-0.057,-0.306],[-0.62,-2.409],[12.309,-2.482],[-0.819,-4.06],[-3.498,0],[-0.5,0.101],[-12.226,5.071],[-1.197,-2.417],[6.041,-13.054],[-3.76,-1.74],[-1.055,0],[-1.268,2.739],[-10.854,3.385],[-0.813,-1.082],[-2.281,0],[-1.349,1.013],[2.486,3.314]],"o":[[-0.313,-0.811],[-5.724,-9.627],[-0.775,-4.137],[1.538,-3.846],[-3.849,-1.538],[-0.761,1.905],[-11.974,1.037],[-3.997,-1.073],[-1.077,3.999],[9.159,2.465],[1.956,0],[0.056,0.315],[0.447,2.426],[-11.64,4.907],[-4.061,0.818],[0.718,3.561],[0.49,0],[12.903,-2.603],[1.019,2.497],[-13.428,5.148],[-1.739,3.759],[1.019,0.472],[2.831,0],[4.762,-10.291],[0.818,1.201],[1.474,1.965],[1.566,0],[3.313,-2.485],[-1.267,-1.689]],"v":[[33.139,10.464],[31.809,8.278],[19.98,-23.069],[20.122,-36.479],[15.941,-46.227],[6.195,-42.046],[4.6,-36.29],[-29.26,-40.525],[-38.451,-35.231],[-33.156,-26.041],[-0.84,-21.043],[5.069,-21.279],[5.233,-20.328],[6.863,-13.076],[-29.158,-1.878],[-35.027,6.956],[-27.682,12.975],[-26.193,12.826],[11.598,1.202],[14.904,8.584],[-15.924,37.113],[-12.266,47.068],[-9.121,47.765],[-2.31,43.412],[22.607,21.752],[25.042,25.168],[31.048,28.168],[35.542,26.668],[37.042,16.168]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[383.36,529.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.777,-3.52],[1.966,-1.211],[2.191,0.538],[0.988,0.896],[0.489,1.039],[3.753,-1.77],[-1.761,-3.748],[-1.608,-1.791],[25.159,-15.636],[16.888,-1.662],[0.5,0.565],[2.622,1.884],[2.417,-3.362],[-3.366,-2.414],[-1.248,-1.532],[-0.645,-1.017],[1.237,-5.479],[4.699,-2.924],[6.858,6.239],[3.624,5.746],[3.502,-2.209],[-2.209,-3.504],[0.392,-4.549],[0.01,-0.246],[5.334,-3.319],[5.365,1.262],[2.999,4.837],[0.533,1.731],[-2.278,4.74],[3.734,1.796],[1.793,-3.73],[-2.667,-8.763],[-0.375,-0.936],[0.224,-0.313],[2.376,-1.494],[5.553,1.412],[2.616,4.62],[-4.402,8.672],[-0.217,3.619],[8.805,5.464],[5.966,-1.694],[4.055,-4.702],[3.02,-34.081],[7.715,-6.425],[10.118,0.993],[6.674,8.147],[-5.928,13.403],[-3.515,2.151],[-3.631,12.902],[3.988,1.122],[1.122,-3.988],[7.998,-4.942],[3.662,-0.903],[9.055,14.587],[-2.28,10.101],[-8.631,5.37],[-4.119,0.939],[-6.07,-1.7],[-1.113,3.99],[3.989,1.116],[8.505,-1.953],[0.895,-0.254],[0.265,0.126],[4.006,6.479],[-2.28,10.098],[-8.682,5.403],[-9.818,-3],[-9.944,-7.379],[-13.469,-0.967],[0,0],[-5.222,2.123],[-0.983,6.69],[6.594,4.643],[6.861,1.654],[1.536,0.655],[1.731,2.826],[-12.295,7.641],[-5.228,-0.271],[-9.467,-6.918],[-1.535,0],[-1.469,2.01],[3.345,2.445],[0.521,10.074],[-2.452,4.715],[-15.368,-2.978],[-4.73,-4.532],[-1.027,-4.686],[-4.056,0.888],[0.888,4.048],[6.066,5.754],[0.164,0.153],[-8.399,5.22],[-8.301,-13.368],[-0.284,-5.415],[0,0],[0,0],[-21.373,-5.168],[-1.415,-0.435],[0,0],[-0.188,-0.069],[0,0],[-4.605,-2.215],[-11.324,-24.411],[1.445,-2.747],[-3.665,-1.93],[-1.928,3.663],[-2.186,1.402],[-0.118,0.081],[-4.461,-7.226],[7.052,-4.395],[0.903,-0.378],[3.566,1.298],[1.418,-3.89],[-3.891,-1.418],[-3.504,0],[-2.498,0.658]],"o":[[-0.527,2.284],[-1.94,1.191],[-1.482,-0.367],[-0.975,-0.9],[-1.761,-3.75],[-3.75,1.76],[0.978,2.084],[-6.897,29.006],[-14.376,8.918],[-0.619,-0.886],[-1.901,-2.345],[-3.363,-2.414],[-2.417,3.364],[1.538,1.107],[0.46,0.525],[2.994,4.81],[-1.227,5.437],[-7.838,4.89],[-0.016,-6.718],[-2.208,-3.504],[-3.504,2.209],[2.476,3.93],[-0.034,0.244],[-0.769,6.351],[-4.64,2.892],[-5.525,-1.292],[-1.04,-1.705],[-1.563,-5.139],[1.794,-3.736],[-3.734,-1.787],[-3.911,8.141],[0.297,0.964],[-0.261,0.268],[-1.617,2.268],[-4.827,3.006],[-5.306,-1.354],[-4.808,-8.537],[1.955,-3.849],[0.433,-7.081],[-4.021,-2.47],[-5.983,1.615],[-15.857,18.698],[-0.769,8.666],[-7.78,6.44],[-10.383,-1.005],[-9.497,-11.633],[3.698,-1.261],[11.231,-6.943],[1.124,-3.987],[-3.98,-1.128],[-2.612,9.278],[-3.471,2.124],[-16.348,4.128],[-5.529,-8.874],[2.269,-10.05],[3.636,-2.225],[6.087,-1.396],[3.989,1.113],[1.118,-3.989],[-8.474,-2.376],[-0.908,0.207],[-0.243,-0.152],[-6.909,-3.265],[-5.528,-8.874],[2.269,-10.051],[9.226,-5.749],[13.323,4.083],[16.156,12.036],[0,0],[7.868,0.589],[8.757,-3.527],[1.051,-7.681],[-2.864,-2.054],[-3.186,-0.767],[-3.037,-1.335],[-7.796,-12.546],[4.543,-2.832],[2.044,12.287],[1.334,0.976],[2.312,0],[2.443,-3.344],[-7.303,-5.338],[-0.311,-5.887],[6.805,-13.216],[6.349,1.201],[3.906,3.706],[0.886,4.046],[4.046,-0.886],[-1.672,-7.627],[-0.161,-0.155],[-0.332,-10.08],[13.112,-8.116],[2.277,3.641],[0,0],[0,0],[19.326,-8.028],[1.412,0.326],[0,0],[0.208,0.047],[0,0],[4.91,1.487],[23.519,11.206],[-2.132,2.123],[-1.931,3.665],[3.674,1.933],[1.239,-2.351],[0.123,-0.075],[7.155,-4.27],[4.521,7.311],[-0.662,0.4],[-3.419,1.393],[-3.893,-1.415],[-1.418,3.891],[3.375,1.231],[2.563,0],[2.845,2.069]],"v":[[228.292,-22.194],[224.421,-16.772],[217.999,-15.764],[214.196,-17.719],[211.99,-20.642],[202.016,-24.242],[198.414,-14.267],[202.297,-8.452],[152.779,60.639],[105.062,76.73],[103.36,74.495],[96.54,68.121],[86.076,69.839],[87.792,80.305],[91.896,84.165],[93.552,86.478],[96.279,102.433],[87.095,115.397],[62.128,112.865],[56.582,93.714],[46.24,91.368],[43.894,101.712],[47.055,114.665],[46.982,115.396],[37.426,130.586],[21.904,133.118],[8.668,123.59],[6.329,118.475],[7.439,103.157],[3.926,93.146],[-6.082,96.659],[-8.014,122.861],[-6.992,125.704],[-7.738,126.553],[-13.776,132.233],[-30.108,134.736],[-42.4,125.462],[-40.06,101.457],[-36.201,90.664],[-45.379,70.813],[-62.974,69.477],[-78.517,79.25],[-103.767,149.84],[-117.128,173.595],[-144.896,182.055],[-171.352,167.855],[-177.051,127.025],[-166.207,121.912],[-143.159,91.139],[-148.346,81.887],[-157.596,87.073],[-174.065,109.133],[-184.797,113.691],[-227.258,96.186],[-232.297,66.764],[-215.368,42.836],[-203.689,38.071],[-185.112,38.534],[-175.87,33.332],[-181.069,24.089],[-207.033,23.449],[-209.725,24.178],[-210.462,23.733],[-227.138,8.85],[-232.177,-20.572],[-215.198,-44.535],[-185.228,-48.858],[-150.159,-31.581],[-111.499,-14.612],[-109.713,-14.479],[-91.426,-15.625],[-76.543,-31.205],[-84.366,-48.573],[-98.441,-53.4],[-106.774,-55.692],[-114.163,-63.71],[-106.01,-100.319],[-91.069,-104.197],[-73.079,-73.958],[-68.66,-72.513],[-62.599,-75.588],[-64.229,-86.069],[-76.725,-110.677],[-73.46,-126.869],[-34.59,-144.845],[-17.423,-135.97],[-9.88,-123.143],[-0.948,-117.424],[4.771,-126.358],[-7.073,-146.827],[-7.574,-147.273],[5.418,-172.02],[44.24,-162.52],[47.251,-148.064],[47.251,-136.829],[57.626,-141.135],[120.688,-145.575],[124.932,-144.434],[125.491,-144.285],[126.095,-144.09],[126.549,-143.936],[140.875,-138.364],[195.31,-82.608],[189.895,-75.329],[193.035,-65.199],[203.167,-68.341],[208.344,-73.991],[208.715,-74.213],[229.697,-68.931],[225.045,-47.665],[222.689,-46.496],[211.855,-46.35],[202.24,-41.872],[206.717,-32.258],[217.108,-30.413],[224.723,-31.431]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[7.623,12.336],[12.721,-3.575],[26.197,12.48],[5.576,1.699],[0.691,0.171],[1.605,0.372],[19.906,-6.189],[2.342,3.748],[20.146,-12.474],[2.248,-11.606],[3.4,0.643],[9.884,-19.195],[0.704,-5.175],[6.888,-4.292],[-12.136,-19.531],[-6.886,-3.028],[-4.122,-0.993],[-1.105,-0.591],[-0.056,0.02],[0.151,-1.111],[4.264,-1.719],[5.959,0.445],[0,0],[15.138,11.278],[14.966,4.585],[12.909,-8.036],[3.158,-13.995],[-7.614,-12.224],[-5.57,-4.095],[2.92,-12.943],[-7.621,-12.235],[-18.283,0],[-0.127,0.001],[-11.047,-13.531],[-14.386,-1.392],[-1.735,0],[-9.545,7.901],[-1.136,12.8],[-13.684,16.134],[-3.165,0.852],[-0.91,-0.255],[0.259,-4.315],[0.898,-1.766],[-9.126,-16.21],[-9.303,-2.37],[-8.309,5.17],[-2.209,2.422],[-6.395,-1.496],[-2.726,0],[-5.682,3.536],[-2.888,5.979],[-6.224,0],[-5.704,3.563],[-2.115,9.387],[0.892,4.779],[-15.003,9.308],[-8.439,31.109],[-1.392,0],[-3.741,2.303],[-1.453,6.293],[4.399,5.555]],"o":[[-7.329,-11.858],[-12.873,-26.959],[-5.207,-2.505],[-0.629,-0.229],[-1.682,-0.51],[-20.989,-5.076],[-0.718,-4.2],[-12.646,-20.362],[-10.188,6.33],[-3.216,-1.375],[-21.979,-4.248],[-2.314,4.452],[-7.915,-0.215],[-19.311,12.003],[2.994,4.887],[2.766,1.18],[2.915,0.703],[1.365,0.958],[0.015,0.082],[-0.093,0.34],[-1.988,0.805],[0,0],[-9.32,-0.669],[-11.331,-8.408],[-13.965,-4.268],[-12.114,7.538],[-3.154,13.974],[3.671,5.935],[-10.677,7.559],[-3.154,13.973],[10.117,16.298],[0.127,0],[-4.006,16.325],[9.23,11.268],[1.751,0.17],[12.266,0],[10.937,-9.105],[2.741,-30.914],[2.047,-2.376],[2.416,-0.683],[1.648,1.037],[-0.148,0.847],[-4.172,8.215],[4.659,8.227],[9.491,2.417],[2.828,-1.781],[4.641,4.45],[2.726,0.636],[6.553,0],[5.793,-3.603],[5.503,3.116],[6.425,0],[8.124,-5.053],[1.096,-4.858],[17.53,-2.39],[27.385,-17.021],[1.395,0.251],[4.286,0],[5.411,-3.331],[1.604,-7.251],[9.757,-9.727]],"v":[[242.459,-76.816],[208.284,-90.207],[147.353,-151.893],[131.107,-158.228],[129.102,-158.845],[124.138,-160.174],[61.284,-158.395],[56.97,-170.452],[-2.488,-184.767],[-21.807,-156.526],[-31.772,-159.578],[-86.781,-133.763],[-91.327,-119.208],[-113.935,-113.054],[-126.928,-55.833],[-112.737,-41.927],[-101.956,-38.816],[-93.055,-36.346],[-91.315,-34.966],[-91.393,-33.327],[-97.051,-29.53],[-108.594,-29.439],[-110.414,-29.573],[-141.21,-43.619],[-180.837,-63.2],[-223.125,-57.27],[-246.809,-23.875],[-239.884,16.76],[-225.879,31.894],[-246.928,63.464],[-239.997,104.108],[-194.185,129.863],[-193.802,129.851],[-182.964,177.35],[-146.342,196.986],[-141.112,197.241],[-107.547,185.134],[-88.826,151.164],[-67.116,89],[-58.97,83.935],[-52.936,83.777],[-51.159,89.633],[-53.435,94.665],[-55.461,132.84],[-33.81,149.27],[-5.816,144.949],[1.734,138.608],[18.49,147.725],[26.69,148.678],[45.352,143.323],[58.536,128.65],[76.457,133.408],[95.029,128.126],[110.91,105.732],[111.175,91.158],[160.691,73.384],[215.865,-0.934],[220.05,-0.515],[232.284,-3.999],[242.922,-18.885],[238.182,-39.106]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[482.563,490.145],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.832,-3.681],[3.106,-1.913],[0,0],[4.155,6.625],[-0.87,3.704],[-3.114,1.919],[-2.464,0],[-2.716,-4.339]],"o":[[-0.817,3.625],[0,0],[-6.466,4.021],[-2.036,-3.268],[0.84,-3.58],[2.221,-1.38],[4.714,0],[2.01,3.252]],"v":[[13.626,5.474],[7.541,14.062],[7.515,14.078],[-11.76,9.34],[-13.567,-1.472],[-7.45,-9.989],[-0.293,-12.025],[11.801,-5.278]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[13.436,-8.361],[1.761,-7.495],[-4.172,-6.697],[-9.726,0],[-4.667,2.897],[-1.714,7.591],[4.105,6.653]],"o":[[-6.51,4.008],[-1.79,7.618],[5.578,8.903],[5.157,0],[6.562,-4.048],[1.702,-7.531],[-8.54,-13.635]],"v":[[-15.343,-22.742],[-28.169,-4.904],[-24.48,17.288],[0.401,31.103],[15.422,26.826],[28.257,8.777],[24.542,-13.197]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[611.222,418.492],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.001,-6.366],[1.573,-0.675],[0.299,-0.182],[9.031,14.52],[-9.057,11.372],[-3.337,2.09],[2.199,3.509],[3.509,-2.199],[3.004,-3.31],[2.509,5.237],[-3.955,6.592],[-7.27,3.356],[-5.565,-0.123],[-8.307,-5.281],[-3.555,-9.66],[9.076,-6.49],[-2.409,-3.369],[-2.338,0],[-1.321,0.945],[-9.22,-0.236],[-2.371,-4.57],[1.101,-1.046],[8.296,-0.602],[-0.299,-4.132],[-3.896,0],[-0.184,0.013],[-8.726,8.148],[-0.021,0.021],[-1.032,-1.631]],"o":[[-1.465,0.731],[-0.33,0.142],[-15.118,5.793],[-7.821,-12.56],[2.376,-2.986],[3.51,-2.201],[-2.197,-3.512],[-3.875,2.428],[-5.049,0.33],[-2.86,-5.965],[4.286,-7.147],[5.33,-2.481],[7.901,0.139],[2.335,10.076],[-8.811,1.134],[-3.369,2.409],[1.464,2.048],[1.51,0],[6.122,-4.377],[2.076,4.691],[-0.691,0.923],[-6.095,5.69],[-4.131,0.3],[0.287,3.947],[0.182,0],[11.823,-0.859],[0.021,-0.02],[0.992,1.65],[-5.528,12.977]],"v":[[17.183,85.766],[12.569,87.903],[11.647,88.415],[-29.923,73.986],[-27.857,33.976],[-19.248,26.326],[-16.875,15.987],[-27.214,13.614],[-37.54,22.271],[-50.885,13.86],[-49.081,-6.812],[-31.172,-23.094],[-14.327,-26.79],[10.963,-18.275],[19.754,11.359],[-7.333,22.841],[-9.072,33.304],[-2.964,36.442],[1.392,35.043],[25.762,26.036],[32.423,39.932],[29.756,42.868],[7.111,52.769],[0.174,60.793],[7.647,67.75],[8.199,67.731],[40.038,53.788],[40.108,53.719],[43.176,58.626]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[3.287,4.924],[6.116,28.04],[-2.405,24.476],[4.123,0.404],[0.404,-4.123],[-3.073,-20.216],[6.935,0.121],[7.331,-3.41],[5.821,-9.705],[-5.054,-10.546],[-7.602,-2.409],[-8.765,-14.078],[-16.555,0.003],[-7.802,4.57],[-6.606,11.498],[-0.72,-0.951],[-2.268,0],[-1.354,1.025],[2.499,3.304]],"o":[[-15.902,-24.204],[-5.19,-23.619],[0.406,-4.122],[-4.117,-0.425],[-2.034,20.688],[-7.181,-2.973],[-7.79,-0.133],[-9.955,4.595],[-6.576,10.963],[3.657,7.634],[-6.21,14.646],[9.542,15.339],[8.408,0],[12.922,-6.42],[0.73,0.998],[1.475,1.948],[1.576,0],[3.304,-2.501],[-2.795,-3.689]],"v":[[58.041,54.12],[24.859,-24.607],[20.665,-97.089],[13.934,-105.286],[5.738,-98.557],[7.35,-37.026],[-14.065,-41.787],[-37.479,-36.704],[-61.945,-14.529],[-64.413,20.342],[-46.306,35.988],[-42.66,81.911],[-0.417,105.708],[24.309,98.955],[52.837,72.902],[55.009,75.824],[60.994,78.796],[65.515,77.276],[66.968,66.768]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[506.106,471.212],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.306,0.183]],"o":[[0.303,-0.183],[0,0]],"v":[[-0.457,0.274],[0.458,-0.274]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.878431432387,0.701960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[527.094,563.414],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.83,-3.477],[0,0]],"o":[[0,0],[-3.54,2.196]],"v":[[-4.027,4.332],[4.028,-4.332]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[683.121,413.977],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.31,2.136],[0,0]],"o":[[0,0],[5.124,1.89]],"v":[[8.117,-1.068],[-8.117,-0.822]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[700.02,451.663],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.489,0.12],[-0.489,-0.183]],"o":[[0.549,0.12],[-0.549,-0.183]],"v":[[-0.794,-0.243],[0.793,0.243]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[610.608,338.725],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.65,-1.524]],"o":[[0.915,1.953],[0,0]],"v":[[-1.953,-2.624],[1.953,2.624]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[689.72,475.313],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.008,-6.165],[6.348,10.131],[-10.011,6.165],[-6.345,-10.131]],"o":[[-10.011,6.225],[-6.348,-10.191],[10.008,-6.225],[6.288,10.194]],"v":[[11.475,18.402],[-18.126,11.259],[-11.412,-18.402],[18.186,-11.262]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[611.222,420.538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21.177,-8.727],[0,0],[-22.461,-5.43]],"o":[[0,0],[21.177,-8.787],[-22.461,-5.43]],"v":[[-33.812,5.005],[-33.812,5.126],[33.811,0.304]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[571.185,336.893],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.069,0.069]],"v":[[-0.069,0],[0.069,0.069],[0.069,-0.069]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[537.329,341.968],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.698,4.518],[0,0]],"o":[[0,0],[-1.467,-6.408]],"v":[[-4.852,-8.331],[4.853,8.331]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[475.215,357.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.953,1.404],[0,0]],"o":[[0,0],[-1.587,-1.953]],"v":[[-2.685,-2.503],[2.685,2.504]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[577.409,566.861],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.48,5.556],[0,0]],"o":[[0,0],[0.612,-6.105]],"v":[[-2.412,-9.003],[1.8,9.003]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[535.208,596.92],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-9.519,-6.957]],"o":[[0.609,11.778],[0,0]],"v":[[-7.78,-15.135],[7.78,15.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[406.185,394.995],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-19.47,11.412],[-6.714,17.517],[0,0],[6.162,28.257],[10.497,0.183],[6.165,-2.868],[4.944,-8.238],[-4.212,-8.79],[-9.276,2.502],[0,0],[-9.765,-15.684]],"o":[[14.463,-7.08],[0,0],[-16.725,-25.389],[-9.888,-6.897],[-6.837,-0.12],[-8.727,4.029],[-4.944,8.241],[4.212,8.787],[0,0],[-10.74,13.488],[12.144,19.47]],"v":[[25.634,57.736],[56.455,23.8],[56.822,23.557],[22.582,-57.677],[-9.155,-69.029],[-29.297,-64.634],[-50.474,-45.41],[-52.609,-17.639],[-28.747,-5.495],[-28.625,-5.372],[-31.186,43.271]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[501.007,505.952],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.136,-6.957],[0,0]],"o":[[0,0],[-3.051,6.348]],"v":[[0.306,10.375],[1.83,-10.375]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[481.412,600.428],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.446,-1.65],[0,0]],"o":[[0,0],[-7.201,-1.953]],"v":[[-11.138,0.55],[11.138,1.099]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941236309,0.635294117647,0.662745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[288.326,520.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.345,10.194],[-10.008,6.165],[-6.348,-10.131],[10.011,-6.165]],"o":[[-6.348,-10.191],[10.011,-6.225],[6.348,10.194],[-10.008,6.225]],"v":[[112.727,-61.796],[119.438,-91.456],[149.039,-84.316],[142.325,-54.652]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-16.785,-25.389],[0,0],[14.466,-7.08],[12.147,19.53],[-10.683,13.488],[0,0],[4.212,8.727],[-4.941,8.238],[-8.727,4.029],[-6.834,-0.123],[-9.888,-6.837]],"o":[[0,0],[-6.714,17.517],[-19.407,11.415],[-9.765,-15.684],[0,0],[-9.276,2.439],[-4.209,-8.787],[4.944,-8.241],[6.225,-2.868],[10.437,0.183],[6.105,28.317]],"v":[[77.51,35.858],[77.144,36.101],[46.322,70.034],[-10.498,55.508],[-7.933,6.866],[-8.056,6.746],[-31.921,-5.401],[-29.785,-33.169],[-8.605,-52.396],[11.534,-56.788],[43.271,-45.436]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-18.92,4.761],[0,0],[-12.207,-14.952],[-19.47,16.113],[-0.978,10.986],[-15.318,18.066],[-4.515,1.221],[-1.89,-1.158],[0.366,-5.979],[-10.068,-17.883],[-13.245,8.241],[-2.136,2.991],[0,0],[-3.051,6.348],[0,0],[-1.344,-2.196],[-13.242,8.238],[-0.855,8.484],[0,0],[0.552,-6.042],[-12.024,7.446],[8.361,13.425],[0.855,0.978],[0,0],[-1.587,-1.953],[0,0],[-16.722,10.374],[-6.411,31.065],[0,0],[0.915,2.013],[0,0],[-2.688,-0.669],[-2.013,8.727],[7.386,2.928],[5.187,1.893],[0,0],[-1.098,0.672],[6.714,10.863],[10.68,-6.591],[0,0],[-3.54,2.196],[27.159,12.939],[5.247,1.65],[0.549,0.183],[1.587,0.366],[21.177,-8.787],[0,0],[-0.063,0],[3.357,5.37],[16.599,-10.317],[-0.732,-12.57],[0,0],[-1.464,-6.408],[0,0],[7.752,1.467],[8.484,-16.479],[-0.366,-6.96],[0,0],[0.612,11.718],[0,0],[7.935,-4.944],[-10.008,-16.11],[-4.578,-2.013],[-3.237,-2.319],[0.672,-4.884],[4.698,-1.893],[8.301,0.609],[15.075,11.232],[9.764,2.991],[11.169,-6.957],[-13.61,-21.849],[-7.874,-3.723],[0,0],[-7.202,-1.953],[0,0],[4.394,-2.685],[-13.61,-21.849]],"o":[[0,0],[-8.179,15.93],[16.296,19.896],[9.093,-7.569],[2.745,-31.002],[3.051,-3.54],[4.518,-1.281],[5.31,3.297],[-0.426,7.143],[7.812,13.794],[3.294,-2.073],[0,0],[-2.136,-6.957],[0,0],[0.732,2.379],[8.361,13.488],[7.752,-4.824],[0,0],[3.48,5.616],[9.033,10.68],[13.242,-8.238],[-0.732,-1.161],[0,0],[1.953,1.404],[0,0],[18.432,-1.404],[28.869,-17.943],[0,0],[-1.65,-1.464],[0,0],[1.953,1.77],[8.727,2.136],[1.77,-7.995],[-5.307,2.136],[0,0],[1.161,-0.489],[10.68,-6.651],[-6.714,-10.863],[0,0],[1.83,-3.48],[-11.352,-28.014],[-5.004,-2.379],[-0.549,-0.183],[-1.587,-0.489],[-22.461,-5.43],[0,0],[0.06,0],[-0.306,-5.922],[-10.497,-16.908],[-11.352,7.017],[0,0],[4.761,4.578],[0,0],[-5.736,-5.493],[-18.309,-3.54],[-3.171,6.102],[0,0],[-9.522,-6.957],[0,0],[-8.484,-2.076],[-15.807,9.825],[2.808,4.578],[5.004,2.136],[4.332,3.051],[-0.669,4.575],[-3.906,1.587],[-11.901,-0.855],[-13.488,-10.008],[-11.78,-3.6],[-21.484,13.368],[4.944,7.995],[0,0],[7.385,-1.647],[0,0],[-4.822,1.098],[-21.483,13.365],[10.925,17.823]],"v":[[-180.776,117.578],[-180.654,118.126],[-175.039,169.15],[-110.224,175.925],[-94.171,147.056],[-70.675,80.654],[-58.897,73.268],[-47.179,73.757],[-41.563,86.756],[-46.813,125.696],[-7.69,135.155],[0.488,127.466],[1.22,117.335],[2.747,96.584],[1.22,117.335],[4.334,124.169],[43.454,133.63],[56.576,112.391],[52.364,94.384],[56.636,112.391],[93.257,118.433],[102.107,79.19],[99.725,75.893],[94.355,70.889],[99.725,75.893],[105.401,81.203],[158.927,63.749],[212.636,-13.639],[211.232,-15.472],[207.326,-20.719],[211.232,-15.472],[218.312,-11.749],[237.719,-23.77],[227.708,-42.751],[211.475,-42.508],[227.708,-42.751],[231.128,-44.461],[238.268,-76.075],[206.777,-83.704],[198.719,-75.037],[206.777,-83.704],[146.414,-148.46],[131.036,-154.441],[129.449,-154.927],[124.688,-156.211],[57.065,-151.39],[56.942,-151.45],[57.065,-151.51],[52.913,-169.819],[3.785,-181.72],[-12.757,-149.62],[-9.949,-144.736],[-0.244,-128.074],[-10.009,-144.859],[-30.943,-155.662],[-77.878,-133.75],[-81.967,-113.731],[-66.403,-83.461],[-81.967,-113.731],[-82.21,-114.22],[-107.782,-110.132],[-118.342,-63.199],[-107.599,-52.273],[-86.542,-45.925],[-81.784,-35.671],[-92.035,-26.029],[-108.76,-25.54],[-143.485,-41.044],[-180.837,-59.476],[-216.968,-54.349],[-231.311,9.368],[-211.475,27.068],[-203.114,27.251],[-180.837,27.8],[-203.114,27.251],[-217.029,32.927],[-231.372,96.644]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.992156922583,0.713725490196,0.305882352941,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[480.375,493.592],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":5,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Layer 4/partners_splash Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,562.5,0],"ix":2},"a":{"a":0,"k":[562.5,562.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.174,0.174,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.794]},"t":40,"s":[40,40,100]},{"t":60,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.18,12.075],[-16.221,14.377],[-8.322,-7.633],[10.035,-12.403],[15.891,-15.201],[9.969,9.114]],"o":[[13.524,-17.667],[12.237,-10.923],[8.457,7.764],[-13.257,16.515],[-11.088,10.596],[-10.068,-9.279]],"v":[[29.133,10.051],[68.517,-33.113],[100.593,-33.179],[102.633,-1.759],[63.516,40.814],[29.628,42.262]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.619,12.338],[-11.712,9.475],[-9.507,-8.719],[6.876,-9.574],[9.18,-8.259],[-10.56,-9.969],[6.186,-8.521],[15.201,8.49],[9.672,12.699]],"o":[[8.193,-11.91],[9.375,-7.535],[9.048,8.324],[-6.876,9.575],[10.266,6.678],[9.048,8.587],[-7.137,9.871],[-14.313,-7.962],[-10.134,-13.391]],"v":[[-52.098,-76.905],[-20.217,-111.614],[9.36,-110.431],[13.572,-81.379],[-10.677,-54.96],[24.462,-26.796],[28.968,-1.332],[-2.22,3.11],[-52.623,-39.101]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[11.451,11.616],[3.849,-3.291],[-11.481,-11.91],[-4.671,3.915]],"o":[[-3.486,5.001],[12.699,10.296],[2.829,-4.245],[-12.897,-10.725]],"v":[[-51.474,21.896],[-60.06,31.241],[-23.409,64.897],[-14.823,55.553]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[3.948,-4.308],[15.3,11.316],[20.76,22.635],[-9.408,13.227],[-8.652,7.666],[-11.613,-8.489],[-15.135,-17.172],[9.213,-10.956],[6.12,-0.396]],"o":[[-7.239,7.863],[-24.741,-18.36],[-11.055,-12.075],[6.318,-8.981],[10.596,-9.443],[18.525,13.489],[14.082,15.957],[-7.206,8.421],[1.644,5.034]],"v":[[2.058,111.287],[-31.404,105.728],[-97.698,45.092],[-103.26,7.978],[-80.361,-16.96],[-44.4,-15.906],[20.382,42.524],[27.192,81.874],[5.445,96.91]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[917.141,300.515],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.285,-14.411],[12.006,5.231],[2.139,1.151],[0,0],[12.207,5.33],[-4.737,14.411],[-10.659,18.852],[-10.167,-4.408],[5.463,-14.97],[0,0],[-2.403,-1.021]],"o":[[-6.513,14.97],[-1.845,-0.823],[0,0],[-7.041,13.621],[-12.372,-5.396],[7.008,-21.122],[7.995,-14.312],[10.332,4.508],[0,0],[2.205,0.527],[10.923,4.77]],"v":[[99.951,0.296],[71.955,15.562],[67.215,13.292],[61.59,24.675],[31.914,37.211],[19.05,6.745],[46.521,-56.655],[77.217,-67.019],[88.995,-38.132],[86.463,-31.322],[93.339,-28.984]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.776,4.079],[13.653,5.955],[1.779,-4.047],[-13.851,-6.054]],"o":[[1.776,-4.047],[-13.851,-6.054],[-1.776,4.047],[13.656,5.987]],"v":[[-12.207,62.775],[-27.999,48.628],[-49.122,46.654],[-33.33,60.801]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[8.16,-1.052],[4.803,10.232],[-7.632,4.343],[-13.359,1.415],[5.889,3.652],[-4.443,10.166],[-11.877,-2.994],[-12.501,-8.555],[13.293,-10.265],[6.219,-3.224],[-3.093,-5.528],[8.454,-6.218],[8.817,6.021],[5.724,9.081]],"o":[[-7.434,0.922],[-3.849,-8.291],[10.266,-5.856],[-8.424,-3.882],[-10.266,-6.251],[3.948,-9.048],[15.267,3.816],[18.819,12.831],[-3.981,3.093],[6.087,5.725],[4.77,8.685],[-7.896,6.021],[-8.982,-6.119],[-10.167,3.224]],"v":[[-67.086,-12.404],[-90.807,-24.083],[-83.766,-46.719],[-30.696,-63.564],[-53.397,-75.014],[-62.214,-99.096],[-37.968,-108.308],[18.621,-83.37],[16.515,-43.824],[0.69,-34.25],[15.201,-17.141],[8.883,7.37],[-16.779,5.198],[-38.79,-18.918]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[10.956,-25.104],[40.962,17.897],[-10.956,25.103],[-41.16,-17.997]],"o":[[-10.956,25.104],[-41.193,-17.964],[10.956,-25.103],[40.995,17.898]],"v":[[33.954,82.943],[-47.772,93.405],[-95.28,26.485],[-13.917,15.858]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[762.719,197.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.759,-15.694],[13.095,0.625],[2.205,0.296],[1.383,-11.647],[13.656,1.053],[1.317,14.575],[-5.628,29.38],[-11.055,-0.526],[-0.429,-15.957],[0.591,-16.483],[-2.433,-0.131]],"o":[[-0.789,16.286],[-2.007,-0.099],[-1.149,19.51],[-2.007,16.45],[-13.455,-1.053],[-2.895,-32.407],[2.961,-15.595],[11.253,0.526],[0.327,9.706],[2.238,-0.296],[11.91,0.56]],"v":[[99.276,-4.064],[78.549,20.151],[73.515,19.723],[69.534,68.943],[44.826,92.368],[25.02,68.021],[31.536,-72.233],[54.894,-92.895],[76.347,-69.471],[75.819,-28.773],[82.695,-29.036]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.094,-11.68],[8.685,-8.456],[9.609,5.691],[7.074,8.028],[3.42,-4.672],[11.415,6.021],[-4.08,13.522],[-16.911,24.412],[-9.114,-3.882],[4.572,-15.496],[7.929,-18.556]],"o":[[6.777,10.002],[-8.259,7.863],[-7.467,-4.376],[-3.519,6.284],[-7.767,10.725],[-10.431,-5.527],[10.332,-34.612],[9.114,-13.062],[9.474,4.08],[-3.621,12.141],[15.498,8.259]],"v":[[13.209,24.494],[10.479,56.013],[-20.022,56.967],[-42.459,37.325],[-52.92,53.973],[-85.722,65.093],[-95.955,34.364],[-45.222,-72.925],[-15.48,-83.19],[-3.372,-53.58],[-21.633,-4.854]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[560.759,152.66],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.876,10.89],[-6.018,-2.633],[-9.54,3.29],[2.139,6.087],[8.391,-2.896],[5.46,-2.106],[3.684,10.66],[-8.949,3.093],[-5.364,1.875],[2.139,6.12],[7.038,-2.434],[3.915,-7.107],[14.345,4.442],[-2.237,9.541],[-26.847,9.311],[-9.114,-26.287],[15.696,-12.469],[0,0],[-6.285,-18.095],[35.202,-12.206],[17.406,13.357]],"o":[[8.556,-13.424],[8.259,3.52],[8.556,-2.961],[-2.169,-6.284],[-5.328,1.842],[-9.576,3.751],[-4.08,-11.811],[5.526,-1.908],[7.041,-2.434],[-2.136,-6.119],[-7.437,2.566],[-4.311,7.896],[-12.206,-3.882],[4.541,-19.477],[28.92,-10.035],[5.79,16.747],[0,0],[21.123,-1.777],[9.639,27.801],[-24.939,8.653],[-8.223,-6.35]],"v":[[-44.926,46.357],[-19.396,38.166],[9.557,39.218],[20.513,24.117],[2.483,18.853],[-11.794,24.445],[-33.508,9.805],[-24.922,-13.423],[-11.893,-17.734],[-2.452,-31.683],[-18.439,-36.586],[-35.714,-21.221],[-62.988,-9.443],[-76.314,-31.914],[-28.181,-78.237],[41.438,-54.583],[28.508,-11.943],[28.639,-11.547],[68.911,14.806],[24.001,79.62],[-42.13,73.961]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.3,177.319],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.377,-12.601],[10.528,-7.831],[1.876,-1.151],[-6.087,-9.542],[11.22,-7.864],[10.265,10.431],[14.279,26.288],[-8.916,6.613],[-10.462,-12.042],[-10.397,-13.621],[-1.941,1.447]],"o":[[9.739,13.094],[-1.612,1.217],[11.154,15.299],[8.883,13.982],[-11.055,7.731],[-22.801,-23.228],[-7.6,-13.917],[9.048,-6.745],[6.646,7.6],[1.645,-1.48],[9.509,-7.107]],"v":[[79.291,-60.916],[78.633,-29.034],[74.487,-26.206],[101.433,12.75],[97.518,46.308],[66.756,40.057],[-17.207,-72.497],[-12.239,-103.292],[18.885,-98.586],[45.403,-65.325],[50.667,-69.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-8.752,-9.081],[-4.606,-17.668],[9.31,-32.046],[12.042,1.35],[-1.382,13.326],[7.238,27.012],[12.075,-7.732],[7.435,9.311],[-10.989,10.199],[-18.852,10.758]],"o":[[7.633,7.896],[7.567,28.755],[-3.521,12.138],[-13.061,-1.347],[3.059,-29.643],[-8.982,8.193],[-10.331,6.679],[-7.535,-9.475],[13.358,-12.436],[12.7,-7.206]],"v":[[-19.016,-51.308],[-1.579,-18.078],[2.534,90.099],[-23.623,109.279],[-40.599,83.748],[-45.337,-7.386],[-73.862,14.328],[-102.781,10.216],[-98.307,-21.237],[-53.003,-54.17]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.776470648074,0.403921598547,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.401,258.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":109,"st":-20,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 1bd13bb..54ac39a 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -67,8 +67,9 @@ "home_invalid_position" = "빨간 원(현재 위치의 반경 100m 이내) 안에서 장사를 시작해주세요."; // Waiting -"waiting_title" = "승인 대기 중입니다."; -"waiting_description" = "우리는 소규모로 운영되는 팀이라\n시간이 어느정도(3일-5일) 소요된다 어쩐다 하는\n구구절절 먹먹문"; +"waiting_title" = "신청 완료!"; +"waiting_description" = "사장님! 소중한 정보를 입력해주셔서 감사합니다.\n심사는 지원한 날로부터 주말을 제외한 평일 기준 약 2-5일 소요될 수 있어요. 최대한 빠르게 처리하여 사장님의 영업을 도와드릴 테니 조금만 기다려주세요 :)"; +"waiting_bottom_description_1" = "사장님이 영업 시작 버튼을 누르면\n근처 고객들에게 홍보 돼요!"; "waiting_question_button" = "이메일로 문의하기"; "waiting_logout" = "로그아웃"; From 852d1d447fd5b6896f597196d073a2b740aadb3b Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 9 Aug 2022 14:33:45 +0900 Subject: [PATCH 141/166] =?UTF-8?q?fix:=20=EC=A0=84=ED=98=B8=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditStoreInfoReactor.swift | 18 +---------- .../edit-store-info/EditStoreInfoView.swift | 20 +----------- .../EditStoreInfoViewController.swift | 5 --- .../cells/MyStoreInfoOverviewCell.swift | 32 ++----------------- .../request/PatchBossStoreInfoRequest.swift | 6 ---- .../dto/response/BossStoreInfoResponse.swift | 6 ---- .../models/presentation/Store.swift | 6 ---- 7 files changed, 4 insertions(+), 89 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift index 0d1ff75..be8e44f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift @@ -8,7 +8,6 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { enum Action { case viewDidLoad case inputStoreName(String) - case inputPhoneNumber(String) case selectCategory(index: Int) case deselectCategory(index: Int) case selectPhoto(UIImage) @@ -18,7 +17,6 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { enum Mutation { case setStoreName(String) - case setPhoneNumber(String) case selectCategory(StoreCategory) /// 기존에 선택되어있는 카테고리 선택해주기 @@ -78,12 +76,6 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { .just(.setSaveButtonEnable(self.validate(storeName: storeName))) ]) - case .inputPhoneNumber(let phoneNumber): - return .merge([ - .just(.setPhoneNumber(phoneNumber)), - .just(.setSaveButtonEnable(self.validate(phoneNumber: phoneNumber))) - ]) - case .selectCategory(let index): let selectedCategory = self.currentState.categories[index] @@ -112,9 +104,6 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { case .setStoreName(let storeName): newState.store.name = storeName - case .setPhoneNumber(let phoneNumber): - newState.store.phoneNumber = phoneNumber - case .selectCategory(let category): newState.store.categories.append(category) @@ -166,15 +155,10 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert($0)) } } - private func validate( - storeName: String? = nil, - phoneNumber: String? = nil - ) -> Bool { + private func validate(storeName: String? = nil) -> Bool { let storeName = storeName ?? self.currentState.store.name - let phoneNumber = phoneNumber ?? self.currentState.store.phoneNumber return !storeName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty - && !(phoneNumber ?? "").isEmpty } private func updateStore(store: Store, image: UIImage?) -> Observable { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift index 9f8c029..9ec189d 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoView.swift @@ -38,16 +38,6 @@ final class EditStoreInfoView: BaseView { $0.maxLength = 20 } - let phoneNumberField = InputField( - title: "signup_phone_number_title".localized, - isRequired: true, - description: "signup_phone_number_description".localized, - placeholder: "signup_phone_number_placeholder".localized - ).then { - $0.keyboardType = .numberPad - $0.format = "XXX-XXXX-XXXX" - } - let categoryCollectionView = CategorySelectView() let photoView = PhotoUploadView(type: .edit) @@ -78,7 +68,6 @@ final class EditStoreInfoView: BaseView { self.containerView.addSubViews([ self.roundedBackgroundView, self.storeNameField, - self.phoneNumberField, self.categoryCollectionView, self.photoView, self.snsField @@ -138,16 +127,10 @@ final class EditStoreInfoView: BaseView { make.top.equalTo(self.roundedBackgroundView).offset(32) } - self.phoneNumberField.snp.makeConstraints { make in - make.left.equalTo(self.storeNameField) - make.right.equalTo(self.storeNameField) - make.top.equalTo(self.storeNameField.snp.bottom).offset(32) - } - self.categoryCollectionView.snp.makeConstraints { make in make.left.equalTo(self.storeNameField) make.right.equalTo(self.storeNameField) - make.top.equalTo(self.phoneNumberField.snp.bottom).offset(32) + make.top.equalTo(self.storeNameField.snp.bottom).offset(32) } self.photoView.snp.makeConstraints { make in @@ -172,7 +155,6 @@ final class EditStoreInfoView: BaseView { func bind(store: Store) { self.storeNameField.setText(text: store.name) - self.phoneNumberField.setText(text: store.phoneNumber) self.photoView.setImage(imageUrl: store.imageUrl) self.snsField.setText(text: store.snsUrl) } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift index 9bc906f..8e9a86a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift @@ -101,11 +101,6 @@ final class EditStoreInfoViewController: BaseViewController, View, EditStoreInfo .bind(to: reactor.action) .disposed(by: self.disposeBag) - self.editStoreInfoView.phoneNumberField.rx.text - .map { Reactor.Action.inputPhoneNumber($0) } - .bind(to: reactor.action) - .disposed(by: self.disposeBag) - self.editStoreInfoView.categoryCollectionView.categoryCollectionView.rx.itemSelected .map { Reactor.Action.selectCategory(index: $0.row) } .bind(to: reactor.action) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift index 288f6ac..8c5b1dc 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/subviews/cells/MyStoreInfoOverviewCell.swift @@ -23,7 +23,6 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { private let nameLabel = UILabel().then { $0.font = .bold(size: 24) $0.textColor = .gray100 - $0.text = "은평구 핫도그 아저씨" $0.textAlignment = .center } @@ -39,19 +38,6 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { $0.layer.cornerRadius = 12 } - private let phoneNumberLabel = UILabel().then { - $0.font = .bold(size: 12) - $0.textColor = .black - $0.text = "연락처" - $0.setContentHuggingPriority(.defaultHigh, for: .horizontal) - } - - private let phoneNumberValueLabel = UILabel().then { - $0.font = .regular(size: 12) - $0.textColor = .gray50 - $0.textAlignment = .right - } - private let snsLabel = UILabel().then { $0.font = .bold(size: 12) $0.textColor = .black @@ -90,8 +76,6 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { self.nameLabel, self.categoryStackView, self.contactContainerView, - self.phoneNumberLabel, - self.phoneNumberValueLabel, self.snsLabel, self.snsValueLabel, self.editButton @@ -131,26 +115,15 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { make.height.equalTo(78) } - self.phoneNumberLabel.snp.makeConstraints { make in + self.snsLabel.snp.makeConstraints { make in make.left.equalTo(self.contactContainerView).offset(12) make.top.equalTo(self.contactContainerView).offset(12) } - self.phoneNumberValueLabel.snp.makeConstraints { make in - make.centerY.equalTo(self.phoneNumberLabel) - make.right.equalTo(self.contactContainerView).offset(-12) - make.left.equalTo(self.phoneNumberLabel.snp.right).offset(12) - } - - self.snsLabel.snp.makeConstraints { make in - make.left.equalTo(self.phoneNumberLabel) - make.top.equalTo(self.phoneNumberLabel.snp.bottom).offset(10) - } - self.snsValueLabel.snp.makeConstraints { make in make.top.equalTo(self.snsLabel) make.right.equalTo(self.contactContainerView).offset(-12) - make.left.equalTo(self.phoneNumberLabel.snp.right).offset(12) + make.left.equalTo(self.snsLabel.snp.right).offset(12) } self.editButton.snp.makeConstraints { make in @@ -183,7 +156,6 @@ final class MyStoreInfoOverviewCell: BaseCollectionViewCell { self.categoryStackView.addArrangedSubview(categoryLagel) } - self.phoneNumberValueLabel.text = store.phoneNumber self.snsValueLabel.text = store.snsUrl } } diff --git a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift index f0d7bfe..e5db205 100644 --- a/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift +++ b/3dollar-in-my-pocket-manager/models/dto/request/PatchBossStoreInfoRequest.swift @@ -3,7 +3,6 @@ import Foundation struct PatchBossStoreInfoRequest: Encodable { let appearanceDays: [AppearanceDayRequest]? let categoriesIds: [String]? - let contactsNumber: String? let imageUrl: String? let introduction: String? let menus: [MenuRequest]? @@ -13,7 +12,6 @@ struct PatchBossStoreInfoRequest: Encodable { enum CodingKeys: String, CodingKey { case appearanceDays case categoriesIds - case contactsNumber case imageUrl case introduction case menus @@ -24,7 +22,6 @@ struct PatchBossStoreInfoRequest: Encodable { init( appearanceDays: [AppearanceDayRequest]? = nil, categoriesIds: [String]? = nil, - contactsNumber: String? = nil, imageUrl: String? = nil, introduction: String? = nil, menus: [MenuRequest]? = nil, @@ -33,7 +30,6 @@ struct PatchBossStoreInfoRequest: Encodable { ) { self.appearanceDays = appearanceDays self.categoriesIds = categoriesIds - self.contactsNumber = contactsNumber self.imageUrl = imageUrl self.introduction = introduction self.menus = menus @@ -44,7 +40,6 @@ struct PatchBossStoreInfoRequest: Encodable { init(store: Store) { self.appearanceDays = store.appearanceDays.map(AppearanceDayRequest.init) self.categoriesIds = store.categories.map { $0.categoryId } - self.contactsNumber = store.phoneNumber self.imageUrl = store.imageUrl self.introduction = store.introduction self.menus = store.menus.map(MenuRequest.init(menu:)) @@ -57,7 +52,6 @@ struct PatchBossStoreInfoRequest: Encodable { try container.encodeIfPresent(self.appearanceDays, forKey: .appearanceDays) try container.encodeIfPresent(self.categoriesIds, forKey: .categoriesIds) - try container.encodeIfPresent(self.contactsNumber, forKey: .contactsNumber) try container.encodeIfPresent(self.imageUrl, forKey: .imageUrl) try container.encodeIfPresent(self.introduction, forKey: .introduction) try container.encodeIfPresent(self.menus, forKey: .menus) diff --git a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift index 640db88..0b8c0f0 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/BossStoreInfoResponse.swift @@ -2,7 +2,6 @@ struct BossStoreInfoResponse: Decodable { let appearanceDays: [BossStoreAppearanceDayResponse] let bossStoreId: String let categories: [StoreCategoryResponse] - let contactsNumber: String? let createdAt: String? let distance: Int let imageUrl: String? @@ -18,7 +17,6 @@ struct BossStoreInfoResponse: Decodable { case appearanceDays case bossStoreId case categories - case contactsNumber case createdAt case distance case imageUrl @@ -43,10 +41,6 @@ struct BossStoreInfoResponse: Decodable { [StoreCategoryResponse].self, forKey: .categories ) ?? [] - self.contactsNumber = try values.decodeIfPresent( - String.self, - forKey: .contactsNumber - ) self.createdAt = try values.decodeIfPresent(String.self, forKey: .createdAt) self.distance = try values.decodeIfPresent(Int.self, forKey: .distance) ?? 0 self.imageUrl = try values.decodeIfPresent(String.self, forKey: .imageUrl) diff --git a/3dollar-in-my-pocket-manager/models/presentation/Store.swift b/3dollar-in-my-pocket-manager/models/presentation/Store.swift index f537754..5353801 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Store.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Store.swift @@ -8,7 +8,6 @@ struct Store: Equatable { var openTime: Date? var imageUrl: String? var categories: [StoreCategory] - var phoneNumber: String? var snsUrl: String? var introduction: String? var menus: [Menu] @@ -17,7 +16,6 @@ struct Store: Equatable { var isValid: Bool { return !(self.imageUrl ?? "").isEmpty - && !(self.phoneNumber ?? "").isEmpty && !(self.imageUrl ?? "").isEmpty && !self.name.isEmpty } @@ -38,7 +36,6 @@ struct Store: Equatable { } self.imageUrl = response.imageUrl self.categories = response.categories.map(StoreCategory.init) - self.phoneNumber = response.contactsNumber self.snsUrl = response.snsUrl self.introduction = response.introduction self.menus = response.menus.map(Menu.init) @@ -62,7 +59,6 @@ struct Store: Equatable { } self.imageUrl = nil self.categories = response.categories.map(StoreCategory.init) - self.phoneNumber = nil self.snsUrl = nil self.introduction = nil self.menus = response.menus.map(Menu.init) @@ -77,7 +73,6 @@ struct Store: Equatable { openTime: Date? = nil, imageUrl: String? = nil, categories: [StoreCategory] = [], - phoneNumber: String? = nil, snsUrl: String? = nil, introduction: String? = nil, menus: [Menu] = [], @@ -90,7 +85,6 @@ struct Store: Equatable { self.openTime = openTime self.imageUrl = imageUrl self.categories = categories - self.phoneNumber = phoneNumber self.snsUrl = snsUrl self.introduction = introduction self.menus = menus From 50ab5b5555ea980cb2ca6f4b12914fe6805272d1 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 9 Aug 2022 14:54:02 +0900 Subject: [PATCH 142/166] =?UTF-8?q?fix:=20FAQ=20=ED=83=80=EC=9D=B4?= =?UTF-8?q?=EB=93=A4=20=ED=95=9C=EA=B8=80=EB=A1=9C=20=EB=B3=B4=EC=97=AC?= =?UTF-8?q?=EC=A7=80=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 --- .../project.pbxproj | 4 +++ .../dto/response/FAQCategoryResponse.swift | 25 +++++++++++++++++++ .../models/dto/response/FAQResponse.swift | 9 ++++--- .../models/presentation/FAQ.swift | 2 +- 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/dto/response/FAQCategoryResponse.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 73fb451..92bf6f3 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -156,6 +156,7 @@ 6EA53BA2284DD8DB007A3839 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA1284DD8DB007A3839 /* User.swift */; }; 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */; }; 6EB56F2928A223DF00834663 /* UIApplicationExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */; }; + 6EB56F2C28A229F500834663 /* FAQCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2B28A229F500834663 /* FAQCategoryResponse.swift */; }; 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -388,6 +389,7 @@ 6EA53BA1284DD8DB007A3839 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingCoordinator.swift; sourceTree = ""; }; 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplicationExtensions.swift; sourceTree = ""; }; + 6EB56F2B28A229F500834663 /* FAQCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQCategoryResponse.swift; sourceTree = ""; }; 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -602,6 +604,7 @@ 6E91A9962841EF090090361F /* BossStoreFeedbackCursorResponse.swift */, 6EFB2F07285A098D006E37F9 /* BossStoreFeedbackTypeResponse.swift */, 6E211848285DD76F00220E5A /* FAQResponse.swift */, + 6EB56F2B28A229F500834663 /* FAQCategoryResponse.swift */, ); path = response; sourceTree = ""; @@ -1507,6 +1510,7 @@ 6E07F9B9284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift in Sources */, 6E473B9427D85D1C00232139 /* InputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, + 6EB56F2C28A229F500834663 /* FAQCategoryResponse.swift in Sources */, 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */, 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, 6EC5E434282BDDDA00AD571C /* StatisticsFilterButton.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/models/dto/response/FAQCategoryResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/FAQCategoryResponse.swift new file mode 100644 index 0000000..294af78 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/response/FAQCategoryResponse.swift @@ -0,0 +1,25 @@ +struct FAQCategoryResponse: Decodable { + let category: String + let description: String + let displayOrder: Int + + enum CodingKeys: String, CodingKey { + case category + case description + case displayOrder + } + + init(from decoder: Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + + self.category = try values.decodeIfPresent(String.self, forKey: .category) ?? "" + self.description = try values.decodeIfPresent(String.self, forKey: .description) ?? "" + self.displayOrder = try values.decodeIfPresent(Int.self, forKey: .displayOrder) ?? 0 + } + + init() { + self.category = "" + self.description = "" + self.displayOrder = 1 + } +} diff --git a/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift b/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift index a7309a5..5abb8e8 100644 --- a/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift +++ b/3dollar-in-my-pocket-manager/models/dto/response/FAQResponse.swift @@ -1,12 +1,12 @@ struct FAQResponse: Decodable { let answer: String - let category: String + let categoryInfo: FAQCategoryResponse let faqId: Int let question: String enum CodingKeys: String, CodingKey { case answer - case category + case categoryInfo case faqId case question } @@ -15,7 +15,10 @@ struct FAQResponse: Decodable { let values = try decoder.container(keyedBy: CodingKeys.self) self.answer = try values.decodeIfPresent(String.self, forKey: .answer) ?? "" - self.category = try values.decodeIfPresent(String.self, forKey: .category) ?? "" + self.categoryInfo = try values.decodeIfPresent( + FAQCategoryResponse.self, + forKey: .categoryInfo + ) ?? FAQCategoryResponse() self.faqId = try values.decodeIfPresent(Int.self, forKey: .faqId) ?? 0 self.question = try values.decodeIfPresent(String.self, forKey: .question) ?? "" } diff --git a/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift b/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift index 66d527d..99fcaa6 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/FAQ.swift @@ -6,7 +6,7 @@ struct FAQ { init(response: FAQResponse) { self.answer = response.answer - self.category = response.category + self.category = response.categoryInfo.description self.faqId = response.faqId self.question = response.question } From 678ee9ab3c3fe07a54273772a180dbd153766f95 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 9 Aug 2022 19:25:33 +0900 Subject: [PATCH 143/166] =?UTF-8?q?feat:=20=EB=B0=B1=EA=B7=B8=EB=9D=BC?= =?UTF-8?q?=EC=9A=B4=EB=93=9C=20=ED=91=B8=EC=8B=9C=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 ++++ .../AppDelegate.swift | 46 ++++++++++++++++++- .../membership/signin/SigninReactor.swift | 12 ++++- .../signin/SigninViewController.swift | 1 + .../membership/signup/SignupReactor.swift | 14 +++++- .../signup/SignupViewController.swift | 1 + .../dto/request/UpsertBossDeviceRequest.swift | 23 ++++++++++ .../services/DeviceService.swift | 43 +++++++++++++++++ .../utils/HTTPUtils.swift | 4 +- 9 files changed, 146 insertions(+), 6 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/dto/request/UpsertBossDeviceRequest.swift create mode 100644 3dollar-in-my-pocket-manager/services/DeviceService.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 92bf6f3..7dbf44c 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -157,6 +157,8 @@ 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */; }; 6EB56F2928A223DF00834663 /* UIApplicationExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */; }; 6EB56F2C28A229F500834663 /* FAQCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2B28A229F500834663 /* FAQCategoryResponse.swift */; }; + 6EB56F2E28A254D500834663 /* DeviceService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2D28A254D500834663 /* DeviceService.swift */; }; + 6EB56F3028A25AF100834663 /* UpsertBossDeviceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB56F2F28A25AF100834663 /* UpsertBossDeviceRequest.swift */; }; 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */; }; 6EB94EA427CB208F00609E77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA327CB208F00609E77 /* AppDelegate.swift */; }; 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB94EA527CB208F00609E77 /* SceneDelegate.swift */; }; @@ -390,6 +392,8 @@ 6EA53BA3284DE8B9007A3839 /* SettingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingCoordinator.swift; sourceTree = ""; }; 6EB56F2828A223DF00834663 /* UIApplicationExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplicationExtensions.swift; sourceTree = ""; }; 6EB56F2B28A229F500834663 /* FAQCategoryResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQCategoryResponse.swift; sourceTree = ""; }; + 6EB56F2D28A254D500834663 /* DeviceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceService.swift; sourceTree = ""; }; + 6EB56F2F28A25AF100834663 /* UpsertBossDeviceRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpsertBossDeviceRequest.swift; sourceTree = ""; }; 6EB6D7CC2818231F0053CA3F /* EditIntroductionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditIntroductionCoordinator.swift; sourceTree = ""; }; 6EB94EA027CB208F00609E77 /* 3dollar-in-my-pocket-manager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "3dollar-in-my-pocket-manager.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6EB94EA327CB208F00609E77 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -575,6 +579,7 @@ 6EBF1AE627FE65950011268B /* StoreService.swift */, 6E5E14A02830F5E400B1F450 /* FeedbackService.swift */, 6E211846285DD6F600220E5A /* FAQService.swift */, + 6EB56F2D28A254D500834663 /* DeviceService.swift */, ); path = services; sourceTree = ""; @@ -619,6 +624,7 @@ 6E1AB7A6280D918F0059DCF4 /* PatchBossStoreInfoRequest.swift */, 6E1AB7AC280D966D0059DCF4 /* MenuRequest.swift */, 6E1AB7A8280D928E0059DCF4 /* AppearanceDayRequest.swift */, + 6EB56F2F28A25AF100834663 /* UpsertBossDeviceRequest.swift */, ); path = request; sourceTree = ""; @@ -1478,6 +1484,7 @@ 6E142D5827D77AF50084480C /* BaseReactor.swift in Sources */, 6E1AB7A1280D7F390059DCF4 /* EditIntroductionView.swift in Sources */, 6E89A865281E5A3300B795EF /* EditScheduleTableViewCell.swift in Sources */, + 6EB56F3028A25AF100834663 /* UpsertBossDeviceRequest.swift in Sources */, 6EF676B827EECC6D00D43E99 /* SplashReactor.swift in Sources */, 6E473B9827D8624300232139 /* BaseCoordinator.swift in Sources */, 6EE0CFC327CB65320027A426 /* BundleExtensions.swift in Sources */, @@ -1508,6 +1515,7 @@ 6ED883A727CB443F00278E14 /* UIColorExtensions.swift in Sources */, 6EF676BD27EEE57A00D43E99 /* HomeView.swift in Sources */, 6E07F9B9284D9E2600F45B97 /* MyStoreInfoMenuMoreCell.swift in Sources */, + 6EB56F2E28A254D500834663 /* DeviceService.swift in Sources */, 6E473B9427D85D1C00232139 /* InputField.swift in Sources */, 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6EB56F2C28A229F500834663 /* FAQCategoryResponse.swift in Sources */, diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 38df4c4..639698d 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -7,9 +7,12 @@ import FirebaseCore import FirebaseMessaging import Then import SnapKit +import RxSwift @main class AppDelegate: UIResponder, UIApplicationDelegate { + private let appDisposeBag = DisposeBag() + func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? @@ -63,8 +66,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { UNUserNotificationCenter.current().requestAuthorization( options: authOptions, - completionHandler: { isSuccess, _ in - // TODO: 토큰 저장해두기 + completionHandler: { _, _ in } ) @@ -78,8 +80,48 @@ extension AppDelegate: UNUserNotificationCenterDelegate { willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void ) { + let userInfo = notification.request.content.userInfo + + print("🔥 willPresent userInfo: \(userInfo)") + + if let pushType = userInfo["pushOptions"] as? String, + pushType == "BACKGROUND" { + self.renewStore() + } + completionHandler([[.sound, .banner]]) } + + func application( + _ application: UIApplication, + didReceiveRemoteNotification userInfo: [AnyHashable : Any], + fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void + ) { + print("🔥 didReceiveRemoteNotification userInfo: \(userInfo)") + + if let pushType = userInfo["pushOptions"] as? String, + pushType == "BACKGROUND" { + self.renewStore() + } + + completionHandler(UIBackgroundFetchResult.newData) + } + + private func renewStore() { + let storeId = UserDefaultsUtils().storeId + guard !storeId.isEmpty else { + print("❌ 가게가 영업중인 상태가 아닙니다.") + return + } + LocationManager.shared.getCurrentLocation() + .flatMap { location -> Observable in + return StoreService().renewStore(storeId: storeId, location: location) + } + .bind(onNext: { _ in + print("🙆🏻‍♂️ 가게 영업정보 갱신 완료") + }) + .disposed(by: self.appDisposeBag) + } } extension AppDelegate: MessagingDelegate { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift index 278ca1a..6fae0fe 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift @@ -26,17 +26,20 @@ final class SigninReactor: BaseReactor, Reactor { private let kakaoSignInManager: KakaoSignInManagerProtocol private let appleSignInManager: AppleSignInManagerProtocol private let authService: AuthServiceType + private let deviceService: DeviceServiceType private var userDefaultsUtils: UserDefaultsUtils init( kakaoManager: KakaoSignInManagerProtocol, appleSignInManager: AppleSignInManagerProtocol, authService: AuthServiceType, + deviceService: DeviceServiceType, userDefaultsUtils: UserDefaultsUtils ) { self.kakaoSignInManager = kakaoManager self.appleSignInManager = appleSignInManager self.authService = authService + self.deviceService = deviceService self.userDefaultsUtils = userDefaultsUtils } @@ -100,7 +103,10 @@ final class SigninReactor: BaseReactor, Reactor { }) .flatMap { [weak self] _ -> Observable in guard let self = self else { return .error(BaseError.unknown) } - return self.fetchUserInfo() + + return .zip(self.fetchUserInfo(), self.registerDevice()) { mutation, _ in + return mutation + } } .catch { error -> Observable in if let httpError = error as? HTTPError { @@ -145,4 +151,8 @@ final class SigninReactor: BaseReactor, Reactor { } } } + + private func registerDevice() -> Observable { + return self.deviceService.registerDevice() + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index 25dc9d1..ba37d66 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -9,6 +9,7 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { kakaoManager: KakaoSignInManager.shared, appleSignInManager: AppleSigninManager.shared, authService: AuthService(), + deviceService: DeviceService(), userDefaultsUtils: UserDefaultsUtils() ) private weak var coordinator: SigninCoordinator? diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index 42103c3..2a9b60d 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -46,6 +46,7 @@ final class SignupReactor: BaseReactor, Reactor { private let socialType: SocialType private let token: String private let categoryService: CategoryServiceType + private let deviceService: DeviceServiceType private let imageService: ImageServiceType private let authService: AuthServiceType private var userDefaultsUtils: UserDefaultsUtils @@ -56,6 +57,7 @@ final class SignupReactor: BaseReactor, Reactor { categoryService: CategoryServiceType, imageService: ImageServiceType, authService: AuthServiceType, + deviceService: DeviceServiceType, userDefaultsUtils: UserDefaultsUtils ) { self.socialType = socialType @@ -63,6 +65,7 @@ final class SignupReactor: BaseReactor, Reactor { self.categoryService = categoryService self.imageService = imageService self.authService = authService + self.deviceService = deviceService self.userDefaultsUtils = userDefaultsUtils } @@ -202,7 +205,12 @@ final class SignupReactor: BaseReactor, Reactor { .do(onNext: { [weak self] response in self?.userDefaultsUtils.userToken = response.token }) - .map { _ in .pushWaiting } + .flatMap { [weak self] _ -> Observable in + guard let self = self else { return .error(BaseError.unknown) } + + return self.registerDevice() + .map { _ in .pushWaiting } + } .catch { error in if let httpError = error as? HTTPError { switch httpError { @@ -235,4 +243,8 @@ final class SignupReactor: BaseReactor, Reactor { .just(.showLoading(isShow: false)) ]) } + + private func registerDevice() -> Observable { + return self.deviceService.registerDevice() + } } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index d2ec763..f9749eb 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -23,6 +23,7 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { categoryService: CategoryService(), imageService: ImageService(), authService: AuthService(), + deviceService: DeviceService(), userDefaultsUtils: UserDefaultsUtils() ) super.init(nibName: nil, bundle: nil) diff --git a/3dollar-in-my-pocket-manager/models/dto/request/UpsertBossDeviceRequest.swift b/3dollar-in-my-pocket-manager/models/dto/request/UpsertBossDeviceRequest.swift new file mode 100644 index 0000000..980a0fb --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/dto/request/UpsertBossDeviceRequest.swift @@ -0,0 +1,23 @@ +import Foundation + +struct UpsertBossDeviceRequest: Encodable { + let pushPlatformType: String + let pushToken: String + + enum CodingKeys: String, CodingKey { + case pushPlatformType + case pushToken + } + + init(pushToken: String) { + self.pushPlatformType = "FCM" + self.pushToken = pushToken + } + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + + try container.encode(self.pushPlatformType, forKey: .pushPlatformType) + try container.encode(self.pushToken, forKey: .pushToken) + } +} diff --git a/3dollar-in-my-pocket-manager/services/DeviceService.swift b/3dollar-in-my-pocket-manager/services/DeviceService.swift new file mode 100644 index 0000000..d3a4231 --- /dev/null +++ b/3dollar-in-my-pocket-manager/services/DeviceService.swift @@ -0,0 +1,43 @@ +import RxSwift +import Alamofire +import FirebaseMessaging + +protocol DeviceServiceType { + func registerDevice() -> Observable +} + +struct DeviceService: DeviceServiceType { + func registerDevice() -> Observable { + return .create { observer in + Messaging.messaging().token { token, error in + if let error = error { + observer.onError(error) + } else { + guard let token = token else { + return observer.onError(BaseError.custom("token이 없습니다.")) + } + let urlString = HTTPUtils.url + "/boss/v1/device" + let headers = HTTPUtils.jsonWithTokenHeader() + let body = UpsertBossDeviceRequest(pushToken: token) + + HTTPUtils.defaultSession.request( + urlString, + method: .put, + parameters: body, + encoder: JSONParameterEncoder.default, + headers: headers + ).responseData { response in + if response.isSuccess() { + observer.onNext(()) + observer.onCompleted() + } else { + observer.processAPIError(response: response) + } + } + } + } + + return Disposables.create() + } + } +} diff --git a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift index 0026836..4aad7c2 100644 --- a/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/HTTPUtils.swift @@ -44,8 +44,8 @@ struct HTTPUtils { static func jsonWithTokenHeader() -> HTTPHeaders { var headers = [ - "Accept": "application/json", - "Authorization": UserDefaultsUtils().userToken + "Content-Type": "application/json", + "Authorization": "Bearer " + UserDefaultsUtils().userToken ] as HTTPHeaders headers.add(self.defaultUserAgent) From 3dbf261528363cb14f29a5a1dc1d2454878d3ebe Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Tue, 9 Aug 2022 22:53:01 +0900 Subject: [PATCH 144/166] =?UTF-8?q?feat:=20=EB=B0=B1=EA=B7=B8=EB=9D=BC?= =?UTF-8?q?=EC=9A=B4=EB=93=9C=20=ED=91=B8=EC=8B=9C=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 +++- .../AppDelegate.swift | 38 ++++++++++++++----- .../domains/setting/SettingReactor.swift | 19 ++++++++++ .../setting/SettingViewController.swift | 7 ++++ .../subviews/cells/SettingTableViewCell.swift | 26 ++++++++++++- .../models/presentation/PushType.swift | 18 +++++++++ .../models/presentation/SettingCellType.swift | 5 +++ .../models/presentation/User.swift | 6 ++- .../strings/en.lproj/Localizations.strings | 1 + .../services/DeviceService.swift | 25 ++++++++++++ 10 files changed, 140 insertions(+), 13 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/models/presentation/PushType.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 7dbf44c..070cbd8 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -102,6 +102,7 @@ 6E63FF6E281C1FEA00EC49DE /* EditStoreInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */; }; 6E63FF70281C203000EC49DE /* EditStoreInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */; }; 6E64B28427D836920055354B /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E64B28327D836920055354B /* TextField.swift */; }; + 6E69DD7728A29A7300C1D37A /* PushType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E69DD7628A29A7300C1D37A /* PushType.swift */; }; 6E6B4317285DB49C00AD84A5 /* FAQView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B4316285DB49C00AD84A5 /* FAQView.swift */; }; 6E6B4319285DB66800AD84A5 /* FAQViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B4318285DB66800AD84A5 /* FAQViewController.swift */; }; 6E6B431B285DB6B900AD84A5 /* FAQCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6B431A285DB6B900AD84A5 /* FAQCoordinator.swift */; }; @@ -339,6 +340,7 @@ 6E63FF6D281C1FEA00EC49DE /* EditStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoViewController.swift; sourceTree = ""; }; 6E63FF6F281C203000EC49DE /* EditStoreInfoCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditStoreInfoCoordinator.swift; sourceTree = ""; }; 6E64B28327D836920055354B /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; + 6E69DD7628A29A7300C1D37A /* PushType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushType.swift; sourceTree = ""; }; 6E6B4316285DB49C00AD84A5 /* FAQView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQView.swift; sourceTree = ""; }; 6E6B4318285DB66800AD84A5 /* FAQViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQViewController.swift; sourceTree = ""; }; 6E6B431A285DB6B900AD84A5 /* FAQCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAQCoordinator.swift; sourceTree = ""; }; @@ -1119,6 +1121,7 @@ 6EA53BA1284DD8DB007A3839 /* User.swift */, 6E21184A285DD94C00220E5A /* FAQ.swift */, 6E21184C285DE0A800220E5A /* FAQSectionModel.swift */, + 6E69DD7628A29A7300C1D37A /* PushType.swift */, ); path = presentation; sourceTree = ""; @@ -1535,6 +1538,7 @@ 6EC51D0827EEEF86009B5527 /* SalesToggleView.swift in Sources */, 6E64B28427D836920055354B /* TextField.swift in Sources */, 6EA53BA4284DE8B9007A3839 /* SettingCoordinator.swift in Sources */, + 6E69DD7728A29A7300C1D37A /* PushType.swift in Sources */, 6E473B9A27D86D9B00232139 /* CategorySelectView.swift in Sources */, 6E7A49DC27D8D03E00E6653C /* SignupRequest.swift in Sources */, 6E37AF6C27E7057F004FBE25 /* WaitingViewController.swift in Sources */, @@ -1695,7 +1699,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 10; + CURRENT_PROJECT_VERSION = 11; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1736,7 +1740,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 10; + CURRENT_PROJECT_VERSION = 11; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; diff --git a/3dollar-in-my-pocket-manager/AppDelegate.swift b/3dollar-in-my-pocket-manager/AppDelegate.swift index 639698d..e36002d 100644 --- a/3dollar-in-my-pocket-manager/AppDelegate.swift +++ b/3dollar-in-my-pocket-manager/AppDelegate.swift @@ -84,12 +84,20 @@ extension AppDelegate: UNUserNotificationCenterDelegate { print("🔥 willPresent userInfo: \(userInfo)") - if let pushType = userInfo["pushOptions"] as? String, - pushType == "BACKGROUND" { - self.renewStore() + if let pushTypeString = userInfo["pushOptions"] as? String { + switch PushType(rawValue: pushTypeString) { + case .background: + self.renewStore() + + completionHandler([]) + + case .push: + completionHandler([[.sound, .banner]]) + + case .unknown: + completionHandler([]) + } } - - completionHandler([[.sound, .banner]]) } func application( @@ -99,9 +107,19 @@ extension AppDelegate: UNUserNotificationCenterDelegate { ) { print("🔥 didReceiveRemoteNotification userInfo: \(userInfo)") - if let pushType = userInfo["pushOptions"] as? String, - pushType == "BACKGROUND" { - self.renewStore() + if let pushTypeString = userInfo["pushOptions"] as? String { + switch PushType(rawValue: pushTypeString) { + case .background: + self.renewStore() + + completionHandler(.noData) + + case .push: + completionHandler(UIBackgroundFetchResult.newData) + + case .unknown: + completionHandler(.failed) + } } completionHandler(UIBackgroundFetchResult.newData) @@ -117,8 +135,10 @@ extension AppDelegate: UNUserNotificationCenterDelegate { .flatMap { location -> Observable in return StoreService().renewStore(storeId: storeId, location: location) } - .bind(onNext: { _ in + .subscribe(onNext: { _ in print("🙆🏻‍♂️ 가게 영업정보 갱신 완료") + }, onError: { error in + print("가게 정보 업데이트 에러:\(error)") }) .disposed(by: self.appDisposeBag) } diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift index 83bdef1..ce758e2 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift @@ -8,12 +8,14 @@ final class SettingReactor: BaseReactor, Reactor { enum Action { case viewDidLoad case tapFCMToken + case tapNotificationSwitch(isEnable: Bool) case tapLogout case tapSignout } enum Mutation { case setUser(user: User) + case setNotificationEnable(isEnable: Bool) case showCopySuccessAlert case goToSignin case showLoading(isShow: Bool) @@ -28,14 +30,17 @@ final class SettingReactor: BaseReactor, Reactor { let goToSigninPublisher = PublishRelay() let showCopyTokenSuccessAlertPublisher = PublishRelay() private let authService: AuthServiceType + private let deviceService: DeviceServiceType private let userDefaults: UserDefaultsUtils init( authService: AuthServiceType, + deviceService: DeviceServiceType, userDefaults: UserDefaultsUtils, state: State = State(user: User()) ) { self.authService = authService + self.deviceService = deviceService self.userDefaults = userDefaults self.initialState = state } @@ -48,6 +53,17 @@ final class SettingReactor: BaseReactor, Reactor { case .tapFCMToken: return self.fetchFCMToken() + case .tapNotificationSwitch(let isEnable): + if isEnable { + return self.deviceService.registerDevice() + .map { .setNotificationEnable(isEnable: true) } + .catch { .just(.showErrorAlert($0)) } + } else { + return self.deviceService.unregisterDevice() + .map { .setNotificationEnable(isEnable: false) } + .catch { .just(.showErrorAlert($0)) } + } + case .tapLogout: return .concat([ .just(.showLoading(isShow: true)), @@ -71,6 +87,9 @@ final class SettingReactor: BaseReactor, Reactor { case .setUser(let user): newState.user = user + case .setNotificationEnable(let isEnable): + newState.user.isNotificationEnable = isEnable + case .showCopySuccessAlert: self.showCopyTokenSuccessAlertPublisher.accept(()) diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 74941b5..2361b05 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -7,6 +7,7 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator private let settingView = SettingView() let settingReactor = SettingReactor( authService: AuthService(), + deviceService: DeviceService(), userDefaults: UserDefaultsUtils() ) private weak var coordinator: SettingCoordinator? @@ -126,6 +127,12 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator self?.coordinator?.showLogoutAlert() }) .disposed(by: cell.disposeBag) + + cell.rightSwitch.rx.controlEvent(.valueChanged) + .withLatestFrom(cell.rightSwitch.rx.value) + .map { Reactor.Action.tapNotificationSwitch(isEnable: $0) } + .bind(to: self.settingReactor.action) + .disposed(by: cell.disposeBag) } .disposed(by: self.eventDisposeBag) diff --git a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift index 5d805ef..b764ca2 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/subviews/cells/SettingTableViewCell.swift @@ -38,6 +38,11 @@ final class SettingTableViewCell: BaseTableViewCell { $0.setTitle("setting_logout".localized, for: .normal) } + let rightSwitch = UISwitch().then { + $0.onTintColor = .green + $0.thumbTintColor = .white + } + override func prepareForReuse() { super.prepareForReuse() @@ -53,7 +58,8 @@ final class SettingTableViewCell: BaseTableViewCell { self.stackView, self.rightLabel, self.rightArrowImage, - self.rightButton + self.rightButton, + self.rightSwitch ]) } @@ -91,6 +97,11 @@ final class SettingTableViewCell: BaseTableViewCell { make.centerY.equalTo(self.containerView) make.right.equalTo(self.containerView).offset(-16) } + + self.rightSwitch.snp.makeConstraints { make in + make.centerY.equalTo(self.containerView) + make.right.equalTo(self.containerView).offset(-16) + } } func bind(cellType: SettingCellType) { @@ -102,24 +113,36 @@ final class SettingTableViewCell: BaseTableViewCell { self.rightLabel.isHidden = false self.rightButton.isHidden = true self.rightArrowImage.isHidden = true + self.rightSwitch.isHidden = true + + case .notification(let isEnable): + self.stackView.addArrangedSubview(self.titleLabel) + self.rightLabel.isHidden = true + self.rightButton.isHidden = true + self.rightArrowImage.isHidden = true + self.rightSwitch.isHidden = false + self.rightSwitch.isOn = isEnable case .contact: self.stackView.addArrangedSubview(self.titleLabel) self.rightLabel.isHidden = true self.rightButton.isHidden = true self.rightArrowImage.isHidden = false + self.rightSwitch.isHidden = true case .faq: self.stackView.addArrangedSubview(self.titleLabel) self.rightLabel.isHidden = true self.rightButton.isHidden = true self.rightArrowImage.isHidden = false + self.rightSwitch.isHidden = true case .privacy: self.stackView.addArrangedSubview(self.titleLabel) self.rightLabel.isHidden = true self.rightButton.isHidden = true self.rightArrowImage.isHidden = false + self.rightSwitch.isHidden = true case .signout(let socialType): self.stackView.addArrangedSubview(self.socialTypeImage) @@ -129,6 +152,7 @@ final class SettingTableViewCell: BaseTableViewCell { self.rightLabel.isHidden = true self.rightButton.isHidden = false self.rightArrowImage.isHidden = true + self.rightSwitch.isHidden = true } } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/PushType.swift b/3dollar-in-my-pocket-manager/models/presentation/PushType.swift new file mode 100644 index 0000000..d500e41 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/presentation/PushType.swift @@ -0,0 +1,18 @@ +enum PushType: String { + case background = "BACKGROUND" + case push = "PUSH" + case unknown + + init(rawValue: String) { + switch rawValue { + case PushType.background.rawValue: + self = .background + + case PushType.push.rawValue: + self = .push + + default: + self = .unknown + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift b/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift index d38982b..fc59053 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/SettingCellType.swift @@ -1,6 +1,7 @@ enum SettingCellType { case registerationNumber(String) case contact + case notification(isEnable: Bool) case faq case privacy case signout(SocialType) @@ -13,6 +14,9 @@ enum SettingCellType { case .contact: return "setting_contact".localized + case .notification: + return "setting_notification".localized + case .faq: return "setting_faq".localized @@ -27,6 +31,7 @@ enum SettingCellType { static func toSettingCellTypes(user: User) -> [SettingCellType] { return [ .registerationNumber(user.businessNumber), + .notification(isEnable: user.isNotificationEnable), .contact, .faq, .privacy, diff --git a/3dollar-in-my-pocket-manager/models/presentation/User.swift b/3dollar-in-my-pocket-manager/models/presentation/User.swift index de3c5b5..f3f121e 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/User.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/User.swift @@ -5,11 +5,13 @@ struct User: Equatable { let businessNumber: String let name: String let socialType: SocialType + var isNotificationEnable: Bool init(response: BossAccountInfoResponse) { self.bossId = response.bossId self.businessNumber = response.businessNumber self.name = response.name + self.isNotificationEnable = response.isSetupNotification self.socialType = response.socialType } @@ -17,11 +19,13 @@ struct User: Equatable { bossId: String = "", businessNumber: String = "", name: String = "", - socialType: SocialType = .kakao + socialType: SocialType = .kakao, + isNotificationEnable: Bool = true ) { self.bossId = bossId self.businessNumber = businessNumber self.name = name self.socialType = socialType + self.isNotificationEnable = isNotificationEnable } } diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 54ac39a..ca26afd 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -135,6 +135,7 @@ "setting_name_description" = "오늘도 적게 일하고 많이 버세요!"; "setting_registeration_number" = "사업자번호"; "setting_contact" = "가슴속 삼천원팀에 연락하기"; +"setting_notification" = "푸시알림"; "setting_faq" = "FAQ"; "setting_privacy" = "개인정보 처리방침"; "setting_logout" = "로그아웃"; diff --git a/3dollar-in-my-pocket-manager/services/DeviceService.swift b/3dollar-in-my-pocket-manager/services/DeviceService.swift index d3a4231..fc92335 100644 --- a/3dollar-in-my-pocket-manager/services/DeviceService.swift +++ b/3dollar-in-my-pocket-manager/services/DeviceService.swift @@ -4,6 +4,8 @@ import FirebaseMessaging protocol DeviceServiceType { func registerDevice() -> Observable + + func unregisterDevice() -> Observable } struct DeviceService: DeviceServiceType { @@ -40,4 +42,27 @@ struct DeviceService: DeviceServiceType { return Disposables.create() } } + + func unregisterDevice() -> Observable { + return .create { observer in + let urlString = HTTPUtils.url + "/boss/v1/device" + let headers = HTTPUtils.defaultHeader() + + HTTPUtils.defaultSession.request( + urlString, + method: .delete, + headers: headers + ) + .responseData { response in + if response.isSuccess() { + observer.onNext(()) + observer.onCompleted() + } else { + observer.processAPIError(response: response) + } + } + + return Disposables.create() + } + } } From eecaaff5947753cf1686b1f2e376c9e4a927bc5b Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 08:30:21 +0900 Subject: [PATCH 145/166] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=99=94=EB=A9=B4=20=EC=B9=B4=ED=85=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=85=80=20=EB=86=92=EC=9D=B4=20=EA=B3=84=EC=82=B0?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/shared/CategorySelectView.swift | 8 ++++---- .../services/ImageService.swift | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift b/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift index ecee4b2..85a14b2 100644 --- a/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/CategorySelectView.swift @@ -87,10 +87,10 @@ final class CategorySelectView: BaseView { var currentWidth: CGFloat = 0 for category in categories { - let stringWidth = (category.name as NSString).size(withAttributes: [ - .font: UIFont.regular(size: 14) as Any - ]).width - let cellWidth = stringWidth + 32 + let stringWidth = (category.name as NSString) + .size(withAttributes: [.font: UIFont.regular(size: 14) as Any]) + .width + let cellWidth = stringWidth + 36 if currentWidth + cellWidth >= maxWidth { // 셀 포함해서 한줄 넘어가는 경우 currentWidth = cellWidth + spaceBetweenCells diff --git a/3dollar-in-my-pocket-manager/services/ImageService.swift b/3dollar-in-my-pocket-manager/services/ImageService.swift index 9a19d80..e6aa4ac 100644 --- a/3dollar-in-my-pocket-manager/services/ImageService.swift +++ b/3dollar-in-my-pocket-manager/services/ImageService.swift @@ -28,13 +28,13 @@ struct ImageService: ImageServiceType { mimeType: "image/png" ) }, to: urlString, headers: headers) - .responseDecodable(of: ResponseContainer.self) { response in - if response.isSuccess() { - observer.processValue(response: response) - } else { - observer.processHTTPError(response: response) - } + .responseData(completionHandler: { response in + if response.isSuccess() { + observer.processValue(type: ImageUploadResponse.self, response: response) + } else { + observer.processAPIError(response: response) } + }) return Disposables.create() } @@ -65,13 +65,13 @@ struct ImageService: ImageServiceType { ) } }, to: urlString, headers: headers) - .responseDecodable(of: ResponseContainer<[ImageUploadResponse]>.self) { response in + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: [ImageUploadResponse].self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } From 8cca530e0eceff941b15af0318648a56c99b3810 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 08:34:41 +0900 Subject: [PATCH 146/166] =?UTF-8?q?fix:=20=EC=8A=B9=EC=9D=B8=20=EB=8C=80?= =?UTF-8?q?=EA=B8=B0=ED=99=94=EB=A9=B4=20=ED=95=98=EB=8B=A8=20inset=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 --- .../domains/membership/waiting/WaitingView.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift index 58eb28c..9d96a87 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingView.swift @@ -5,7 +5,9 @@ import Base final class WaitingView: BaseView { private let gradient = CAGradientLayer() - private let scrollView = UIScrollView() + private let scrollView = UIScrollView().then { + $0.contentInset = .init(top: 0, left: 0, bottom: 100, right: 0) + } private let scrollViewContainerView = UIView() From de54be42e7a6aadcbef5d62dc39539f39f1f060d Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 08:38:16 +0900 Subject: [PATCH 147/166] =?UTF-8?q?fix:=20=ED=86=B5=EA=B3=84=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20TOP3=20=ED=94=BC=EB=93=9C=EB=B0=B1?= =?UTF-8?q?=EC=9D=B4=200=EA=B0=9C=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=EC=97=90?= =?UTF-8?q?=EB=8A=94=20=ED=9A=8C=EC=83=89=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subviews/cells/TotalStatisticsTableViewCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift index 95dfd47..3055593 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/subviews/cells/TotalStatisticsTableViewCell.swift @@ -77,7 +77,7 @@ final class TotalStatisticsTableViewCell: BaseTableViewCell { self.titleLabel.text = "\(statistics.type.emoji) \(statistics.type.description)" self.countLabel.text = "\(statistics.count)개" self.progressView.progress = Float(statistics.ratio) - self.setProgressBar(isTopRate: isTopRate) + self.setProgressBar(isTopRate: statistics.count == 0 ? false : isTopRate) } private func setProgressBar(isTopRate: Bool) { From ae7b94c945a325ca6a83b5217824f066715a8b69 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 08:42:30 +0900 Subject: [PATCH 148/166] =?UTF-8?q?fix:=20=EA=B0=80=EA=B2=8C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=99=94=EB=A9=B4=EC=97=90=EC=84=9C=20=EB=93=A4?= =?UTF-8?q?=EC=96=B4=EA=B0=80=EB=8A=94=20=ED=99=94=EB=A9=B4=EB=93=A4=20swi?= =?UTF-8?q?pe=20back=20=EC=95=88=EB=90=98=EB=8D=98=20=EC=98=A4=EB=A5=98=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 --- .../domains/my/MyPageViewController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index e846ff0..2e43f73 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -32,6 +32,7 @@ final class MyPageViewController: BaseViewController { return UINavigationController(rootViewController: viewController).then { $0.isNavigationBarHidden = true + $0.interactivePopGestureRecognizer?.delegate = nil } } From fbc9746f87a1eadf9666fab304070c88a4cfc9bd Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 09:00:48 +0900 Subject: [PATCH 149/166] =?UTF-8?q?fix:=20=EA=B0=9C=EC=9D=B8=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=B2=98=EB=A6=AC=EB=B0=A9=EC=B9=A8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 2 ++ 3dollar-in-my-pocket-manager/Info.plist | 2 ++ .../domains/setting/SettingCoordinator.swift | 8 ++++++++ .../domains/setting/SettingViewController.swift | 14 ++++++++++++-- .../extensions/BundleExtensions.swift | 8 ++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 070cbd8..8d48c4e 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1723,6 +1723,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; + PRIVACY_URL = "https://www.notion.so/3-3d0a9c55ddd74086b63582c308ca285e"; PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager-dev"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1764,6 +1765,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; + PRIVACY_URL = "https://www.notion.so/3-3d0a9c55ddd74086b63582c308ca285e"; PRODUCT_BUNDLE_IDENTIFIER = "com.macgongmon.-dollar-in-my-pocket-manager"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index bcbe366..96d82d5 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,6 +2,8 @@ + PRIVACY_URL + $(PRIVACY_URL) API_URL $(API_URL) BGTaskSchedulerPermittedIdentifiers diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift index d9a43fb..9fe666c 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingCoordinator.swift @@ -14,6 +14,8 @@ protocol SettingCoordinator: BaseCoordinator, AnyObject { func goToKakaoTalkChannel() func pushFAQ() + + func goToPrivacy() } extension SettingCoordinator where Self: SettingViewController { @@ -71,4 +73,10 @@ extension SettingCoordinator where Self: SettingViewController { self.presenter.navigationController?.pushViewController(viewController, animated: true) } + + func goToPrivacy() { + guard let url = URL(string: Bundle.privacyUrl) else { return } + + UIApplication.shared.open(url, options: [:], completionHandler: nil) + } } diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 2361b05..978143e 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -45,7 +45,7 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator override func bindEvent() { self.settingView.tableView.rx.itemSelected - .filter { $0.row == 1 } + .filter { $0.row == 2 } .map { _ in () } .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .asDriver(onErrorJustReturn: ()) @@ -55,7 +55,7 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator .disposed(by: self.eventDisposeBag) self.settingView.tableView.rx.itemSelected - .filter { $0.row == 2 } + .filter { $0.row == 3 } .map { _ in () } .throttle(.milliseconds(500), scheduler: MainScheduler.instance) .asDriver(onErrorJustReturn: ()) @@ -64,6 +64,16 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator }) .disposed(by: self.eventDisposeBag) + self.settingView.tableView.rx.itemSelected + .filter { $0.row == 4 } + .map { _ in () } + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .asDriver(onErrorJustReturn: ()) + .drive(onNext: { [weak self] in + self?.coordinator?.goToPrivacy() + }) + .disposed(by: self.eventDisposeBag) + self.settingReactor.goToSigninPublisher .asDriver(onErrorJustReturn: ()) .drive(onNext: { [weak self] in diff --git a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift index d47d9fd..a5bc6f4 100644 --- a/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/BundleExtensions.swift @@ -24,4 +24,12 @@ extension Bundle { return kakaoChannelUrl } + + static var privacyUrl: String { + guard let privacyUrl = Bundle.main.infoDictionary?["PRIVACY_URL"] as? String else { + fatalError("PRIVACY_URL이 정의되지 않았습니다.") + } + + return privacyUrl + } } From e3dcef710fbeabd63deb0beacc8d72b1fec7b31c Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 09:16:12 +0900 Subject: [PATCH 150/166] =?UTF-8?q?fix:=20HTTP=20error=20429=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 --- 3dollar-in-my-pocket-manager/models/errors/HTTPError.swift | 4 ++++ .../resources/strings/en.lproj/Localizations.strings | 1 + 2 files changed, 5 insertions(+) diff --git a/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift b/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift index c5ac27e..e289da6 100644 --- a/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift +++ b/3dollar-in-my-pocket-manager/models/errors/HTTPError.swift @@ -4,6 +4,7 @@ public enum HTTPError: Int, Error { case forbidden = 403 case notFound = 404 case conflict = 409 + case tooManyRequests = 429 case internalServierError = 500 case badGateway = 502 case maintenance = 503 @@ -27,6 +28,9 @@ extension HTTPError { case .conflict: return "http_error_conflict".localized + case .tooManyRequests: + return "http_error_too_many_requests".localized + case .internalServierError: return "http_error_internal_server_error".localized diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index ca26afd..55acb2c 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -13,6 +13,7 @@ "http_error_forbidden" = "탈퇴한 사용자입니다."; "http_error_not_found" = "없는 데이터입니다."; "http_error_conflict" = "이미 존재하는 데이터입니다."; +"http_error_too_many_requests" = "일시적으로 너무 많은 요청이 발생하였습니다. 잠시 후 다시 이용해주세요"; "http_error_internal_server_error" = "서버에서 오류가 발생했습니다.\n잠시 후 다시 시도해주세요!"; "http_error_bad_gateway" = "일시적인 오류가 발생했어요..ㅠㅠ\n잠시 후 다시 시도해주세요!"; "http_error_maintenance" = "서버 점검중입니다.\n잠시 후 다시 시도해주세요."; From 2f73186011656b5bf52a4605b86537437b72bada Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 09:17:40 +0900 Subject: [PATCH 151/166] =?UTF-8?q?fix:=20403=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/strings/en.lproj/Localizations.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings index 55acb2c..4b283e3 100644 --- a/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings +++ b/3dollar-in-my-pocket-manager/resources/strings/en.lproj/Localizations.strings @@ -10,7 +10,7 @@ // HTTP Error "http_error_bad_request" = "요청에 오류가 있습니다.\n다시 확인해주세요."; "http_error_unauthorized" = "세션이 만료되었습니다.\n다시 로그인해주세요."; -"http_error_forbidden" = "탈퇴한 사용자입니다."; +"http_error_forbidden" = "권한이 없는 요청입니다."; "http_error_not_found" = "없는 데이터입니다."; "http_error_conflict" = "이미 존재하는 데이터입니다."; "http_error_too_many_requests" = "일시적으로 너무 많은 요청이 발생하였습니다. 잠시 후 다시 이용해주세요"; From f0b47763d66d5831cc4bff3cd4194f3153fd2427 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 09:24:53 +0900 Subject: [PATCH 152/166] =?UTF-8?q?fix:=20401=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=EC=8B=9C=20=ED=86=A0=ED=81=B0=20=ED=8F=AD?= =?UTF-8?q?=ED=8C=8C=EC=8B=9C=ED=82=A4=EA=B3=A0=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=99=94=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/base/BaseCoordinator.swift | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift index 3c54d7a..784ad51 100644 --- a/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift +++ b/3dollar-in-my-pocket-manager/domains/base/BaseCoordinator.swift @@ -24,7 +24,18 @@ extension BaseCoordinator where Self: BaseViewController { func showErrorAlert(error: Error) { - if let localizedError = error as? LocalizedError { + if let httpError = error as? HTTPError, + httpError == .unauthorized { + AlertUtils.showWithAction( + viewController: self, + title: nil, + message: httpError.description, + okbuttonTitle: "common_ok".localized + ) { + UserDefaultsUtils().clear() + self.goToSignin() + } + } else if let localizedError = error as? LocalizedError { AlertUtils.showWithAction( viewController: self, message: localizedError.errorDescription, @@ -48,4 +59,15 @@ extension BaseCoordinator where Self: BaseViewController { func showLoading(isShow: Bool) { LoadingManager.shared.showLoading(isShow: isShow) } + + private func goToSignin() { + guard let sceneDelegate = UIApplication + .shared + .connectedScenes + .first?.delegate as? SceneDelegate else { + return + } + + sceneDelegate.goToSignin() + } } From 7d868a4888073ae0a41f7b38ac9d6c99856cecfe Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 09:54:07 +0900 Subject: [PATCH 153/166] =?UTF-8?q?feat:=20=ED=86=B5=EA=B3=84=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=83=88=EB=A1=9C=EA=B3=A0=EC=B9=A8=20=EC=8B=9C,?= =?UTF-8?q?=20=EC=83=81=EB=8B=A8=EC=97=90=20=EB=A6=AC=EB=B7=B0=20=EA=B0=9C?= =?UTF-8?q?=EC=88=98=EB=8F=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20GlobalState=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/statistics/StatisticsReactor.swift | 22 +++++++++---- .../statistics/StatisticsViewController.swift | 15 ++------- .../DailyStatisticsReactor.swift | 32 +++++++++++++++++-- .../DailyStatisticsViewController.swift | 1 + .../TotalStatisticsReactor.swift | 12 +++++++ .../TotalStatisticsViewController.swift | 15 +-------- .../domains/shared/GlobalState.swift | 3 ++ 7 files changed, 65 insertions(+), 35 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift index 384903c..219ad7a 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift @@ -3,13 +3,12 @@ import RxRelay final class StatisticsReactor: Reactor { enum Action { - case updateTotalReviewCount(Int) case refresh case tapFilterButton(StatisticsFilterButton.FilterType) } enum Mutation { - case setTotalReviewCount(Int) + case updateReviewCount(Int) case setTab(StatisticsFilterButton.FilterType) case refresh(StatisticsFilterButton.FilterType) } @@ -21,19 +20,20 @@ final class StatisticsReactor: Reactor { let initialState: State let refreshPublisher = PublishRelay() + private let globalState: GlobalState - init(state: State = State( + init( + globalState: GlobalState, + state: State = State( totalReviewCount: 0, selectedFilter: .total )) { + self.globalState = globalState self.initialState = state } func mutate(action: Action) -> Observable { switch action { - case .updateTotalReviewCount(let totalReviewCount): - return .just(.setTotalReviewCount(totalReviewCount)) - case .tapFilterButton(let filterType): return .just(.setTab(filterType)) @@ -42,11 +42,19 @@ final class StatisticsReactor: Reactor { } } + func transform(mutation: Observable) -> Observable { + return .merge([ + mutation, + self.globalState.updateReviewCountPublisher + .map { .updateReviewCount($0) } + ]) + } + func reduce(state: State, mutation: Mutation) -> State { var newState = state switch mutation { - case .setTotalReviewCount(let totalReviewCount): + case .updateReviewCount(let totalReviewCount): newState.totalReviewCount = totalReviewCount case .setTab(let filterType): diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift index 6e6c1fd..cca809b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -5,16 +5,14 @@ import ReactorKit final class StatisticsViewController: BaseViewController, View { private let statisticsView = StatisticsView() - private let statisticsReactor = StatisticsReactor() + private let statisticsReactor = StatisticsReactor(globalState: GlobalState.shared) private let pageViewController = UIPageViewController( transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil ) - private let totalStatisticsViewController - = TotalStatisticsViewController.instance() - private let dailyStatisticsViewController - = DailyStatisticsViewController.instance() + private let totalStatisticsViewController = TotalStatisticsViewController.instance() + private let dailyStatisticsViewController = DailyStatisticsViewController.instance() private var pageViewControllers: [UIViewController] = [] private var isRefreshing = false @@ -86,7 +84,6 @@ final class StatisticsViewController: BaseViewController, View { } private func setupPageViewController() { - self.totalStatisticsViewController.delegate = self self.pageViewControllers = [ self.totalStatisticsViewController, self.dailyStatisticsViewController @@ -149,12 +146,6 @@ extension StatisticsViewController: UIPageViewControllerDelegate, UIPageViewCont } } -extension StatisticsViewController: TotalStatisticsDelegate { - func onUpdateTotalReviewCount(count: Int) { - self.statisticsReactor.action.onNext(.updateTotalReviewCount(count)) - } -} - extension StatisticsViewController: UIScrollViewDelegate { func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { if self.isRefreshing { diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift index cf7fb16..ee0c0fc 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsReactor.swift @@ -16,26 +16,34 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { case clearStatisticGroups case appendStatisticGroups([StatisticGroup]) case updateTableViewHeight([StatisticGroup]) + case setTotalReviewCount(Int) case showErrorAlert(Error) } struct State { var statisticGroups: [StatisticGroup] + var totalReviewCount: Int } let initialState: State let updateTableViewHeightPublisher = PublishRelay<[StatisticGroup]>() private let feedbackService: FeedbackServiceType + private let globalState: GlobalState private let userDefaults: UserDefaultsUtils private var endDate: Date? = Date() private var startDate = Date().addWeek(week: -1) init( feedbackService: FeedbackServiceType, + globalState: GlobalState, userDefaults: UserDefaultsUtils, - state: State = State(statisticGroups: []) + state: State = State( + statisticGroups: [], + totalReviewCount: 0 + ) ) { self.feedbackService = feedbackService + self.globalState = globalState self.userDefaults = userDefaults self.initialState = state } @@ -43,7 +51,10 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: - return self.fetchStatistics(startDate: self.startDate, endDate: self.endDate) + return .merge([ + self.fetchStatistics(startDate: self.startDate, endDate: self.endDate), + self.fetchStatistics() + ]) case .refresh: self.resetDate() @@ -75,6 +86,10 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { case .updateTableViewHeight(let statisticGroups): self.updateTableViewHeightPublisher.accept(statisticGroups) + case .setTotalReviewCount(let totalReviewCount): + newState.totalReviewCount = totalReviewCount + self.globalState.updateReviewCountPublisher.onNext(totalReviewCount) + case .showErrorAlert(let error): self.showErrorAlert.accept(error) } @@ -121,6 +136,19 @@ final class DailyStatisticsReactor: BaseReactor, Reactor { .catch { .just(.showErrorAlert($0)) } } + private func fetchStatistics() -> Observable { + let storeId = self.userDefaults.storeId + + return self.feedbackService.fetchTotalStatistics(storeId: storeId) + .map { $0.map(Statistic.init(response:)).sorted() } + .flatMap { statistics -> Observable in + let reviewTotalCount = statistics.map { $0.count }.reduce(0, +) + + return .just(.setTotalReviewCount(reviewTotalCount)) + } + .catch { .just(.showErrorAlert($0)) } + } + private func resetDate() { self.endDate = Date() self.startDate = Date().addWeek(week: -1) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift index 9e777db..d7364b6 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/daily-statistics/DailyStatisticsViewController.swift @@ -7,6 +7,7 @@ final class DailyStatisticsViewController: BaseViewController, View, DailyStatis private let dailyStatisticsView = DailyStatisticsView() private let dailyStatisticsReactor = DailyStatisticsReactor( feedbackService: FeedbackService(), + globalState: GlobalState.shared, userDefaults: UserDefaultsUtils() ) private weak var coordinator: DailyStatisticCoordinator? diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index 0050dd7..786d0b5 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -24,13 +24,16 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { let initialState = State() let updateTableViewHeightPublisher = PublishRelay<[Statistic]>() private let feedbackService: FeedbackServiceType + private let globalState: GlobalState private var userDefaults: UserDefaultsUtils init( feedbackService: FeedbackServiceType, + globalState: GlobalState, userDefaults: UserDefaultsUtils ) { self.feedbackService = feedbackService + self.globalState = globalState self.userDefaults = userDefaults } @@ -47,6 +50,14 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { } } + func transform(mutation: Observable) -> Observable { + return .merge([ + mutation, + self.globalState.updateReviewCountPublisher + .map { .setReviewTotalCount($0) } + ]) + } + func reduce(state: State, mutation: Mutation) -> State { var newState = state @@ -59,6 +70,7 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { case .setReviewTotalCount(let totalCount): newState.reviewTotalCount = totalCount + self.globalState.updateReviewCountPublisher.onNext(totalCount) case .showErrorAlert(let error): self.showErrorAlert.accept(error) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift index 8feeb30..9824c6f 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsViewController.swift @@ -5,15 +5,11 @@ import RxSwift import RxCocoa import ReactorKit -protocol TotalStatisticsDelegate: AnyObject { - func onUpdateTotalReviewCount(count: Int) -} - final class TotalStatisticsViewController: BaseViewController, View, TotalStatisticsCoordinator { - weak var delegate: TotalStatisticsDelegate? private let totalStatisticsView = TotalStatisticsView() private let totalStatisticsReactor = TotalStatisticsReactor( feedbackService: FeedbackService(), + globalState: GlobalState.shared, userDefaults: UserDefaultsUtils() ) private weak var coordinator: TotalStatisticsCoordinator? @@ -85,15 +81,6 @@ final class TotalStatisticsViewController: BaseViewController, View, TotalStatis cell.bind(statistics: statistic, isTopRate: row < 3) } .disposed(by: self.disposeBag) - - reactor.state - .map { $0.reviewTotalCount } - .distinctUntilChanged() - .asDriver(onErrorJustReturn: 0) - .drive(onNext: { [weak self] reviewTotalCount in - self?.delegate?.onUpdateTotalReviewCount(count: reviewTotalCount) - }) - .disposed(by: self.disposeBag) } func refreshData() { diff --git a/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift b/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift index 5093b32..5b90069 100644 --- a/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift +++ b/3dollar-in-my-pocket-manager/domains/shared/GlobalState.swift @@ -6,4 +6,7 @@ final class GlobalState { /// 가게 정보 업데이트 리스너 let updateStorePublisher = PublishSubject() + + /// 리뷰 개수 업데이트 리스너 + let updateReviewCountPublisher = PublishSubject() } From 21917dc316ef46c3bbb12744709bb8324abb0e7c Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Thu, 11 Aug 2022 11:07:00 +0900 Subject: [PATCH 154/166] =?UTF-8?q?fix:=20=EB=A9=94=EB=89=B4=20=EB=AA=A8?= =?UTF-8?q?=EB=91=90=EC=82=AD=EC=A0=9C=20=EB=8F=99=EC=9E=91=20=EC=95=88?= =?UTF-8?q?=ED=95=98=EB=8D=98=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit-menu/EditMenuReactor.swift | 29 +++++++++++-------- .../models/presentation/Menu.swift | 4 +++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index ea5b51a..eca126b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -87,7 +87,10 @@ final class EditMenuReactor: BaseReactor, Reactor { } case .addPhoto(let index, let photo): - return .just(.setPhoto(index: index, photo: photo)) + return .merge([ + .just(.setPhoto(index: index, photo: photo)), + .just(.refreshSaveButtonEnable) + ]) case .inputMenuName(let index, let name): return .merge([ @@ -146,9 +149,7 @@ final class EditMenuReactor: BaseReactor, Reactor { return .just(.toggleDeleteMode) } } else { - if let invalidIndex = self.getInvalidStoreIndex( - store: self.currentState.store - ) { + if let invalidIndex = self.getInvalidStoreIndex(store: self.currentState.store) { return .just(.setInvalidMenuIndex(invalidIndex)) } else { return .concat([ @@ -224,17 +225,21 @@ final class EditMenuReactor: BaseReactor, Reactor { } private func updateStore(store: Store) -> Observable { - let newPhotos = store.menus + var validMenuStore = store + + validMenuStore.menus = store.menus.filter { !$0.isPlaceholder } + + let newPhotos = validMenuStore.menus .filter { $0.photo != nil } .compactMap { $0.photo } - let newPhotosIndex = store.menus + let newPhotosIndex = validMenuStore.menus .filter { $0.photo != nil } - .compactMap { store.menus.firstIndex(of: $0) } + .compactMap { validMenuStore.menus.firstIndex(of: $0) } if newPhotos.isEmpty { - return self.storeService.updateStore(store: store) + return self.storeService.updateStore(store: validMenuStore) .do(onNext: { [weak self] _ in - self?.globalState.updateStorePublisher.onNext(store) + self?.globalState.updateStorePublisher.onNext(validMenuStore) }) .map { _ in Mutation.pop } .catch { @@ -246,7 +251,7 @@ final class EditMenuReactor: BaseReactor, Reactor { } else { return self.imageService.uploadImages(images: newPhotos, fileType: .menu) .flatMap { response -> Observable in - var newStore = store + var newStore = validMenuStore let imageURLs = response.map { $0.imageUrl } for index in imageURLs.indices { @@ -269,13 +274,13 @@ final class EditMenuReactor: BaseReactor, Reactor { } private func getInvalidStoreIndex(store: Store) -> Int? { - return store.menus.map { $0.isValid }.firstIndex(of: false) + return store.menus.filter { !$0.isPlaceholder }.map { $0.isValid }.firstIndex(of: false) } private func getValidStore(store: Store) -> Store { var newStore = store - newStore.menus = newStore.menus.filter { $0.isValid } + newStore.menus = newStore.menus.filter { !$0.isValid } return newStore } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift index 58a67bf..d029fa5 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift @@ -14,6 +14,10 @@ struct Menu: Equatable { && (price != 0) } + var isPlaceholder: Bool { + return self.photo == nil && self.imageUrl == "" && self.name == "" && self.price == 0 + } + init(response: BossStoreMenuResponse) { self.photo = nil self.imageUrl = response.imageUrl From 8c687da31be422de8fcc5f98f97e96b65469d7f7 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 13 Aug 2022 11:58:41 +0900 Subject: [PATCH 155/166] =?UTF-8?q?feat:=20=ED=8C=8C=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=ED=94=84=EB=A1=9C=EB=8D=95?= =?UTF-8?q?=EC=85=98=20=EC=84=A4=EC=A0=95=20=EB=B0=8F=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EB=8D=95=EC=85=98=20API=20URL=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 41 +++++++++++++++---- 3dollar-in-my-pocket-manager/Info.plist | 4 +- .../firebase/GoogleService-Info-Dev.plist} | 0 .../firebase/GoogleService-Info-Prod.plist | 36 ++++++++++++++++ 4 files changed, 72 insertions(+), 9 deletions(-) rename 3dollar-in-my-pocket-manager/{GoogleService-Info.plist => resources/firebase/GoogleService-Info-Dev.plist} (100%) create mode 100644 3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8d48c4e..fe44be5 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -62,7 +62,6 @@ 6E473BA427D874C500232139 /* PhotoUploadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA327D874C500232139 /* PhotoUploadView.swift */; }; 6E473BA627D87A3D00232139 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */; }; 6E479462280AE42000A3D96C /* PaddingLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E479461280AE42000A3D96C /* PaddingLabel.swift */; }; - 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */; }; 6E5678C1285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */; }; 6E5D8895288B7A2400DE811A /* splash.json in Resources */ = {isa = PBXBuildFile; fileRef = 6E5D8894288B7A2400DE811A /* splash.json */; }; 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */; }; @@ -117,6 +116,7 @@ 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */; }; 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; + 6E72310F28A7488700B12502 /* GoogleService-Info-Dev.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E72310E28A7488700B12502 /* GoogleService-Info-Dev.plist */; }; 6E7964AB28420D2C005EA0E2 /* DailyStatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */; }; 6E7964AE28421074005EA0E2 /* StatisticGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */; }; 6E7964B028423608005EA0E2 /* DailyStatisticCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AF28423608005EA0E2 /* DailyStatisticCoordinator.swift */; }; @@ -300,7 +300,6 @@ 6E473BA327D874C500232139 /* PhotoUploadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoUploadView.swift; sourceTree = ""; }; 6E473BA527D87A3D00232139 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = ""; }; 6E479461280AE42000A3D96C /* PaddingLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddingLabel.swift; sourceTree = ""; }; - 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 6E5678C0285D8B4E0066C037 /* MyStoreInfoMenuEmptyCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoMenuEmptyCell.swift; sourceTree = ""; }; 6E5D8894288B7A2400DE811A /* splash.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = splash.json; sourceTree = ""; }; 6E5DCE5C27FDAE0000CA58EE /* MapService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapService.swift; sourceTree = ""; }; @@ -354,6 +353,7 @@ 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageViewExtensions.swift; sourceTree = ""; }; 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoIntroductionCell.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; + 6E72310E28A7488700B12502 /* GoogleService-Info-Dev.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info-Dev.plist"; sourceTree = ""; }; 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsReactor.swift; sourceTree = ""; }; 6E7964AD28421074005EA0E2 /* StatisticGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticGroup.swift; sourceTree = ""; }; 6E7964AF28423608005EA0E2 /* DailyStatisticCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticCoordinator.swift; sourceTree = ""; }; @@ -811,6 +811,14 @@ path = cells; sourceTree = ""; }; + 6E72310B28A7484C00B12502 /* firebase */ = { + isa = PBXGroup; + children = ( + 6E72310E28A7488700B12502 /* GoogleService-Info-Dev.plist */, + ); + path = firebase; + sourceTree = ""; + }; 6E89A862281E5A2300B795EF /* cells */ = { isa = PBXGroup; children = ( @@ -940,7 +948,6 @@ 6EB94EAC27CB209000609E77 /* Assets.xcassets */, 6EB94EAE27CB209000609E77 /* LaunchScreen.storyboard */, 6EB94EB127CB209000609E77 /* Info.plist */, - 6E4C8BC92835164D005D9D9B /* GoogleService-Info.plist */, ); path = "3dollar-in-my-pocket-manager"; sourceTree = ""; @@ -1042,6 +1049,7 @@ 6ED883A027CB3C3A00278E14 /* resources */ = { isa = PBXGroup; children = ( + 6E72310B28A7484C00B12502 /* firebase */, 6EEBC7BA28731F1C00CBA0F0 /* lottie */, 6E5D8892288B7A1500DE811A /* lottie */, 6EE0CFAA27CB5B970027A426 /* strings */, @@ -1209,6 +1217,7 @@ 6EB94E9E27CB208F00609E77 /* Resources */, A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */, 6EBD5BF1287564D900B1D0F8 /* Embed Frameworks */, + 6EA3D2B328A748E600E4C389 /* Setup Firebase */, ); buildRules = ( ); @@ -1310,10 +1319,10 @@ buildActionMask = 2147483647; files = ( 6E5D8895288B7A2400DE811A /* splash.json in Resources */, + 6E72310F28A7488700B12502 /* GoogleService-Info-Dev.plist in Resources */, 6ED883A327CB3C6600278E14 /* AppleSDGothicNeoEB00.ttf in Resources */, 6E2FF3AE28A1F79A00497FE4 /* loading.json in Resources */, 6EE0CFAD27CB5BA40027A426 /* Localizations.strings in Resources */, - 6E4C8BCB2835164D005D9D9B /* GoogleService-Info.plist in Resources */, 6EB94EB027CB209000609E77 /* LaunchScreen.storyboard in Resources */, 6EB94EAD27CB209000609E77 /* Assets.xcassets in Resources */, ); @@ -1344,6 +1353,24 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + 6EA3D2B328A748E600E4C389 /* Setup Firebase */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Setup Firebase"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\ncase \"${CONFIGURATION}\" in\n \"Debug\" )\ncp -r \"$SRCROOT/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist\" \"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist\" ;;\n \"Release\" )\ncp -r \"$SRCROOT/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist\" \"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist\" ;;\n*)\n;;\nesac\n"; + }; A58E810CE5357D74C009D053 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1699,7 +1726,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 12; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1736,12 +1763,12 @@ isa = XCBuildConfiguration; baseConfigurationReference = 2485BFD46CCBCCA4FDB38FB3 /* Pods-3dollar-in-my-pocket-manager.release.xcconfig */; buildSettings = { - API_URL = "https://dev.threedollars.co.kr"; + API_URL = "https://threedollars.co.kr"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 12; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; diff --git a/3dollar-in-my-pocket-manager/Info.plist b/3dollar-in-my-pocket-manager/Info.plist index 96d82d5..d5b4ddd 100644 --- a/3dollar-in-my-pocket-manager/Info.plist +++ b/3dollar-in-my-pocket-manager/Info.plist @@ -2,8 +2,6 @@ - PRIVACY_URL - $(PRIVACY_URL) API_URL $(API_URL) BGTaskSchedulerPermittedIdentifiers @@ -32,6 +30,8 @@ NMFClientId h14485sw4a + PRIVACY_URL + $(PRIVACY_URL) UIAppFonts AppleSDGothicNeoEB00.ttf diff --git a/3dollar-in-my-pocket-manager/GoogleService-Info.plist b/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist similarity index 100% rename from 3dollar-in-my-pocket-manager/GoogleService-Info.plist rename to 3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist diff --git a/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist b/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist new file mode 100644 index 0000000..f840338 --- /dev/null +++ b/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist @@ -0,0 +1,36 @@ + + + + + CLIENT_ID + 263138332433-0fu6q5eobik1o22hhi94k4fufh9rrgli.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.263138332433-0fu6q5eobik1o22hhi94k4fufh9rrgli + ANDROID_CLIENT_ID + 263138332433-gp9ojbcge31esjka42l0675lh2ub3460.apps.googleusercontent.com + API_KEY + AIzaSyCPqYHN6vena7joXA-2VcIcF_r-StWCgdg + GCM_SENDER_ID + 263138332433 + PLIST_VERSION + 1 + BUNDLE_ID + com.macgongmon.-dollar-in-my-pocket-manager + PROJECT_ID + dollars-in-my-pocket-manager + STORAGE_BUCKET + dollars-in-my-pocket-manager.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:263138332433:ios:ddc6d1918af961b587c6b0 + + \ No newline at end of file From 92aebfbab5b01d446daef5d55f801d1994c66910 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 13 Aug 2022 12:04:54 +0900 Subject: [PATCH 156/166] =?UTF-8?q?=ED=8C=8C=EC=9D=B4=EC=96=B4=EB=B2=A0?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../firebase/GoogleService-Info-Dev.plist | 36 ------------------- .../firebase/GoogleService-Info-Prod.plist | 36 ------------------- 2 files changed, 72 deletions(-) delete mode 100644 3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist delete mode 100644 3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist diff --git a/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist b/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist deleted file mode 100644 index 22db871..0000000 --- a/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Dev.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CLIENT_ID - 203450930638-vbkv0dosatfehq7ci95rrgh59agaej5l.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.203450930638-vbkv0dosatfehq7ci95rrgh59agaej5l - ANDROID_CLIENT_ID - 203450930638-g19op59heflko3va5je3snrs1rpurfr6.apps.googleusercontent.com - API_KEY - AIzaSyBtY-FC0ar0VUogKVTzDlDx0PCiocpHauI - GCM_SENDER_ID - 203450930638 - PLIST_VERSION - 1 - BUNDLE_ID - com.macgongmon.-dollar-in-my-pocket-manager-dev - PROJECT_ID - dollars-manager-dev - STORAGE_BUCKET - dollars-manager-dev.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:203450930638:ios:a2dbc0db78d718f165479f - - \ No newline at end of file diff --git a/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist b/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist deleted file mode 100644 index f840338..0000000 --- a/3dollar-in-my-pocket-manager/resources/firebase/GoogleService-Info-Prod.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CLIENT_ID - 263138332433-0fu6q5eobik1o22hhi94k4fufh9rrgli.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.263138332433-0fu6q5eobik1o22hhi94k4fufh9rrgli - ANDROID_CLIENT_ID - 263138332433-gp9ojbcge31esjka42l0675lh2ub3460.apps.googleusercontent.com - API_KEY - AIzaSyCPqYHN6vena7joXA-2VcIcF_r-StWCgdg - GCM_SENDER_ID - 263138332433 - PLIST_VERSION - 1 - BUNDLE_ID - com.macgongmon.-dollar-in-my-pocket-manager - PROJECT_ID - dollars-in-my-pocket-manager - STORAGE_BUCKET - dollars-in-my-pocket-manager.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:263138332433:ios:ddc6d1918af961b587c6b0 - - \ No newline at end of file From 286046695826682330eba32aeab08a354e175c98 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 13 Aug 2022 12:05:29 +0900 Subject: [PATCH 157/166] =?UTF-8?q?feat:=20gitIgnore=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 3ee782a..bb949cf 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,5 @@ iOSInjectionProject/ # End of https://www.gitignore.io/api/swift,xcode,cocoapods R.generated.swift +GoogleService-Info-Dev.plist +GoogleService-Info-Prod.plist From 7090868689d22a276b6bbf9329225341ee407964 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 13 Aug 2022 18:28:38 +0900 Subject: [PATCH 158/166] =?UTF-8?q?fix:=20=ED=86=B5=EA=B3=84=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=ED=81=AC=EB=9E=98=EC=8B=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../total-statistics/TotalStatisticsReactor.swift | 8 -------- 1 file changed, 8 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift index 786d0b5..530c6cb 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/total-statistics/TotalStatisticsReactor.swift @@ -50,14 +50,6 @@ final class TotalStatisticsReactor: BaseReactor, Reactor { } } - func transform(mutation: Observable) -> Observable { - return .merge([ - mutation, - self.globalState.updateReviewCountPublisher - .map { .setReviewTotalCount($0) } - ]) - } - func reduce(state: State, mutation: Mutation) -> State { var newState = state From b77a5dfe7ad6ab81ba45b957354a834ad93b0457 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 13 Aug 2022 18:34:07 +0900 Subject: [PATCH 159/166] =?UTF-8?q?fix:=20=EB=A9=94=EB=89=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=ED=99=94=EB=A9=B4=EC=97=90=EC=84=9C=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=B2=84=ED=8A=BC=20=ED=84=B0=EC=B9=98=20=EC=8B=9C?= =?UTF-8?q?,=20=EB=A9=94=EB=89=B4=20=EB=8B=A4=20=EC=82=AC=EB=9D=BC?= =?UTF-8?q?=EC=A7=80=EB=8A=94=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/my/my-store-info/edit-menu/EditMenuReactor.swift | 2 +- 3dollar-in-my-pocket-manager/models/presentation/Menu.swift | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index eca126b..1dae1d4 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -280,7 +280,7 @@ final class EditMenuReactor: BaseReactor, Reactor { private func getValidStore(store: Store) -> Store { var newStore = store - newStore.menus = newStore.menus.filter { !$0.isValid } + newStore.menus = newStore.menus.filter { $0.isValid } return newStore } } diff --git a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift index d029fa5..b567abd 100644 --- a/3dollar-in-my-pocket-manager/models/presentation/Menu.swift +++ b/3dollar-in-my-pocket-manager/models/presentation/Menu.swift @@ -9,9 +9,7 @@ struct Menu: Equatable { var price: Int var isValid: Bool { - return (self.photo != nil || !self.imageUrl.isEmpty) - && (!name.isEmpty) - && (price != 0) + return (self.photo != nil || !self.imageUrl.isEmpty) && (!name.isEmpty) && (price != 0) } var isPlaceholder: Bool { From bf527a5e976d83678672528ab0d11edeb9e66ea4 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sat, 13 Aug 2022 19:15:53 +0900 Subject: [PATCH 160/166] =?UTF-8?q?fix:=20=EC=8A=B9=EC=9D=B8=20=EB=B0=98?= =?UTF-8?q?=EB=A0=A4=ED=9B=84=20=EC=9E=AC=EC=8B=A4=ED=96=89=ED=95=98?= =?UTF-8?q?=EA=B1=B0=EB=82=98=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83?= =?UTF-8?q?=EC=8B=9C=20401=EC=97=90=EB=9F=AC=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=95=88=EB=90=9C=EA=B3=B3=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/ObserverExtensions.swift | 6 ++- .../services/AuthService.swift | 27 ++++++------ .../services/CategoryService.swift | 9 ++-- .../services/FeedbackService.swift | 28 +++++++------ .../services/StoreService.swift | 42 +++++++++++-------- 5 files changed, 66 insertions(+), 46 deletions(-) diff --git a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift index a4695d0..3dbb3d5 100644 --- a/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift +++ b/3dollar-in-my-pocket-manager/extensions/ObserverExtensions.swift @@ -45,7 +45,11 @@ extension AnyObserver { func processAPIError(response: AFDataResponse) { if let value = response.value, let errorContainer: ResponseContainer = JsonUtils.decode(data: value) { - self.onError(BaseError.custom(errorContainer.message)) + if errorContainer.resultCode == "UA000" { // 401에러만 먼저 처리, 나중에 다른 처리가 필요하면 Enum으로 추가 필요 + self.onError(HTTPError.unauthorized) + } else { + self.onError(BaseError.custom(errorContainer.message)) + } } else { self.processHTTPError(response: response) } diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index c4a7b5a..5bd7458 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -56,13 +56,14 @@ struct AuthService: AuthServiceType { urlString, method: .post, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: String.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } @@ -118,13 +119,14 @@ struct AuthService: AuthServiceType { urlString, method: .delete, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: String.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } @@ -139,13 +141,14 @@ struct AuthService: AuthServiceType { urlString, method: .get, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: BossAccountInfoResponse.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } diff --git a/3dollar-in-my-pocket-manager/services/CategoryService.swift b/3dollar-in-my-pocket-manager/services/CategoryService.swift index f2330de..616d3ed 100644 --- a/3dollar-in-my-pocket-manager/services/CategoryService.swift +++ b/3dollar-in-my-pocket-manager/services/CategoryService.swift @@ -15,13 +15,14 @@ struct CategoryService: CategoryServiceType { urlString, method: .get, headers: headers - ).responseDecodable(of: ResponseContainer<[StoreCategoryResponse]>.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: [StoreCategoryResponse].self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } diff --git a/3dollar-in-my-pocket-manager/services/FeedbackService.swift b/3dollar-in-my-pocket-manager/services/FeedbackService.swift index 9731961..491f5c7 100644 --- a/3dollar-in-my-pocket-manager/services/FeedbackService.swift +++ b/3dollar-in-my-pocket-manager/services/FeedbackService.swift @@ -26,15 +26,17 @@ struct FeedbackService: FeedbackServiceType { urlString, method: .get, headers: headers - ).responseDecodable( - of: ResponseContainer<[BossStoreFeedbackTypeResponse]>.self - ) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue( + type: [BossStoreFeedbackTypeResponse].self, + response: response + ) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } @@ -49,15 +51,17 @@ struct FeedbackService: FeedbackServiceType { urlString, method: .get, headers: headers - ).responseDecodable( - of: ResponseContainer<[BossStoreFeedbackCountResponse]>.self - ) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue( + type: [BossStoreFeedbackCountResponse].self, + response: response + ) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } diff --git a/3dollar-in-my-pocket-manager/services/StoreService.swift b/3dollar-in-my-pocket-manager/services/StoreService.swift index 7f71709..d74e5dc 100644 --- a/3dollar-in-my-pocket-manager/services/StoreService.swift +++ b/3dollar-in-my-pocket-manager/services/StoreService.swift @@ -30,13 +30,14 @@ struct StoreService: StoreServiceType { urlString, method: .get, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: BossStoreInfoResponse.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } @@ -56,13 +57,14 @@ struct StoreService: StoreServiceType { method: .post, parameters: parameters, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: String.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } @@ -77,13 +79,14 @@ struct StoreService: StoreServiceType { urlString, method: .delete, headers: headers - ).responseDecodable(of: ResponseContainer.self) { response in + ) + .responseData(completionHandler: { response in if response.isSuccess() { - observer.processValue(response: response) + observer.processValue(type: String.self, response: response) } else { - observer.processHTTPError(response: response) + observer.processAPIError(response: response) } - } + }) return Disposables.create() } @@ -134,13 +137,18 @@ struct StoreService: StoreServiceType { method: .get, parameters: parameters, headers: headers - ).responseDecodable(of: ResponseContainer<[BossStoreAroundInfoResponse]>.self) { ressponse in - if ressponse.isSuccess() { - observer.processValue(response: ressponse) + ) + .responseData(completionHandler: { response in + if response.isSuccess() { + observer.processValue( + type: [BossStoreAroundInfoResponse].self, + response: response + ) } else { - observer.processHTTPError(response: ressponse) + observer.processAPIError(response: response) } - } + }) + return Disposables.create() } } From 581da445bb0c53729266dbec22044ff5ade4fc28 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 14 Aug 2022 00:37:33 +0900 Subject: [PATCH 161/166] =?UTF-8?q?feat:=20GA=20=EC=9D=B4=EB=B2=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=8B=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 44 ++++- .../3dollar-in-my-pocket-manager.xcscheme | 6 + 3dollar-in-my-pocket-manager/Info.plist | 2 + .../domains/home/HomeReactor.swift | 8 +- .../domains/home/HomeViewController.swift | 3 +- .../domains/main/MainTabController.swift | 18 +- .../membership/signin/SigninReactor.swift | 10 +- .../signin/SigninViewController.swift | 8 +- .../membership/signup/SignupReactor.swift | 11 +- .../signup/SignupViewController.swift | 3 +- .../membership/waiting/WaitingReactor.swift | 13 +- .../waiting/WaitingViewController.swift | 4 +- .../domains/my/MyPageViewController.swift | 11 ++ .../my/my-store-info/MyStoreInfoReactor.swift | 22 ++- .../MyStoreInfoViewController.swift | 3 +- .../EditIntroductionReactor.swift | 13 +- .../EditIntroductionViewController.swift | 4 +- .../edit-menu/EditMenuReactor.swift | 16 +- .../edit-menu/EditMenuViewController.swift | 4 +- .../edit-schedule/EditScheduleReactor.swift | 13 +- .../EditScheduleViewController.swift | 4 +- .../EditStoreInfoReactor.swift | 14 +- .../EditStoreInfoViewController.swift | 3 +- .../my/statistics/StatisticsReactor.swift | 11 +- .../statistics/StatisticsViewController.swift | 5 +- .../subviews/StatisticsFilterButton.swift | 10 ++ .../domains/setting/SettingReactor.swift | 17 +- .../setting/SettingViewController.swift | 3 +- .../managers/analytics/AnalyticsEvent.swift | 88 ++++++++++ .../managers/analytics/AnalyticsManager.swift | 17 ++ .../managers/analytics/AnalyticsScreen.swift | 94 +++++++++++ .../managers/analytics/GAManager.swift | 158 ++++++++++++++++++ .../models/analytics/BottomTabType.swift | 18 ++ .../models/analytics/MyTopTabType.swift | 14 ++ .../services/AuthService.swift | 8 +- .../utils/UserDefaultsUtils.swift | 4 +- 36 files changed, 645 insertions(+), 39 deletions(-) create mode 100644 3dollar-in-my-pocket-manager/managers/analytics/AnalyticsEvent.swift create mode 100644 3dollar-in-my-pocket-manager/managers/analytics/AnalyticsManager.swift create mode 100644 3dollar-in-my-pocket-manager/managers/analytics/AnalyticsScreen.swift create mode 100644 3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift create mode 100644 3dollar-in-my-pocket-manager/models/analytics/BottomTabType.swift create mode 100644 3dollar-in-my-pocket-manager/models/analytics/MyTopTabType.swift diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index fe44be5..8671874 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -115,6 +115,12 @@ 6E6C9C77280BEE26009AFAE8 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 6E6C9C76280BEE26009AFAE8 /* Kingfisher */; }; 6E6C9C79280BEF7D009AFAE8 /* UIImageViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */; }; 6E6C9C7B280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */; }; + 6E6EDF1E28A7B37A00D1A6ED /* AnalyticsEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EDF1D28A7B37A00D1A6ED /* AnalyticsEvent.swift */; }; + 6E6EDF2028A7B47D00D1A6ED /* AnalyticsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EDF1F28A7B47D00D1A6ED /* AnalyticsScreen.swift */; }; + 6E6EDF2328A7E76100D1A6ED /* BottomTabType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EDF2228A7E76100D1A6ED /* BottomTabType.swift */; }; + 6E6EDF2528A7E84200D1A6ED /* MyTopTabType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EDF2428A7E84200D1A6ED /* MyTopTabType.swift */; }; + 6E6EDF2728A7EB0300D1A6ED /* GAManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EDF2628A7EB0300D1A6ED /* GAManager.swift */; }; + 6E6EDF2928A7EB0F00D1A6ED /* AnalyticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6EDF2828A7EB0F00D1A6ED /* AnalyticsManager.swift */; }; 6E6F98F527DE0BAE001302A6 /* FileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6F98F427DE0BAE001302A6 /* FileType.swift */; }; 6E72310F28A7488700B12502 /* GoogleService-Info-Dev.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6E72310E28A7488700B12502 /* GoogleService-Info-Dev.plist */; }; 6E7964AB28420D2C005EA0E2 /* DailyStatisticsReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */; }; @@ -352,6 +358,12 @@ 6E6C9C73280BE7B3009AFAE8 /* MyStoreInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoViewController.swift; sourceTree = ""; }; 6E6C9C78280BEF7D009AFAE8 /* UIImageViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageViewExtensions.swift; sourceTree = ""; }; 6E6C9C7A280BF1EF009AFAE8 /* MyStoreInfoIntroductionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStoreInfoIntroductionCell.swift; sourceTree = ""; }; + 6E6EDF1D28A7B37A00D1A6ED /* AnalyticsEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsEvent.swift; sourceTree = ""; }; + 6E6EDF1F28A7B47D00D1A6ED /* AnalyticsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsScreen.swift; sourceTree = ""; }; + 6E6EDF2228A7E76100D1A6ED /* BottomTabType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomTabType.swift; sourceTree = ""; }; + 6E6EDF2428A7E84200D1A6ED /* MyTopTabType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyTopTabType.swift; sourceTree = ""; }; + 6E6EDF2628A7EB0300D1A6ED /* GAManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GAManager.swift; sourceTree = ""; }; + 6E6EDF2828A7EB0F00D1A6ED /* AnalyticsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsManager.swift; sourceTree = ""; }; 6E6F98F427DE0BAE001302A6 /* FileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileType.swift; sourceTree = ""; }; 6E72310E28A7488700B12502 /* GoogleService-Info-Dev.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info-Dev.plist"; sourceTree = ""; }; 6E7964AA28420D2C005EA0E2 /* DailyStatisticsReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyStatisticsReactor.swift; sourceTree = ""; }; @@ -811,6 +823,26 @@ path = cells; sourceTree = ""; }; + 6E6EDF1C28A7B35E00D1A6ED /* analytics */ = { + isa = PBXGroup; + children = ( + 6E6EDF1D28A7B37A00D1A6ED /* AnalyticsEvent.swift */, + 6E6EDF1F28A7B47D00D1A6ED /* AnalyticsScreen.swift */, + 6E6EDF2628A7EB0300D1A6ED /* GAManager.swift */, + 6E6EDF2828A7EB0F00D1A6ED /* AnalyticsManager.swift */, + ); + path = analytics; + sourceTree = ""; + }; + 6E6EDF2128A7E75200D1A6ED /* analytics */ = { + isa = PBXGroup; + children = ( + 6E6EDF2228A7E76100D1A6ED /* BottomTabType.swift */, + 6E6EDF2428A7E84200D1A6ED /* MyTopTabType.swift */, + ); + path = analytics; + sourceTree = ""; + }; 6E72310B28A7484C00B12502 /* firebase */ = { isa = PBXGroup; children = ( @@ -1069,6 +1101,7 @@ 6EE0CF9B27CB54A70027A426 /* managers */ = { isa = PBXGroup; children = ( + 6E6EDF1C28A7B35E00D1A6ED /* analytics */, 6E25FED427F5362A00BE2941 /* location */, 6E37AF7227E7144B004FBE25 /* loading */, 6EE0CF9C27CB54AE0027A426 /* social-sign-in */, @@ -1088,6 +1121,7 @@ 6EE0CFA627CB5B620027A426 /* models */ = { isa = PBXGroup; children = ( + 6E6EDF2128A7E75200D1A6ED /* analytics */, 6E1F54A127CB785B0050BBBA /* dto */, 6EE0CFB727CB5DED0027A426 /* presentation */, 6EE0CFA727CB5B650027A426 /* errors */, @@ -1405,6 +1439,7 @@ 6E8D013A2843396800FAB49E /* EditMenuTableViewCell.swift in Sources */, 6E21184B285DD94C00220E5A /* FAQ.swift in Sources */, 6E63FF6C281C19DE00EC49DE /* EditStoreInfoView.swift in Sources */, + 6E6EDF2028A7B47D00D1A6ED /* AnalyticsScreen.swift in Sources */, 6EB6D7CD2818231F0053CA3F /* EditIntroductionCoordinator.swift in Sources */, 6ED370F7280C33A300C445E5 /* MyStoreInfoHeaderView.swift in Sources */, 6EA53B9C284DD18A007A3839 /* SettingTableFooterView.swift in Sources */, @@ -1467,6 +1502,7 @@ 6E5DCE5D27FDAE0000CA58EE /* MapService.swift in Sources */, 6E91A9972841EF090090361F /* BossStoreFeedbackCursorResponse.swift in Sources */, 6ED8839927CB3A1700278E14 /* SigninView.swift in Sources */, + 6E6EDF2328A7E76100D1A6ED /* BottomTabType.swift in Sources */, 6E5DCE7A27FDCEF400CA58EE /* BossStoreOpenStatusResponse.swift in Sources */, 6E1E5BA82827EB33003A1B51 /* SettingView.swift in Sources */, 6E7964B228423909005EA0E2 /* DailyStatisticsStackItemView.swift in Sources */, @@ -1489,7 +1525,9 @@ 6E5F3DD8281D611C002282B6 /* WeekDayStackView.swift in Sources */, 6E5DCE5F27FDB00200CA58EE /* NaverMapResponse.swift in Sources */, 6E1AB79D280D7ECF0059DCF4 /* MyStoreInfoReactor.swift in Sources */, + 6E6EDF2928A7EB0F00D1A6ED /* AnalyticsManager.swift in Sources */, 6EE0CFB127CB5C390027A426 /* StringExtensions.swift in Sources */, + 6E6EDF1E28A7B37A00D1A6ED /* AnalyticsEvent.swift in Sources */, 6EB94EA627CB208F00609E77 /* SceneDelegate.swift in Sources */, 6E8D013C2843415900FAB49E /* EditMenuReactor.swift in Sources */, 6E9F995427E7019700C95C41 /* WaitingView.swift in Sources */, @@ -1527,6 +1565,7 @@ 6E6B431F285DB9B300AD84A5 /* FAQCollectionViewCell.swift in Sources */, 6E6C9C69280BD513009AFAE8 /* MyPageViewController.swift in Sources */, 6E1F54B427CB99100050BBBA /* ResponseContainer.swift in Sources */, + 6E6EDF2528A7E84200D1A6ED /* MyTopTabType.swift in Sources */, 6E4455B727F3E69E00A8DECF /* ShowOtherStoreButton.swift in Sources */, 6E21184D285DE0A800220E5A /* FAQSectionModel.swift in Sources */, 6EF676BA27EECF5400D43E99 /* SplashCoordinator.swift in Sources */, @@ -1550,6 +1589,7 @@ 6E7A49D827D8CDE300E6653C /* ImageUploadResponse.swift in Sources */, 6EB56F2C28A229F500834663 /* FAQCategoryResponse.swift in Sources */, 6E6C9C72280BDC54009AFAE8 /* MyStoreInfoOverviewCell.swift in Sources */, + 6E6EDF2728A7EB0300D1A6ED /* GAManager.swift in Sources */, 6EBF1AE927FE6A980011268B /* Store.swift in Sources */, 6EC5E434282BDDDA00AD571C /* StatisticsFilterButton.swift in Sources */, 6E37AF6F27E7069C004FBE25 /* WaitingReactor.swift in Sources */, @@ -1726,7 +1766,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 12; + CURRENT_PROJECT_VERSION = 13; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1768,7 +1808,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 12; + CURRENT_PROJECT_VERSION = 13; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; diff --git a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme index 1e7a836..a40cbef 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme +++ b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme @@ -50,6 +50,12 @@ ReferencedContainer = "container:3dollar-in-my-pocket-manager.xcodeproj"> + + + + + FirebaseAutomaticScreenReportingEnabled + API_URL $(API_URL) BGTaskSchedulerPermittedIdentifiers diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift index 7620738..7d2dbc7 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeReactor.swift @@ -42,22 +42,26 @@ final class HomeReactor: BaseReactor, Reactor { private let storeSerivce: StoreServiceType private let locationManager: LocationManagerProtocol private var userDefaults: UserDefaultsUtils + private let analyticsManager: AnalyticsManagerProtocol init( mapService: MapServiceProtocol, storeService: StoreServiceType, locationManager: LocationManagerProtocol, - userDefaults: UserDefaultsUtils + userDefaults: UserDefaultsUtils, + analyticsManager: AnalyticsManagerProtocol ) { self.mapService = mapService self.storeSerivce = storeService self.locationManager = locationManager self.userDefaults = userDefaults + self.analyticsManager = analyticsManager } func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: + self.analyticsManager.sendEvent(event: .viewScreen(.home)) return .merge([ self.fetchCurrentLocationForInitilize(), self.fetchMyStoreInfo() @@ -72,11 +76,13 @@ final class HomeReactor: BaseReactor, Reactor { case .tapShowOtherStore: if self.currentState.isShowOtherStore { + self.analyticsManager.sendEvent(event: .showOtherBoss(isOn: false, screen: .home)) return .merge([ .just(.setAroundStores([])), .just(.setShowOtherStore(false)) ]) } else { + self.analyticsManager.sendEvent(event: .showOtherBoss(isOn: true, screen: .home)) if let cameraPosition = self.currentState.cameraPosition { return .merge([ self.fetchAroundStores(location: cameraPosition), diff --git a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift index f1fc1cd..c5a031f 100644 --- a/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/home/HomeViewController.swift @@ -11,7 +11,8 @@ final class HomeViewController: BaseViewController, View, HomeCoordinator { mapService: MapService(), storeService: StoreService(), locationManager: LocationManager.shared, - userDefaults: UserDefaultsUtils() + userDefaults: UserDefaultsUtils(), + analyticsManager: AnalyticsManager.shared ) private weak var coordinator: HomeCoordinator? diff --git a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift index 1efb1b2..d692203 100644 --- a/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift +++ b/3dollar-in-my-pocket-manager/domains/main/MainTabController.swift @@ -32,7 +32,22 @@ final class MainTabController: UITabBarController { guard let tabBarTag = TabBarTag(rawValue: item.tag) else { return } switch tabBarTag { - case .home, .myPage: + case .home: + AnalyticsManager.shared.sendEvent(event: .tapBottomTab(tab: .home)) + if #available(iOS 15, *) { + let appearance = UITabBarAppearance() + appearance.configureWithOpaqueBackground() + appearance.backgroundColor = .white + self.tabBar.standardAppearance = appearance + self.tabBar.scrollEdgeAppearance = appearance + } else { + self.tabBar.barTintColor = .white + self.tabBar.backgroundColor = .white + } + self.borderLayer.backgroundColor = UIColor.gray5.cgColor + + case .myPage: + AnalyticsManager.shared.sendEvent(event: .tapBottomTab(tab: .my)) if #available(iOS 15, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() @@ -46,6 +61,7 @@ final class MainTabController: UITabBarController { self.borderLayer.backgroundColor = UIColor.gray5.cgColor case .setting: + AnalyticsManager.shared.sendEvent(event: .tapBottomTab(tab: .setting)) if #available(iOS 15, *) { let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift index 6fae0fe..780807d 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninReactor.swift @@ -28,19 +28,22 @@ final class SigninReactor: BaseReactor, Reactor { private let authService: AuthServiceType private let deviceService: DeviceServiceType private var userDefaultsUtils: UserDefaultsUtils + private let analyticsManager: AnalyticsManagerProtocol init( kakaoManager: KakaoSignInManagerProtocol, appleSignInManager: AppleSignInManagerProtocol, authService: AuthServiceType, deviceService: DeviceServiceType, - userDefaultsUtils: UserDefaultsUtils + userDefaultsUtils: UserDefaultsUtils, + analyticsManager: AnalyticsManagerProtocol ) { self.kakaoSignInManager = kakaoManager self.appleSignInManager = appleSignInManager self.authService = authService self.deviceService = deviceService self.userDefaultsUtils = userDefaultsUtils + self.analyticsManager = analyticsManager } func mutate(action: Action) -> Observable { @@ -99,7 +102,12 @@ final class SigninReactor: BaseReactor, Reactor { private func signin(socialType: SocialType, token: String) -> Observable { let signinObservable = self.authService.login(socialType: socialType, token: token) .do(onNext: { [weak self] response in + self?.userDefaultsUtils.userId = response.bossId self?.userDefaultsUtils.userToken = response.token + self?.analyticsManager.sendEvent(event: .setUserId(response.bossId)) + self?.analyticsManager.sendEvent( + event: .signin(userId: response.bossId, screen: .signin) + ) }) .flatMap { [weak self] _ -> Observable in guard let self = self else { return .error(BaseError.unknown) } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift index ba37d66..b553797 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signin/SigninViewController.swift @@ -10,10 +10,15 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { appleSignInManager: AppleSigninManager.shared, authService: AuthService(), deviceService: DeviceService(), - userDefaultsUtils: UserDefaultsUtils() + userDefaultsUtils: UserDefaultsUtils(), + analyticsManager: AnalyticsManager.shared ) private weak var coordinator: SigninCoordinator? + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + static func instance() -> UINavigationController { let viewController = SigninViewController(nibName: nil, bundle: nil) @@ -31,6 +36,7 @@ final class SigninViewController: BaseViewController, View, SigninCoordinator { self.reactor = self.signinReactor self.coordinator = self + AnalyticsManager.shared.sendEvent(event: .viewScreen(.signin)) } override func bindEvent() { diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift index 2a9b60d..f6d980b 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupReactor.swift @@ -50,6 +50,7 @@ final class SignupReactor: BaseReactor, Reactor { private let imageService: ImageServiceType private let authService: AuthServiceType private var userDefaultsUtils: UserDefaultsUtils + private let analyticsManager: AnalyticsManagerProtocol init( socialType: SocialType, @@ -58,7 +59,8 @@ final class SignupReactor: BaseReactor, Reactor { imageService: ImageServiceType, authService: AuthServiceType, deviceService: DeviceServiceType, - userDefaultsUtils: UserDefaultsUtils + userDefaultsUtils: UserDefaultsUtils, + analyticsManager: AnalyticsManagerProtocol ) { self.socialType = socialType self.token = token @@ -67,11 +69,13 @@ final class SignupReactor: BaseReactor, Reactor { self.authService = authService self.deviceService = deviceService self.userDefaultsUtils = userDefaultsUtils + self.analyticsManager = analyticsManager } func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: + self.analyticsManager.sendEvent(event: .viewScreen(.signup)) return self.fetchCategories() case .inputOwnerName(let ownerName): @@ -204,6 +208,11 @@ final class SignupReactor: BaseReactor, Reactor { ) .do(onNext: { [weak self] response in self?.userDefaultsUtils.userToken = response.token + self?.userDefaultsUtils.userId = response.bossId + self?.analyticsManager.sendEvent(event: .setUserId(response.bossId)) + self?.analyticsManager.sendEvent( + event: .signup(userId: response.bossId, screen: .signup) + ) }) .flatMap { [weak self] _ -> Observable in guard let self = self else { return .error(BaseError.unknown) } diff --git a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift index f9749eb..8ecc74e 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/signup/SignupViewController.swift @@ -24,7 +24,8 @@ final class SignupViewController: BaseViewController, View, SignupCoordinator { imageService: ImageService(), authService: AuthService(), deviceService: DeviceService(), - userDefaultsUtils: UserDefaultsUtils() + userDefaultsUtils: UserDefaultsUtils(), + analyticsManager: AnalyticsManager.shared ) super.init(nibName: nil, bundle: nil) } diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift index 7ec2618..584ac95 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingReactor.swift @@ -27,18 +27,22 @@ final class WaitingReactor: BaseReactor, Reactor { let goToSigninPublisher = PublishRelay() private let authService: AuthServiceType private let userDefaults: UserDefaultsUtils + private let analyticsManager: AnalyticsManagerProtocol init( authService: AuthServiceType, - userDefaults: UserDefaultsUtils + userDefaults: UserDefaultsUtils, + analyticsManager: AnalyticsManager ) { self.authService = authService self.userDefaults = userDefaults + self.analyticsManager = analyticsManager } func mutate(action: Action) -> Observable { switch action { case .tapQuestionButton: + self.analyticsManager.sendEvent(event: .tapEmail(screen: .waiting)) let message = "\n\n\n\n----------\n앱 버전: \(self.getAppVersion())\nOS: ios \(self.getiOSVersion())\n" return .just(.presentMailComposer(message: message)) @@ -80,7 +84,12 @@ final class WaitingReactor: BaseReactor, Reactor { private func logout() -> Observable { return self.authService.logout() .do(onNext: { [weak self] _ in - self?.userDefaults.clear() + guard let self = self else { return } + let userId = self.userDefaults.userId + + self.analyticsManager.sendEvent(event: .logout(userId: userId, screen: .waiting)) + self.userDefaults.clear() + }) .map { _ in .goToSignin } .catch { diff --git a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift index dc089b0..95e848f 100644 --- a/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/membership/waiting/WaitingViewController.swift @@ -8,7 +8,8 @@ final class WaitingViewController: BaseViewController, View, WaitingCoordinator private let waitingView = WaitingView() private let waitingReactor = WaitingReactor( authService: AuthService(), - userDefaults: UserDefaultsUtils() + userDefaults: UserDefaultsUtils(), + analyticsManager: AnalyticsManager.shared ) private weak var coordinator: WaitingCoordinator? @@ -29,6 +30,7 @@ final class WaitingViewController: BaseViewController, View, WaitingCoordinator self.coordinator = self self.reactor = self.waitingReactor + AnalyticsManager.shared.sendEvent(event: .viewScreen(.waiting)) } override func bindEvent() { diff --git a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift index 2e43f73..2589dc5 100644 --- a/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/MyPageViewController.swift @@ -49,6 +49,9 @@ final class MyPageViewController: BaseViewController { override func bindEvent() { self.myPageView.rx.tapTab .asDriver() + .do(onNext: { [weak self] index in + self?.sendAnalyticsEvent(selectedIndex: index) + }) .drive(onNext: { [weak self] index in guard let self = self else { return } self.pageViewController.setViewControllers( @@ -82,6 +85,14 @@ final class MyPageViewController: BaseViewController { } } } + + private func sendAnalyticsEvent(selectedIndex: Int) { + if selectedIndex == 0 { + AnalyticsManager.shared.sendEvent(event: .tapMyTopTab(tab: .myStoreInfo)) + } else { + AnalyticsManager.shared.sendEvent(event: .tapMyTopTab(tab: .statistics)) + } + } } extension MyPageViewController: UIPageViewControllerDelegate, UIPageViewControllerDataSource { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift index b4918ac..d4c0d69 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoReactor.swift @@ -33,33 +33,53 @@ final class MyStoreInfoReactor: BaseReactor, Reactor { let pushEditSchedulePublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState + private let analyticsManager: AnalyticsManagerProtocol init( storeService: StoreServiceType, - globalState: GlobalState + globalState: GlobalState, + analyticsManager: AnalyticsManagerProtocol ) { self.storeService = storeService self.globalState = globalState + self.analyticsManager = analyticsManager } func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: + self.analyticsManager.sendEvent(event: .viewScreen(.myStoreInfo)) return self.fetchMyStore() case .refresh: return self.fetchMyStore() case .tapEditStoreInfo: + self.analyticsManager.sendEvent(event: .tapEditStoreInfo( + storeId: self.currentState.store.id, + screen: .myStoreInfo + )) return .just(.pushEditStoreInfo(store: self.currentState.store)) case .tapEditIntroduction: + self.analyticsManager.sendEvent(event: .tapEditIntroduction( + storeId: self.currentState.store.id, + screen: .myStoreInfo + )) return .just(.pushEditIntroduction(store: self.currentState.store)) case .tapEditMenus: + self.analyticsManager.sendEvent(event: .tapEditMenu( + storeId: self.currentState.store.id, + screen: .myStoreInfo + )) return .just(.pushEditMenus(store: self.currentState.store)) case .tapEditSchedule: + self.analyticsManager.sendEvent(event: .tapEditSchedule( + storeId: self.currentState.store.id, + screen: .myStoreInfo + )) return .just(.pushEditSchedule(store: self.currentState.store)) } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift index 0e5e990..47cf9bf 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/MyStoreInfoViewController.swift @@ -8,7 +8,8 @@ final class MyStoreInfoViewController: BaseViewController, View, MyStoreInfoCoor private let myStoreInfoView = MyStoreInfoView() private let myStoreInfoReactor = MyStoreInfoReactor( storeService: StoreService(), - globalState: GlobalState.shared + globalState: GlobalState.shared, + analyticsManager: AnalyticsManager.shared ) private weak var coordinator: MyStoreInfoCoordinator? private var myStoreInfoCollectionViewDataSource diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift index bcd8555..a4395bc 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionReactor.swift @@ -25,14 +25,17 @@ final class EditIntroductionReactor: BaseReactor, Reactor { let popupPublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState + private let analyticsManager: AnalyticsManagerProtocol init( store: Store, storeService: StoreServiceType, - globlaState: GlobalState + globlaState: GlobalState, + analyticsManager: AnalyticsManagerProtocol ) { self.storeService = storeService self.globalState = globlaState + self.analyticsManager = analyticsManager self.initialState = State( store: store, isEditButtonEnable: !(store.introduction ?? "").isEmpty @@ -82,7 +85,13 @@ final class EditIntroductionReactor: BaseReactor, Reactor { private func updateStore(store: Store) -> Observable { return self.storeService.updateStore(store: store) .do(onNext: { [weak self] _ in - self?.globalState.updateStorePublisher.onNext(store) + guard let self = self else { return } + + self.globalState.updateStorePublisher.onNext(store) + self.analyticsManager.sendEvent(event: .editStoreIntroduction( + storeId: self.currentState.store.id, + screen: .editIntroduction + )) }) .map { _ in Mutation.pop } .catch { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift index 5d387f5..8666fba 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-introduction/EditIntroductionViewController.swift @@ -23,7 +23,8 @@ final class EditIntroductionViewController: self.editIntroductionReactor = EditIntroductionReactor( store: store, storeService: StoreService(), - globlaState: GlobalState.shared + globlaState: GlobalState.shared, + analyticsManager: AnalyticsManager.shared ) super.init(nibName: nil, bundle: nil) @@ -43,6 +44,7 @@ final class EditIntroductionViewController: self.coordinator = self self.reactor = self.editIntroductionReactor + AnalyticsManager.shared.sendEvent(event: .viewScreen(.editIntroduction)) } override func bindEvent() { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift index 1dae1d4..4fefd56 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuReactor.swift @@ -52,16 +52,19 @@ final class EditMenuReactor: BaseReactor, Reactor { private let storeService: StoreServiceType private let imageService: ImageServiceType private let globalState: GlobalState + private let analyticsManager: AnalyticsManagerProtocol init( store: Store, storeService: StoreServiceType, imageService: ImageServiceType, - globalState: GlobalState + globalState: GlobalState, + analyticsManager: AnalyticsManagerProtocol ) { self.storeService = storeService self.imageService = imageService self.globalState = globalState + self.analyticsManager = analyticsManager var newStore = store if store.menus.isEmpty { @@ -150,6 +153,10 @@ final class EditMenuReactor: BaseReactor, Reactor { } } else { if let invalidIndex = self.getInvalidStoreIndex(store: self.currentState.store) { + self.analyticsManager.sendEvent(event: .errorInEditingMenu( + storeId: self.currentState.store.id, + screen: .editMenu + )) return .just(.setInvalidMenuIndex(invalidIndex)) } else { return .concat([ @@ -260,7 +267,12 @@ final class EditMenuReactor: BaseReactor, Reactor { return self.storeService.updateStore(store: newStore) .do(onNext: { [weak self] _ in - self?.globalState.updateStorePublisher.onNext(newStore) + guard let self = self else { return } + self.globalState.updateStorePublisher.onNext(newStore) + self.analyticsManager.sendEvent(event: .editStoreMenu( + storeId: self.currentState.store.id, + screen: .editMenu + )) }) .map { _ in Mutation.pop } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift index a1ce5fb..130764b 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-menu/EditMenuViewController.swift @@ -22,7 +22,8 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato store: store, storeService: StoreService(), imageService: ImageService(), - globalState: GlobalState.shared + globalState: GlobalState.shared, + analyticsManager: AnalyticsManager.shared ) super.init(nibName: nil, bundle: nil) @@ -41,6 +42,7 @@ final class EditMenuViewController: BaseViewController, View, EditMenuCoordinato self.coordinator = self self.reactor = self.editMenuReactor + AnalyticsManager.shared.sendEvent(event: .viewScreen(.editMenu)) } override func bindEvent() { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift index 537498b..154887c 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleReactor.swift @@ -32,15 +32,18 @@ final class EditScheduleReactor: BaseReactor, Reactor { let popPublisher = PublishRelay() private let storeService: StoreServiceType private let globalState: GlobalState + private let analyticsManager: AnalyticsManagerProtocol init( store: Store, storeService: StoreServiceType, - globalState: GlobalState + globalState: GlobalState, + analyticsManager: AnalyticsManagerProtocol ) { self.initialState = State(store: store) self.storeService = storeService self.globalState = globalState + self.analyticsManager = analyticsManager } func mutate(action: Action) -> Observable { @@ -131,7 +134,13 @@ final class EditScheduleReactor: BaseReactor, Reactor { private func updateStore(store: Store) -> Observable { return self.storeService.updateStore(store: store) .do(onNext: { [weak self] _ in - self?.globalState.updateStorePublisher.onNext(store) + guard let self = self else { return } + + self.globalState.updateStorePublisher.onNext(store) + self.analyticsManager.sendEvent(event: .editSchedule( + storeId: self.currentState.store.id, + screen: .editSchedule + )) }) .map { _ in Mutation.pop } .catch { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift index 4d2991d..f5afcf0 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-schedule/EditScheduleViewController.swift @@ -23,7 +23,8 @@ final class EditScheduleViewController: self.editScheduleReactor = EditScheduleReactor( store: store, storeService: StoreService(), - globalState: GlobalState.shared + globalState: GlobalState.shared, + analyticsManager: AnalyticsManager.shared ) super.init(nibName: nil, bundle: nil) } @@ -41,6 +42,7 @@ final class EditScheduleViewController: self.coordinator = self self.reactor = self.editScheduleReactor + AnalyticsManager.shared.sendEvent(event: .viewScreen(.editSchedule)) } override func bindEvent() { diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift index be8e44f..545c3db 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoReactor.swift @@ -45,18 +45,21 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { private let categoryService: CategoryServiceType private let imageService: ImageServiceType private let globalState: GlobalState + private let analyticsManager: AnalyticsManagerProtocol init( store: Store, storeService: StoreService, categoryService: CategoryServiceType, imageService: ImageServiceType, - globalState: GlobalState + globalState: GlobalState, + analyticsManager: AnalyticsManagerProtocol ) { self.storeService = storeService self.categoryService = categoryService self.imageService = imageService self.globalState = globalState + self.analyticsManager = analyticsManager self.initialState = State( store: store, categories: [], @@ -68,6 +71,7 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: + self.analyticsManager.sendEvent(event: .viewScreen(.editStoreInfo)) return self.fetchCategories() case .inputStoreName(let storeName): @@ -172,8 +176,14 @@ final class EditStoreInfoReactor: BaseReactor, Reactor { newStore.imageUrl = imageResponse.imageUrl return self.storeService.updateStore(store: newStore) - .do(onNext: { _ in + .do(onNext: { [weak self] _ in + guard let self = self else { return } + self.globalState.updateStorePublisher.onNext(newStore) + self.analyticsManager.sendEvent(event: .editStoreInfo( + storeId: self.currentState.store.id, + screen: .editStoreInfo + )) }) .map { _ in .pop } } diff --git a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift index 8e9a86a..1c284e4 100644 --- a/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/my-store-info/edit-store-info/EditStoreInfoViewController.swift @@ -27,7 +27,8 @@ final class EditStoreInfoViewController: BaseViewController, View, EditStoreInfo storeService: StoreService(), categoryService: CategoryService(), imageService: ImageService(), - globalState: GlobalState.shared + globalState: GlobalState.shared, + analyticsManager: AnalyticsManager.shared ) super.init(nibName: nil, bundle: nil) diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift index 219ad7a..8b63ff2 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsReactor.swift @@ -21,20 +21,25 @@ final class StatisticsReactor: Reactor { let initialState: State let refreshPublisher = PublishRelay() private let globalState: GlobalState + private let analyticsManager: AnalyticsManagerProtocol init( globalState: GlobalState, + analyticsManager: AnalyticsManagerProtocol, state: State = State( - totalReviewCount: 0, - selectedFilter: .total - )) { + totalReviewCount: 0, + selectedFilter: .total + ) + ) { self.globalState = globalState + self.analyticsManager = analyticsManager self.initialState = state } func mutate(action: Action) -> Observable { switch action { case .tapFilterButton(let filterType): + self.analyticsManager.sendEvent(event: .tapStatisticTab(filterType: filterType)) return .just(.setTab(filterType)) case .refresh: diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift index cca809b..3a4988e 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/StatisticsViewController.swift @@ -5,7 +5,10 @@ import ReactorKit final class StatisticsViewController: BaseViewController, View { private let statisticsView = StatisticsView() - private let statisticsReactor = StatisticsReactor(globalState: GlobalState.shared) + private let statisticsReactor = StatisticsReactor( + globalState: GlobalState.shared, + analyticsManager: AnalyticsManager.shared + ) private let pageViewController = UIPageViewController( transitionStyle: .scroll, navigationOrientation: .horizontal, diff --git a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift index 4ab4006..ab0fb53 100644 --- a/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift +++ b/3dollar-in-my-pocket-manager/domains/my/statistics/subviews/StatisticsFilterButton.swift @@ -10,6 +10,16 @@ final class StatisticsFilterButton: BaseView { enum FilterType { case total case day + + var name: String { + switch self { + case .total: + return "total" + + case .day: + return "day" + } + } } private let backgroundView = UIView().then { diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift index ce758e2..8240f57 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingReactor.swift @@ -32,22 +32,26 @@ final class SettingReactor: BaseReactor, Reactor { private let authService: AuthServiceType private let deviceService: DeviceServiceType private let userDefaults: UserDefaultsUtils + private let analyticsManager: AnalyticsManagerProtocol init( authService: AuthServiceType, deviceService: DeviceServiceType, userDefaults: UserDefaultsUtils, + analyticsManager: AnalyticsManagerProtocol, state: State = State(user: User()) ) { self.authService = authService self.deviceService = deviceService self.userDefaults = userDefaults + self.analyticsManager = analyticsManager self.initialState = state } func mutate(action: Action) -> Observable { switch action { case .viewDidLoad: + self.analyticsManager.sendEvent(event: .viewScreen(.setting)) return self.fetchMyInfo() case .tapFCMToken: @@ -132,7 +136,11 @@ final class SettingReactor: BaseReactor, Reactor { private func logout() -> Observable { return self.authService.logout() .do(onNext: { [weak self] _ in - self?.userDefaults.clear() + guard let self = self else { return } + self.analyticsManager.sendEvent( + event: .logout(userId: self.currentState.user.bossId, screen: .setting) + ) + self.userDefaults.clear() }) .map { _ in .goToSignin } .catch { @@ -147,7 +155,12 @@ final class SettingReactor: BaseReactor, Reactor { private func signout() -> Observable { return self.authService.signout() .do(onNext: { [weak self] _ in - self?.userDefaults.clear() + guard let self = self else { return } + + self.analyticsManager.sendEvent( + event: .signout(userId: self.currentState.user.bossId) + ) + self.userDefaults.clear() }) .map { _ in .goToSignin } .catch { diff --git a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift index 978143e..b83455f 100644 --- a/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift +++ b/3dollar-in-my-pocket-manager/domains/setting/SettingViewController.swift @@ -8,7 +8,8 @@ final class SettingViewController: BaseViewController, View, SettingCoordinator let settingReactor = SettingReactor( authService: AuthService(), deviceService: DeviceService(), - userDefaults: UserDefaultsUtils() + userDefaults: UserDefaultsUtils(), + analyticsManager: AnalyticsManager.shared ) private weak var coordinator: SettingCoordinator? diff --git a/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsEvent.swift b/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsEvent.swift new file mode 100644 index 0000000..7e28e83 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsEvent.swift @@ -0,0 +1,88 @@ +import Foundation + +enum AnalyticsEvent { + case setUserId(String) + case viewScreen(AnalyticsScreen) + case signin(userId: String, screen: AnalyticsScreen) + case signup(userId: String, screen: AnalyticsScreen) + case tapEmail(screen: AnalyticsScreen) + case logout(userId: String, screen: AnalyticsScreen) + case showOtherBoss(isOn: Bool, screen: AnalyticsScreen) + case tapBottomTab(tab: BottomTabType) + case tapMyTopTab(tab: MyTopTabType) + case tapEditStoreInfo(storeId: String, screen: AnalyticsScreen) + case tapEditIntroduction(storeId: String, screen: AnalyticsScreen) + case tapEditMenu(storeId: String, screen: AnalyticsScreen) + case tapEditSchedule(storeId: String, screen: AnalyticsScreen) + case editStoreInfo(storeId: String, screen: AnalyticsScreen) + case editStoreIntroduction(storeId: String, screen: AnalyticsScreen) + case editStoreMenu(storeId: String, screen: AnalyticsScreen) + case errorInEditingMenu(storeId: String, screen: AnalyticsScreen) + case editSchedule(storeId: String, screen: AnalyticsScreen) + case tapStatisticTab(filterType: StatisticsFilterButton.FilterType) + case signout(userId: String) + + var eventName: String { + switch self { + case .setUserId: + return "" + + case .viewScreen: + return "" + + case .signin: + return "signin" + + case .signup: + return "signUp" + + case .tapEmail: + return "tapEmail" + + case .logout: + return "logout" + + case .showOtherBoss: + return "showOtherBoss" + + case .tapBottomTab: + return "tabBottomTab" + + case .tapMyTopTab: + return "tapMyTopTab" + + case .tapEditStoreInfo: + return "tapEditStoreInfo" + + case .tapEditIntroduction: + return "tapEditIntroduction" + + case .tapEditMenu: + return "tapEditMenu" + + case .tapEditSchedule: + return "tapEditSchedule" + + case .editStoreInfo: + return "editStoreInfo" + + case .editStoreIntroduction: + return "editStoreIntroduction" + + case .editStoreMenu: + return "editStoreMenu" + + case .errorInEditingMenu: + return "errorInEditingMenu" + + case .editSchedule: + return "editSchedule" + + case .tapStatisticTab: + return "tapStatisticTab" + + case .signout: + return "signout" + } + } +} diff --git a/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsManager.swift b/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsManager.swift new file mode 100644 index 0000000..5975259 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsManager.swift @@ -0,0 +1,17 @@ +import Foundation + +protocol AnalyticsManagerProtocol { + func sendEvent(event: AnalyticsEvent) +} + +final class AnalyticsManager: AnalyticsManagerProtocol { + static let shared = AnalyticsManager() + + private let managers: [AnalyticsManagerProtocol] = [GAManager.shared] + + func sendEvent(event: AnalyticsEvent) { + for manager in self.managers { + manager.sendEvent(event: event) + } + } +} diff --git a/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsScreen.swift b/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsScreen.swift new file mode 100644 index 0000000..3376d45 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/analytics/AnalyticsScreen.swift @@ -0,0 +1,94 @@ +enum AnalyticsScreen { + case signin + case signup + case waiting + case home + case myStoreInfo + case statistics + case editStoreInfo + case editIntroduction + case editMenu + case editSchedule + case setting + case faq + + var screenName: String { + switch self { + case .signin: + return "signin" + + case .signup: + return "signup" + + case .waiting: + return "waiting" + + case .home: + return "home" + + case .myStoreInfo: + return "myStoreInfo" + + case .statistics: + return "statistics" + + case .editStoreInfo: + return "editStoreInfo" + + case .editIntroduction: + return "editIntroduction" + + case .editMenu: + return "editMenu" + + case .editSchedule: + return "editSchedule" + + case .setting: + return "setting" + + case .faq: + return "faq" + } + } + + var screenClass: String { + switch self { + case .signin: + return "SigninViewController" + + case .signup: + return "SignupViewController" + + case .waiting: + return "waitingViewController" + + case .home: + return "HomeViewController" + + case .myStoreInfo: + return "MyStoreInfoViewController" + + case .statistics: + return "StatisticsViewController" + + case .editStoreInfo: + return "EditStoreInfoViewController" + + case .editIntroduction: + return "EditIntroductionViewController" + + case .editMenu: + return "EditMenuViewController" + + case .editSchedule: + return "EditScheduleViewContrller" + + case .setting: + return "SettingViewContrller" + + case .faq: + return "FAQViewContrller" + } + } +} diff --git a/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift b/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift new file mode 100644 index 0000000..ab538c2 --- /dev/null +++ b/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift @@ -0,0 +1,158 @@ +import FirebaseAnalytics + +final class GAManager: AnalyticsManagerProtocol { + static let shared = GAManager() + + func sendEvent(event: AnalyticsEvent) { + switch event { + case .setUserId(let userId): + Analytics.setUserID(userId) + + case .viewScreen(let analyticsScreen): + Analytics.logEvent( + AnalyticsEventScreenView, + parameters: [ + AnalyticsParameterScreenName: analyticsScreen.screenName, + AnalyticsParameterScreenClass: analyticsScreen.screenClass + ]) + + case .signin(let userId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "userId": userId, + "screen": screen.screenName + ] + ) + + case .signup(let userId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "userId": userId, + "screen": screen.screenName + ] + ) + + case .tapEmail(let screen): + Analytics.logEvent(event.eventName, parameters: ["screen": screen.screenName]) + + case .logout(let userId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "userId": userId, + "screen": screen.screenName + ] + ) + + case .showOtherBoss(let isOn, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "isOn": isOn, + "screen": screen.screenName + ] + ) + + case .tapBottomTab(let tab): + Analytics.logEvent( + event.eventName, + parameters: ["tab": tab.name] + ) + + case .tapMyTopTab(let tab): + Analytics.logEvent( + event.eventName, + parameters: ["tab": tab.name] + ) + + case .tapEditStoreInfo(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .tapEditMenu(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .tapEditSchedule(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .editStoreInfo(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .editStoreIntroduction(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .editStoreMenu(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .errorInEditingMenu(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .editSchedule(let storeId, let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + + case .tapStatisticTab(let storeId): + Analytics.logEvent(event.eventName, parameters: ["storeId": storeId]) + + case .signout(let userId): + Analytics.logEvent(event.eventName, parameters: ["userId": userId]) + + case .tapEditIntroduction(storeId: let storeId, screen: let screen): + Analytics.logEvent( + event.eventName, + parameters: [ + "storeId": storeId, + "screen": screen.screenName + ] + ) + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/analytics/BottomTabType.swift b/3dollar-in-my-pocket-manager/models/analytics/BottomTabType.swift new file mode 100644 index 0000000..61070d2 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/analytics/BottomTabType.swift @@ -0,0 +1,18 @@ +enum BottomTabType { + case home + case my + case setting + + var name: String { + switch self { + case .home: + return "home" + + case .my: + return "my" + + case .setting: + return "setting" + } + } +} diff --git a/3dollar-in-my-pocket-manager/models/analytics/MyTopTabType.swift b/3dollar-in-my-pocket-manager/models/analytics/MyTopTabType.swift new file mode 100644 index 0000000..de2aed3 --- /dev/null +++ b/3dollar-in-my-pocket-manager/models/analytics/MyTopTabType.swift @@ -0,0 +1,14 @@ +enum MyTopTabType { + case myStoreInfo + case statistics + + var name: String { + switch self { + case .myStoreInfo: + return "myStoreInfo" + + case .statistics: + return "statistics" + } + } +} diff --git a/3dollar-in-my-pocket-manager/services/AuthService.swift b/3dollar-in-my-pocket-manager/services/AuthService.swift index 5bd7458..82eda86 100644 --- a/3dollar-in-my-pocket-manager/services/AuthService.swift +++ b/3dollar-in-my-pocket-manager/services/AuthService.swift @@ -142,13 +142,13 @@ struct AuthService: AuthServiceType { method: .get, headers: headers ) - .responseData(completionHandler: { response in + .responseDecodable(of: ResponseContainer.self) { response in if response.isSuccess() { - observer.processValue(type: BossAccountInfoResponse.self, response: response) + observer.processValue(response: response) } else { - observer.processAPIError(response: response) + observer.processHTTPError(response: response) } - }) + } return Disposables.create() } diff --git a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift index 52399d8..f068622 100644 --- a/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift +++ b/3dollar-in-my-pocket-manager/utils/UserDefaultsUtils.swift @@ -25,12 +25,12 @@ struct UserDefaultsUtils { } } - var userId: Int { + var userId: String { set { self.instance.set(newValue, forKey: self.KEY_USER_ID) } get { - return self.instance.integer(forKey: self.KEY_USER_ID) + return self.instance.string(forKey: self.KEY_USER_ID) ?? "" } } From a2b3e3b0d6f1b292a36e9477021975098d71759f Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 14 Aug 2022 00:59:29 +0900 Subject: [PATCH 162/166] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EB=8D=95=EC=85=98=20=EC=8A=A4=ED=82=A4?= =?UTF-8?q?=EB=A7=88=20=EB=B0=98=EC=98=81,=20=EB=B9=8C=EB=93=9C=EB=84=98?= =?UTF-8?q?=EB=B2=84=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 4 ++-- .../xcschemes/3dollar-in-my-pocket-manager.xcscheme | 2 +- 3dollar-in-my-pocket-manager/Info.plist | 12 ++++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 8671874..4dbe8c9 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1766,7 +1766,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 13; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1808,7 +1808,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 13; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; diff --git a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme index a40cbef..ab5f14f 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme +++ b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme @@ -31,7 +31,7 @@ - FirebaseAutomaticScreenReportingEnabled - API_URL $(API_URL) BGTaskSchedulerPermittedIdentifiers @@ -20,7 +18,17 @@ kakaob623fd2160694c4c2cb08e64df491d1c + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + kakaoa009e78756eb528bc0e9897b8409a2e4 + + + FirebaseAutomaticScreenReportingEnabled + KAKAO_APP_KEY $(KAKAO_APP_KEY) KAKAO_CHANNEL_URL From 9feee70da435f0b85d63ee4d1619d82ae6b00abc Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 14 Aug 2022 13:40:46 +0900 Subject: [PATCH 163/166] =?UTF-8?q?fix:=20=EC=95=B1=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A4=EB=A7=88=EC=97=90=20=EB=94=B0=EB=9D=BC=20?= =?UTF-8?q?=EB=8B=AC=EB=9D=BC=EC=A7=80=EB=8F=84=EB=A1=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 --- 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj | 8 ++++---- .../xcschemes/3dollar-in-my-pocket-manager.xcscheme | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index 4dbe8c9..afb76a0 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1766,12 +1766,12 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; + INFOPLIST_KEY_CFBundleDisplayName = "$(Bundle Display Name)"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; @@ -1808,12 +1808,12 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 0; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; + INFOPLIST_KEY_CFBundleDisplayName = "$(Bundle Display Name)"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; diff --git a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme index ab5f14f..a40cbef 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme +++ b/3dollar-in-my-pocket-manager.xcodeproj/xcshareddata/xcschemes/3dollar-in-my-pocket-manager.xcscheme @@ -31,7 +31,7 @@ Date: Sun, 14 Aug 2022 14:59:37 +0900 Subject: [PATCH 164/166] =?UTF-8?q?fix:=20=EC=95=B1=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index afb76a0..e2c0dc3 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1771,7 +1771,7 @@ ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "$(Bundle Display Name)"; + INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님-Dev"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; @@ -1813,7 +1813,7 @@ ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = "3dollar-in-my-pocket-manager/Info.plist"; - INFOPLIST_KEY_CFBundleDisplayName = "$(Bundle Display Name)"; + INFOPLIST_KEY_CFBundleDisplayName = "가슴속3천원 사장님"; INFOPLIST_KEY_NSCameraUsageDescription = "가게 인증 사진을 촬영하기 위해 카메라를 허용해주세요."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "사장님의 현재 위치를 찾기 위해 위치 권한이 사용됩니다😄"; From 107c3cd0a8c513bcb39f759c105c7295fb20c430 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 14 Aug 2022 18:09:13 +0900 Subject: [PATCH 165/166] =?UTF-8?q?fix:=20GA=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=EB=AA=85=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 --- .../managers/analytics/GAManager.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift b/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift index ab538c2..b836ec1 100644 --- a/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift +++ b/3dollar-in-my-pocket-manager/managers/analytics/GAManager.swift @@ -139,8 +139,8 @@ final class GAManager: AnalyticsManagerProtocol { ] ) - case .tapStatisticTab(let storeId): - Analytics.logEvent(event.eventName, parameters: ["storeId": storeId]) + case .tapStatisticTab(let filterType): + Analytics.logEvent(event.eventName, parameters: ["filterType": filterType]) case .signout(let userId): Analytics.logEvent(event.eventName, parameters: ["userId": userId]) From b01a4fe45aabdc89d5a644ad8d4765d2b7f836d0 Mon Sep 17 00:00:00 2001 From: Yoo Hyun Sik Date: Sun, 14 Aug 2022 18:15:55 +0900 Subject: [PATCH 166/166] =?UTF-8?q?=EB=B2=84=EC=A0=84=201.0.0=20=EB=B9=8C?= =?UTF-8?q?=EB=93=9C=EB=84=98=EB=B2=84=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj index e2c0dc3..fec682d 100644 --- a/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj +++ b/3dollar-in-my-pocket-manager.xcodeproj/project.pbxproj @@ -1766,7 +1766,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES; @@ -1808,7 +1808,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "3dollar-in-my-pocket-manager/3dollar-in-my-pocket-manager.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_TEAM = X975A2HM62; ENABLE_BITCODE = NO; GENERATE_INFOPLIST_FILE = YES;

)DNk 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%0A@TcI&O%KJyuZKO{B{ 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Πa20W>zBaPmJ}M%&~%spuuk>4~tz^YSt3`{#do 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