From da5e055581464092d4d8b0523d5a397ba76a60dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 14:32:10 +0900 Subject: [PATCH 01/40] =?UTF-8?q?:package:=20=EC=95=B1=20=ED=83=80?= =?UTF-8?q?=EA=B2=9F=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20Package=20Dependency=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MusicSpot.xcodeproj/project.pbxproj | 53 +------------------ 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj b/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj index 2a1c470..7c15359 100644 --- a/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj +++ b/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj @@ -3,14 +3,10 @@ archiveVersion = 1; classes = { }; - objectVersion = 60; + objectVersion = 56; objects = { /* Begin PBXBuildFile section */ - 21B1B63D2B04C7CF00A63287 /* FoundationExt in Frameworks */ = {isa = PBXBuildFile; productRef = 21B1B63C2B04C7CF00A63287 /* FoundationExt */; }; - 21B1B63F2B04C7CF00A63287 /* MSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = 21B1B63E2B04C7CF00A63287 /* MSLogger */; }; - 21B1B6412B04C7CF00A63287 /* MSUserDefaults in Frameworks */ = {isa = PBXBuildFile; productRef = 21B1B6402B04C7CF00A63287 /* MSUserDefaults */; }; - 21B1B6442B04D64A00A63287 /* MSNetwork in Frameworks */ = {isa = PBXBuildFile; productRef = 21B1B6432B04D64A00A63287 /* MSNetwork */; }; DD73F8592B024C4900EE9BF2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD73F8582B024C4900EE9BF2 /* AppDelegate.swift */; }; DD73F85B2B024C4900EE9BF2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD73F85A2B024C4900EE9BF2 /* SceneDelegate.swift */; }; DD73F8622B024C4B00EE9BF2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DD73F8612B024C4B00EE9BF2 /* Assets.xcassets */; }; @@ -32,23 +28,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 21B1B63F2B04C7CF00A63287 /* MSLogger in Frameworks */, - 21B1B6412B04C7CF00A63287 /* MSUserDefaults in Frameworks */, - 21B1B63D2B04C7CF00A63287 /* FoundationExt in Frameworks */, - 21B1B6442B04D64A00A63287 /* MSNetwork in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2137DBFD2B063A1500395C06 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; DD73F84C2B024C4900EE9BF2 = { isa = PBXGroup; children = ( @@ -94,10 +79,6 @@ ); name = MusicSpot; packageProductDependencies = ( - 21B1B63C2B04C7CF00A63287 /* FoundationExt */, - 21B1B63E2B04C7CF00A63287 /* MSLogger */, - 21B1B6402B04C7CF00A63287 /* MSUserDefaults */, - 21B1B6432B04D64A00A63287 /* MSNetwork */, ); productName = MusicSpot; productReference = DD73F8552B024C4900EE9BF2 /* MusicSpot.app */; @@ -128,8 +109,6 @@ ); mainGroup = DD73F84C2B024C4900EE9BF2; packageReferences = ( - 21B1B63B2B04C7CF00A63287 /* XCLocalSwiftPackageReference "../MSFoundation" */, - 21B1B6422B04D64A00A63287 /* XCLocalSwiftPackageReference "../MSNetwork" */, ); productRefGroup = DD73F8562B024C4900EE9BF2 /* Products */; projectDirPath = ""; @@ -386,36 +365,6 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ - -/* Begin XCLocalSwiftPackageReference section */ - 21B1B63B2B04C7CF00A63287 /* XCLocalSwiftPackageReference "../MSFoundation" */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../MSFoundation; - }; - 21B1B6422B04D64A00A63287 /* XCLocalSwiftPackageReference "../MSNetwork" */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../MSNetwork; - }; -/* End XCLocalSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 21B1B63C2B04C7CF00A63287 /* FoundationExt */ = { - isa = XCSwiftPackageProductDependency; - productName = FoundationExt; - }; - 21B1B63E2B04C7CF00A63287 /* MSLogger */ = { - isa = XCSwiftPackageProductDependency; - productName = MSLogger; - }; - 21B1B6402B04C7CF00A63287 /* MSUserDefaults */ = { - isa = XCSwiftPackageProductDependency; - productName = MSUserDefaults; - }; - 21B1B6432B04D64A00A63287 /* MSNetwork */ = { - isa = XCSwiftPackageProductDependency; - productName = MSNetwork; - }; -/* End XCSwiftPackageProductDependency section */ }; rootObject = DD73F84D2B024C4900EE9BF2 /* Project object */; } From 65af1795c4eff0741c67443495688d3c8fd4c1db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Mon, 27 Nov 2023 14:10:09 +0900 Subject: [PATCH 02/40] =?UTF-8?q?Workspace=20=EC=84=B8=ED=8C=85=20Cherry-P?= =?UTF-8?q?ick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/MusicSpot.xcworkspace/contents.xcworkspacedata | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata index 8cad135..37bd4b2 100644 --- a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata +++ b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata @@ -11,12 +11,15 @@ location = "group:MusicSpot/MusicSpot.xcodeproj"> + location = "group:MSData"> + location = "group:MSUIKit"> + location = "group:MSCoreKit"> + + From e2ca9721fc610603dea5db412d8e9c5572b30512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 15:15:03 +0900 Subject: [PATCH 03/40] =?UTF-8?q?:construction=5Fworker:=20CI=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 --- .github/workflows/Xcode_build_test.yml | 92 ++++++++++++-------------- 1 file changed, 44 insertions(+), 48 deletions(-) diff --git a/.github/workflows/Xcode_build_test.yml b/.github/workflows/Xcode_build_test.yml index d61884a..116eb3d 100644 --- a/.github/workflows/Xcode_build_test.yml +++ b/.github/workflows/Xcode_build_test.yml @@ -1,7 +1,7 @@ name: Xcode_build_test env: - PACKAGES_JSON: '["MSCoreKit", "MSFoundation", "MSUIKit"]' + WORKSPACE: iOS/MusicSpot.xcworkspace on: pull_request: @@ -14,7 +14,7 @@ jobs: prepare-matrix: runs-on: macos-13 outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} + matrix: ${{ steps.generate-matrix.outputs.matrix }} steps: - uses: actions/checkout@v4 @@ -24,45 +24,21 @@ jobs: with: xcode-version: '15.0.1' - - name: Install jq - run: brew install jq - - name: Generate matrix - id: set-matrix + id: generate-matrix run: | - cd iOS matrix="{\"include\":[" - packages=$(echo $PACKAGES_JSON | jq -r '.[]') first_entry=true - for package in $packages; do - cd $package - for scheme in $(xcodebuild -list | grep -E '^[[:space:]]*Schemes:' -A 10 | tail -n +2 | grep -v '^$'); do - if [[ $scheme != *"-Package" ]] && [[ $scheme != *"Tests" ]]; then - if [ "$first_entry" = true ]; then - first_entry=false - else - matrix+="," - fi - matrix+="{\"package\":\"$package\", \"scheme\":\"$scheme\"}" + for scheme in $(xcodebuild -workspace ${{ env.WORKSPACE }} -list | grep -A 100 "Schemes:" | grep -v "Schemes:" | sed '/^$/d' | sed 's/^[ \t]*//'); do + if [[ $scheme != *"-Package" ]] && [[ $scheme != *"Tests" ]]; then + if [ "$first_entry" = true ]; then + first_entry=false + else + matrix+="," fi - done - cd .. + matrix+="{\"scheme\":\"$scheme\"}" + fi done - # cd Features - # for package in JourneyList SaveJourney; do - # cd $package - # for scheme in $(xcodebuild -list | grep -E '^[[:space:]]*Schemes:' -A 10 | tail -n +2 | grep -v '^$'); do - # if [[ $scheme != *"-Package" ]]; then - # if [ "$first_entry" = true ]; then - # first_entry=false - # else - # matrix+="," - # fi - # matrix+="{\"package\":\"$package\", \"scheme\":\"$scheme\"}" - # fi - # done - # cd .. - # done matrix+="]}" echo "matrix=$matrix" >> $GITHUB_OUTPUT @@ -82,11 +58,10 @@ jobs: xcode-version: '15.0.1' - name: πŸ› οΈ Build ${{ matrix.scheme }} - if: ${{ !contains(matrix.scheme, 'Tests') }} run: | - echo "πŸ› οΈ Building ${{ matrix.package }} - Scheme: ${{ matrix.scheme }}" - cd iOS/${{ matrix.package }} + echo "πŸ› οΈ Building ${{ matrix.scheme }}" xcodebuild \ + -workspace ${{ env.WORKSPACE }} \ -scheme ${{ matrix.scheme }} \ -sdk 'iphonesimulator' \ -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ @@ -95,12 +70,33 @@ jobs: prepare-test-matrix: runs-on: macos-13 outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} + matrix: ${{ steps.generate-test-matrix.outputs.matrix }} steps: - - id: set-matrix - run: | - matrix="{\"package\": $PACKAGES_JSON}" - echo "matrix=$matrix" >> $GITHUB_OUTPUT + - uses: actions/checkout@v4 + + - name: Setup Xcode + if: ${{ !env.ACT }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + + - name: Generate test matrix + id: generate-test-matrix + run: | + matrix="{\"include\":[" + first_entry=true + for scheme in $(xcodebuild -workspace ${{ env.WORKSPACE }} -list | grep -A 100 "Schemes:" | grep -v "Schemes:" | sed '/^$/d' | sed 's/^[ \t]*//'); do + if [[ $scheme == *"Tests" ]]; then + if [ "$first_entry" = true ]; then + first_entry=false + else + matrix+="," + fi + matrix+="{\"scheme\":\"$scheme\"}" + fi + done + matrix+="]}" + echo "matrix=$matrix" >> $GITHUB_OUTPUT xcode-test: needs: prepare-test-matrix @@ -117,12 +113,12 @@ jobs: with: xcode-version: '15.0.1' - - name: πŸ§ͺ Test ${{ matrix.package }} + - name: πŸ§ͺ Test ${{ matrix.scheme }} run: | - echo "πŸ§ͺ Testing ${{ matrix.package }}" - cd iOS/${{ matrix.package }} + echo "πŸ§ͺ Testing ${{ matrix.scheme }}" xcodebuild \ - -scheme ${{ matrix.package }}-Package \ + -workspace ${{ env.WORKSPACE }} \ + -scheme ${{ matrix.scheme }} \ -sdk 'iphonesimulator' \ -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ - clean test + test From 2237f0a2ec75470cfd38b8b39d95af0d1156ff7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 15:34:34 +0900 Subject: [PATCH 04/40] =?UTF-8?q?:package:=20Workspace=20=EC=84=B8?= =?UTF-8?q?=ED=8C=85,=20Feature=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/HomeMap/.gitignore | 8 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ iOS/Features/HomeMap/Package.swift | 20 +++++++ .../HomeMap/Sources/HomeMap/HomeMap.swift | 2 + .../Tests/HomeMapTests/HomeMapTests.swift | 12 ++++ iOS/Features/RecordJourney/.gitignore | 8 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ iOS/Features/RecordJourney/Package.swift | 20 +++++++ .../Sources/RecordJourney/RecordJourney.swift | 2 + .../RecordJourneyTests.swift | 12 ++++ iOS/Features/RewindJourney/.gitignore | 8 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ iOS/Features/RewindJourney/Package.swift | 56 +++++++++++++++++++ .../Sources/RewindJourney/RewindJourney.swift | 2 + .../RewindJourneyTests.swift | 12 ++++ iOS/Features/SelectSong/.gitignore | 8 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ iOS/Features/SelectSong/Package.swift | 20 +++++++ .../Sources/SelectSong/SelectSong.swift | 2 + .../SelectSongTests/SelectSongTests.swift | 12 ++++ iOS/Features/Spot/.gitignore | 8 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++ iOS/Features/Spot/Package.swift | 52 +++++++++++++++++ iOS/Features/Spot/Sources/Spot/Spot.swift | 2 + .../Spot/Tests/SpotTests/SpotTests.swift | 12 ++++ .../contents.xcworkspacedata | 17 +++++- 26 files changed, 334 insertions(+), 1 deletion(-) create mode 100644 iOS/Features/HomeMap/.gitignore create mode 100644 iOS/Features/HomeMap/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/HomeMap/Package.swift create mode 100644 iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift create mode 100644 iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift create mode 100644 iOS/Features/RecordJourney/.gitignore create mode 100644 iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/RecordJourney/Package.swift create mode 100644 iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift create mode 100644 iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift create mode 100644 iOS/Features/RewindJourney/.gitignore create mode 100644 iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/RewindJourney/Package.swift create mode 100644 iOS/Features/RewindJourney/Sources/RewindJourney/RewindJourney.swift create mode 100644 iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift create mode 100644 iOS/Features/SelectSong/.gitignore create mode 100644 iOS/Features/SelectSong/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/SelectSong/Package.swift create mode 100644 iOS/Features/SelectSong/Sources/SelectSong/SelectSong.swift create mode 100644 iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift create mode 100644 iOS/Features/Spot/.gitignore create mode 100644 iOS/Features/Spot/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/Spot/Package.swift create mode 100644 iOS/Features/Spot/Sources/Spot/Spot.swift create mode 100644 iOS/Features/Spot/Tests/SpotTests/SpotTests.swift diff --git a/iOS/Features/HomeMap/.gitignore b/iOS/Features/HomeMap/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/HomeMap/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/HomeMap/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/HomeMap/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/HomeMap/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/HomeMap/Package.swift b/iOS/Features/HomeMap/Package.swift new file mode 100644 index 0000000..75b4ca0 --- /dev/null +++ b/iOS/Features/HomeMap/Package.swift @@ -0,0 +1,20 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "HomeMap", + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: "HomeMap", + targets: ["HomeMap"]) + ], + targets: [ + .target(name: "HomeMap"), + .testTarget(name: "HomeMapTests", + dependencies: ["HomeMap"]) + ] +) diff --git a/iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift b/iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift b/iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift new file mode 100644 index 0000000..dd3a3c2 --- /dev/null +++ b/iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift @@ -0,0 +1,12 @@ +import XCTest +@testable import HomeMap + +final class HomeMapTests: XCTestCase { + func testExample() throws { + // XCTest Documentation + // https://developer.apple.com/documentation/xctest + + // Defining Test Cases and Test Methods + // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods + } +} diff --git a/iOS/Features/RecordJourney/.gitignore b/iOS/Features/RecordJourney/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/RecordJourney/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/RecordJourney/Package.swift b/iOS/Features/RecordJourney/Package.swift new file mode 100644 index 0000000..e9def1a --- /dev/null +++ b/iOS/Features/RecordJourney/Package.swift @@ -0,0 +1,20 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "RecordJourney", + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: "RecordJourney", + targets: ["RecordJourney"]) + ], + targets: [ + .target(name: "RecordJourney"), + .testTarget(name: "RecordJourneyTests", + dependencies: ["RecordJourney"]) + ] +) diff --git a/iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift b/iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift b/iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift new file mode 100644 index 0000000..42a8d6c --- /dev/null +++ b/iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift @@ -0,0 +1,12 @@ +import XCTest +@testable import RecordJourney + +final class RecordJourneyTests: XCTestCase { + func testExample() throws { + // XCTest Documentation + // https://developer.apple.com/documentation/xctest + + // Defining Test Cases and Test Methods + // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods + } +} diff --git a/iOS/Features/RewindJourney/.gitignore b/iOS/Features/RewindJourney/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/RewindJourney/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/RewindJourney/Package.swift b/iOS/Features/RewindJourney/Package.swift new file mode 100644 index 0000000..12b6949 --- /dev/null +++ b/iOS/Features/RewindJourney/Package.swift @@ -0,0 +1,56 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +// MARK: - Constants + +extension String { + static let package = "RewindJourney" + static let rewindJourneyView = "RewindJourneyView" + static let msUIKit = "MSUIKit" + static let msFoundation = "MSFoundation" + static let msDesignsystem = "MSDesignSystem" + static let msLogger = "MSLogger" + + var testTarget: String { + return self + "Tests" + } + + var path: String { + return "../../" + self + } + + var featurePath: String { + return "../Features/" + self + } + +} + +// MARK: - Package + +let package = Package( + name: .package, + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: .rewindJourneyView, + targets: [.rewindJourneyView]) + ], + dependencies: [ + .package(path: .msUIKit.path), + .package(path: .msFoundation.path) + ], + targets: [ + // Codes + .target(name: .rewindJourneyView, + dependencies: [ + .product(name: .msUIKit, package: .msUIKit), + .product(name: .msDesignsystem, package: .msUIKit), + .product(name: .msLogger, package: .msFoundation) + ]) + + // Tests + ] +) diff --git a/iOS/Features/RewindJourney/Sources/RewindJourney/RewindJourney.swift b/iOS/Features/RewindJourney/Sources/RewindJourney/RewindJourney.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/RewindJourney/Sources/RewindJourney/RewindJourney.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift b/iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift new file mode 100644 index 0000000..b8c4d4a --- /dev/null +++ b/iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift @@ -0,0 +1,12 @@ +import XCTest +@testable import RewindJourney + +final class RewindJourneyTests: XCTestCase { + func testExample() throws { + // XCTest Documentation + // https://developer.apple.com/documentation/xctest + + // Defining Test Cases and Test Methods + // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods + } +} diff --git a/iOS/Features/SelectSong/.gitignore b/iOS/Features/SelectSong/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/SelectSong/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/SelectSong/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/SelectSong/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/SelectSong/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/SelectSong/Package.swift b/iOS/Features/SelectSong/Package.swift new file mode 100644 index 0000000..4779062 --- /dev/null +++ b/iOS/Features/SelectSong/Package.swift @@ -0,0 +1,20 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "SelectSong", + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: "SelectSong", + targets: ["SelectSong"]) + ], + targets: [ + .target(name: "SelectSong"), + .testTarget(name: "SelectSongTests", + dependencies: ["SelectSong"]) + ] +) diff --git a/iOS/Features/SelectSong/Sources/SelectSong/SelectSong.swift b/iOS/Features/SelectSong/Sources/SelectSong/SelectSong.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/SelectSong/Sources/SelectSong/SelectSong.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift b/iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift new file mode 100644 index 0000000..d072718 --- /dev/null +++ b/iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift @@ -0,0 +1,12 @@ +import XCTest +@testable import SelectSong + +final class SelectSongTests: XCTestCase { + func testExample() throws { + // XCTest Documentation + // https://developer.apple.com/documentation/xctest + + // Defining Test Cases and Test Methods + // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods + } +} diff --git a/iOS/Features/Spot/.gitignore b/iOS/Features/Spot/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/Spot/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/Spot/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/Spot/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/Spot/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift new file mode 100644 index 0000000..3398ceb --- /dev/null +++ b/iOS/Features/Spot/Package.swift @@ -0,0 +1,52 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +// MARK: - Constants + +extension String { + static let package = "Spot" + static let spotView = "SpotView" + static let msUIKit = "MSUIKit" + static let msFoundation = "MSFoundation" + static let msDesignsystem = "MSDesignSystem" + static let msLogger = "MSLogger" + + var testTarget: String { + return self + "Tests" + } + + var path: String { + return "../../" + self + } + +} + +// MARK: - Package + +let package = Package( + name: .package, + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: .spotView, + targets: [.spotView]) + ], + dependencies: [ + .package(path: .msUIKit.path), + .package(path: .msFoundation.path) + ], + targets: [ + // Codes + .target(name: .spotView, + dependencies: [ + .product(name: .msUIKit, package: .msUIKit), + .product(name: .msDesignsystem, package: .msUIKit), + .product(name: .msLogger, package: .msFoundation) + ]) + + // Tests + ] +) diff --git a/iOS/Features/Spot/Sources/Spot/Spot.swift b/iOS/Features/Spot/Sources/Spot/Spot.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/Spot/Sources/Spot/Spot.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/Spot/Tests/SpotTests/SpotTests.swift b/iOS/Features/Spot/Tests/SpotTests/SpotTests.swift new file mode 100644 index 0000000..e78beda --- /dev/null +++ b/iOS/Features/Spot/Tests/SpotTests/SpotTests.swift @@ -0,0 +1,12 @@ +import XCTest +@testable import Spot + +final class SpotTests: XCTestCase { + func testExample() throws { + // XCTest Documentation + // https://developer.apple.com/documentation/xctest + + // Defining Test Cases and Test Methods + // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods + } +} diff --git a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata index 37bd4b2..a34d56e 100644 --- a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata +++ b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata @@ -2,11 +2,26 @@ + location = "group:Features/HomeMap"> + + + + + + + + + + From 8b0842f92a6f842da8554f3d7c55b710aa7c11ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 15:35:05 +0900 Subject: [PATCH 05/40] =?UTF-8?q?:package:=20commit=20script=EC=97=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=90=9C=20=ED=8C=A8=ED=82=A4=EC=A7=80=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 --- iOS/commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOS/commit b/iOS/commit index 144cec4..2355a98 100755 --- a/iOS/commit +++ b/iOS/commit @@ -1,7 +1,7 @@ #!/bin/sh LINTPATH='.swiftlint.yml' -declare -a PATHS=("MSCoreKit" "MSFoundation" "MSUIKit" "MusicSpot") +declare -a PATHS=("MSCoreKit" "MSFoundation" "MSUIKit" "MSData" "MusicSpot" "Features") failures="" for path in "${PATHS[@]}"; do From 8e0c115ea9cfb8715087c9f7c5fcc2fb06dc4764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 15:38:08 +0900 Subject: [PATCH 06/40] =?UTF-8?q?:package:=20SpotView=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EC=9D=B4=EB=A6=84=20Spot=EC=9C=BC=EB=A1=9C=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 --- iOS/Features/Spot/Package.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift index 3398ceb..68e4d11 100644 --- a/iOS/Features/Spot/Package.swift +++ b/iOS/Features/Spot/Package.swift @@ -7,7 +7,7 @@ import PackageDescription extension String { static let package = "Spot" - static let spotView = "SpotView" + static let spot = "Spot" static let msUIKit = "MSUIKit" static let msFoundation = "MSFoundation" static let msDesignsystem = "MSDesignSystem" @@ -31,8 +31,8 @@ let package = Package( .iOS(.v15) ], products: [ - .library(name: .spotView, - targets: [.spotView]) + .library(name: .spot, + targets: [.spot]) ], dependencies: [ .package(path: .msUIKit.path), @@ -40,7 +40,7 @@ let package = Package( ], targets: [ // Codes - .target(name: .spotView, + .target(name: .spot, dependencies: [ .product(name: .msUIKit, package: .msUIKit), .product(name: .msDesignsystem, package: .msUIKit), From a5f0d3029e8e3de6f0f7b9d11f829199b028d024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 16:27:53 +0900 Subject: [PATCH 07/40] =?UTF-8?q?:package:=20RewindJourneyView=20=E2=9E=A1?= =?UTF-8?q?=EF=B8=8F=20RewindJourney=EB=A1=9C=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/RewindJourney/Package.swift | 8 +- .../MSCacheStorage/MSImageCacheStorage.swift | 84 +++++++++++++++++++ .../Protocol/CacheStorage.swift | 22 +++++ .../Sources/MSNetworking/ImageRouter.swift | 38 +++++++++ 4 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift create mode 100644 iOS/MSCoreKit/Sources/MSCacheStorage/Protocol/CacheStorage.swift create mode 100644 iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift diff --git a/iOS/Features/RewindJourney/Package.swift b/iOS/Features/RewindJourney/Package.swift index 12b6949..fbd5d5c 100644 --- a/iOS/Features/RewindJourney/Package.swift +++ b/iOS/Features/RewindJourney/Package.swift @@ -7,7 +7,7 @@ import PackageDescription extension String { static let package = "RewindJourney" - static let rewindJourneyView = "RewindJourneyView" + static let rewindJourney = "RewindJourney" static let msUIKit = "MSUIKit" static let msFoundation = "MSFoundation" static let msDesignsystem = "MSDesignSystem" @@ -35,8 +35,8 @@ let package = Package( .iOS(.v15) ], products: [ - .library(name: .rewindJourneyView, - targets: [.rewindJourneyView]) + .library(name: .rewindJourney, + targets: [.rewindJourney]) ], dependencies: [ .package(path: .msUIKit.path), @@ -44,7 +44,7 @@ let package = Package( ], targets: [ // Codes - .target(name: .rewindJourneyView, + .target(name: .rewindJourney, dependencies: [ .product(name: .msUIKit, package: .msUIKit), .product(name: .msDesignsystem, package: .msUIKit), diff --git a/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift b/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift new file mode 100644 index 0000000..b4538ee --- /dev/null +++ b/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift @@ -0,0 +1,84 @@ +// +// MSImageCacheStorage.swift +// MSCoreKit +// +// Created by 이창쀀 on 11/14/23. +// + +import Foundation + +public final class MSImageCacheStorage: CacheStorage { + + public typealias Cache = NSCache + + // MARK: - Properties + + private let memory: Cache + private let disk: FileManager + + private let decoder = JSONDecoder() + + // MARK: - Initializer + + public init(cache: Cache = Cache(), + fileManager: FileManager = .default) { + self.memory = cache + self.disk = fileManager + } + + // MARK: - Functions + + /// μΊμ‹±λœ 데이터λ₯Ό λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. + public func data(forKey key: String, etag: String? = nil) async -> NSData? { + // Memory Cache + if let memoryData = self.memory.object(forKey: key as NSString) { // memory hit + return memoryData + } + + // Disk Cache + if let cacheURL = self.cacheURL(forCache: "\(key).cache"), + let diskData = self.disk.contents(atPath: cacheURL.path) { // disk hit + return try? self.decoder.decode(MSCacheableData.self, from: diskData) + } + + return nil + } + + public func cleanDisk() throws { + if let path = self.cacheDirectoryURL?.path { + try self.disk.removeItem(atPath: path) + } + } + +} + +// MARK: - URLs + +private extension MSImageCacheStorage { + + var cacheDirectoryURL: URL? { + if #available(iOS 16.0, *) { + return try? self.disk.url(for: .cachesDirectory, + in: .userDomainMask, + appropriateFor: .cachesDirectory, + create: true) + } else { + return self.disk + .urls(for: .cachesDirectory, in: .userDomainMask) + .first + } + } + + func cacheURL(forCache cache: String) -> URL? { + if #available(iOS 16.0, *) { + return self.cacheDirectoryURL? + .appending(path: "MusicSpot", directoryHint: .isDirectory) + .appending(component: cache, directoryHint: .notDirectory) + } else { + return self.cacheDirectoryURL? + .appendingPathExtension("MusicSpot") + .appendingPathComponent(cache) + } + } + +} diff --git a/iOS/MSCoreKit/Sources/MSCacheStorage/Protocol/CacheStorage.swift b/iOS/MSCoreKit/Sources/MSCacheStorage/Protocol/CacheStorage.swift new file mode 100644 index 0000000..0cf1970 --- /dev/null +++ b/iOS/MSCoreKit/Sources/MSCacheStorage/Protocol/CacheStorage.swift @@ -0,0 +1,22 @@ +// +// CacheStorage.swift +// MSCoreKit +// +// Created by 이창쀀 on 2023.11.28. +// + +import Foundation + +public protocol CacheStorage { + + associatedtype Key: AnyObject = NSString + associatedtype Value: AnyObject + + typealias Cache = NSCache + + // MARK: - Functions + + func data(forKey key: Key) async -> Value? + func cleanDisk() throws + +} diff --git a/iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift b/iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift new file mode 100644 index 0000000..9218c67 --- /dev/null +++ b/iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift @@ -0,0 +1,38 @@ +// +// ImageRouter.swift +// MSCoreKit +// +// Created by 이창쀀 on 2023.11.28. +// + +import Foundation + +public struct ImageRouter: Router { + + // MARK: - Properties + + public var baseURL: String + + public var pathURL: String + + public var method: HTTPMethod { + return .get + } + + public var body: HTTPBody? + + public var headers: HTTPHeaders? + + // MARK: - Initializer + + public init(baseURL: String, + pathURL: String, + body: HTTPBody? = nil, + headers: HTTPHeaders? = nil) { + self.baseURL = baseURL + self.pathURL = pathURL + self.body = body + self.headers = headers + } + +} From 710e9f90b46a9bd54539f2e956835533f5559be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 16:53:50 +0900 Subject: [PATCH 08/40] =?UTF-8?q?:package:=20=ED=9D=94=EC=A0=81=EB=A7=8C?= =?UTF-8?q?=20=EC=9E=88=EB=8A=94=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/HomeMap/Package.swift | 4 +- .../Tests/HomeMapTests/HomeMapTests.swift | 12 --- iOS/Features/JourneyList/.gitignore | 8 ++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ iOS/Features/JourneyList/Package.swift | 27 +++++++ .../Sources/JourneyList/JourneyList.swift | 2 + iOS/Features/RecordJourney/Package.swift | 4 +- .../RecordJourneyTests.swift | 12 --- iOS/Features/SaveJourney/.gitignore | 8 ++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ iOS/Features/SaveJourney/Package.swift | 23 ++++++ .../Sources/SaveJourney/SaveJourney.swift | 2 + iOS/Features/SelectSong/Package.swift | 4 +- .../SelectSongTests/SelectSongTests.swift | 12 --- .../xcschemes/MSCacheStorage.xcscheme | 12 +++ .../xcshareddata/xcschemes/MSFetcher.xcscheme | 12 +++ .../xcschemes/MSNetworking.xcscheme | 12 +++ .../xcschemes/MSPersistentStorage.xcscheme | 12 +++ iOS/MSCoreKit/Package.swift | 8 +- iOS/MSData/.gitignore | 8 ++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../xcshareddata/xcschemes/MSData.xcscheme | 78 +++++++++++++++++++ .../xcschemes/MSDataTests.xcscheme | 53 +++++++++++++ iOS/MSData/Package.swift | 25 ++++++ iOS/MSData/Sources/MSData/MSData.swift | 2 + .../Tests/MSDataTests/MSDataTests.swift} | 4 +- .../xcshareddata/xcschemes/MSLogger.xcscheme | 12 +++ .../xcschemes/MSUserDefaults.xcscheme | 78 +++++++++++++++++++ iOS/MSUIKit/Package.swift | 6 +- .../MSDesignSystemTests.swift | 10 --- .../contents.xcworkspacedata | 8 +- .../xcshareddata/xcschemes/MusicSpot.xcscheme | 77 ++++++++++++++++++ 32 files changed, 486 insertions(+), 73 deletions(-) delete mode 100644 iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift create mode 100644 iOS/Features/JourneyList/.gitignore create mode 100644 iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/JourneyList/Package.swift create mode 100644 iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift delete mode 100644 iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift create mode 100644 iOS/Features/SaveJourney/.gitignore create mode 100644 iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/SaveJourney/Package.swift create mode 100644 iOS/Features/SaveJourney/Sources/SaveJourney/SaveJourney.swift delete mode 100644 iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift create mode 100644 iOS/MSData/.gitignore create mode 100644 iOS/MSData/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme create mode 100644 iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme create mode 100644 iOS/MSData/Package.swift create mode 100644 iOS/MSData/Sources/MSData/MSData.swift rename iOS/{Features/Spot/Tests/SpotTests/SpotTests.swift => MSData/Tests/MSDataTests/MSDataTests.swift} (82%) create mode 100644 iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaults.xcscheme delete mode 100644 iOS/MSUIKit/Tests/MSDesignSystemTests/MSDesignSystemTests.swift create mode 100644 iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme diff --git a/iOS/Features/HomeMap/Package.swift b/iOS/Features/HomeMap/Package.swift index 75b4ca0..791aac9 100644 --- a/iOS/Features/HomeMap/Package.swift +++ b/iOS/Features/HomeMap/Package.swift @@ -13,8 +13,6 @@ let package = Package( targets: ["HomeMap"]) ], targets: [ - .target(name: "HomeMap"), - .testTarget(name: "HomeMapTests", - dependencies: ["HomeMap"]) + .target(name: "HomeMap") ] ) diff --git a/iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift b/iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift deleted file mode 100644 index dd3a3c2..0000000 --- a/iOS/Features/HomeMap/Tests/HomeMapTests/HomeMapTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import XCTest -@testable import HomeMap - -final class HomeMapTests: XCTestCase { - func testExample() throws { - // XCTest Documentation - // https://developer.apple.com/documentation/xctest - - // Defining Test Cases and Test Methods - // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods - } -} diff --git a/iOS/Features/JourneyList/.gitignore b/iOS/Features/JourneyList/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/JourneyList/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/JourneyList/Package.swift b/iOS/Features/JourneyList/Package.swift new file mode 100644 index 0000000..0920ee1 --- /dev/null +++ b/iOS/Features/JourneyList/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "JourneyList", + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: "JourneyList", + targets: ["JourneyList"]) + ], + dependencies: [ + .package(name: "MSData", + path: "../../MSData"), + .package(name: "MSUIKit", + path: "../../MSUIKit"), + .package(name: "MSNetworking", + path: "../../MSCoreKit") + ], + targets: [ + .target(name: "JourneyList", + dependencies: ["MSData", "MSUIKit", "MSNetworking"]) + ] +) diff --git a/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift b/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/RecordJourney/Package.swift b/iOS/Features/RecordJourney/Package.swift index e9def1a..ab62c81 100644 --- a/iOS/Features/RecordJourney/Package.swift +++ b/iOS/Features/RecordJourney/Package.swift @@ -13,8 +13,6 @@ let package = Package( targets: ["RecordJourney"]) ], targets: [ - .target(name: "RecordJourney"), - .testTarget(name: "RecordJourneyTests", - dependencies: ["RecordJourney"]) + .target(name: "RecordJourney") ] ) diff --git a/iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift b/iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift deleted file mode 100644 index 42a8d6c..0000000 --- a/iOS/Features/RecordJourney/Tests/RecordJourneyTests/RecordJourneyTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import XCTest -@testable import RecordJourney - -final class RecordJourneyTests: XCTestCase { - func testExample() throws { - // XCTest Documentation - // https://developer.apple.com/documentation/xctest - - // Defining Test Cases and Test Methods - // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods - } -} diff --git a/iOS/Features/SaveJourney/.gitignore b/iOS/Features/SaveJourney/.gitignore new file mode 100644 index 0000000..0023a53 --- /dev/null +++ b/iOS/Features/SaveJourney/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/SaveJourney/Package.swift b/iOS/Features/SaveJourney/Package.swift new file mode 100644 index 0000000..490cd31 --- /dev/null +++ b/iOS/Features/SaveJourney/Package.swift @@ -0,0 +1,23 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "SaveJourney", + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: "SaveJourney", + targets: ["SaveJourney"]) + ], + dependencies: [ + .package(name: "MSUIKit", + path: "../../MSUIKit") + ], + targets: [ + .target(name: "SaveJourney", + dependencies: ["MSUIKit"]) + ] +) diff --git a/iOS/Features/SaveJourney/Sources/SaveJourney/SaveJourney.swift b/iOS/Features/SaveJourney/Sources/SaveJourney/SaveJourney.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/Features/SaveJourney/Sources/SaveJourney/SaveJourney.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/SelectSong/Package.swift b/iOS/Features/SelectSong/Package.swift index 4779062..b78d896 100644 --- a/iOS/Features/SelectSong/Package.swift +++ b/iOS/Features/SelectSong/Package.swift @@ -13,8 +13,6 @@ let package = Package( targets: ["SelectSong"]) ], targets: [ - .target(name: "SelectSong"), - .testTarget(name: "SelectSongTests", - dependencies: ["SelectSong"]) + .target(name: "SelectSong") ] ) diff --git a/iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift b/iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift deleted file mode 100644 index d072718..0000000 --- a/iOS/Features/SelectSong/Tests/SelectSongTests/SelectSongTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import XCTest -@testable import SelectSong - -final class SelectSongTests: XCTestCase { - func testExample() throws { - // XCTest Documentation - // https://developer.apple.com/documentation/xctest - - // Defining Test Cases and Test Methods - // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods - } -} diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorage.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorage.xcscheme index 1113d29..a20692e 100644 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorage.xcscheme +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorage.xcscheme @@ -28,6 +28,18 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme new file mode 100644 index 0000000..fdac714 --- /dev/null +++ b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme new file mode 100644 index 0000000..c0fb639 --- /dev/null +++ b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSData/Package.swift b/iOS/MSData/Package.swift new file mode 100644 index 0000000..bffa772 --- /dev/null +++ b/iOS/MSData/Package.swift @@ -0,0 +1,25 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. +import PackageDescription + +let package = Package( + name: "MSData", + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: "MSData", + targets: ["MSData"]) + ], + dependencies: [ + .package(name: "MSNetworking", + path: "../MSCoreKit") + ], + targets: [ + .target(name: "MSData", + dependencies: ["MSNetworking"], + resources: [.process("Resources")]), + .testTarget(name: "MSDataTests", + dependencies: ["MSData"]) + ] +) diff --git a/iOS/MSData/Sources/MSData/MSData.swift b/iOS/MSData/Sources/MSData/MSData.swift new file mode 100644 index 0000000..08b22b8 --- /dev/null +++ b/iOS/MSData/Sources/MSData/MSData.swift @@ -0,0 +1,2 @@ +// The Swift Programming Language +// https://docs.swift.org/swift-book diff --git a/iOS/Features/Spot/Tests/SpotTests/SpotTests.swift b/iOS/MSData/Tests/MSDataTests/MSDataTests.swift similarity index 82% rename from iOS/Features/Spot/Tests/SpotTests/SpotTests.swift rename to iOS/MSData/Tests/MSDataTests/MSDataTests.swift index e78beda..18cf9e1 100644 --- a/iOS/Features/Spot/Tests/SpotTests/SpotTests.swift +++ b/iOS/MSData/Tests/MSDataTests/MSDataTests.swift @@ -1,7 +1,7 @@ import XCTest -@testable import Spot +@testable import MSData -final class SpotTests: XCTestCase { +final class MSDataTests: XCTestCase { func testExample() throws { // XCTest Documentation // https://developer.apple.com/documentation/xctest diff --git a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLogger.xcscheme b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLogger.xcscheme index c44d62d..04b9652 100644 --- a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLogger.xcscheme +++ b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLogger.xcscheme @@ -28,6 +28,18 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSUIKit/Package.swift b/iOS/MSUIKit/Package.swift index 0e5acca..f100a0e 100644 --- a/iOS/MSUIKit/Package.swift +++ b/iOS/MSUIKit/Package.swift @@ -36,11 +36,7 @@ let package = Package( .process("../MSDesignSystem/Resources") ]), .target(name: .uiKit, - dependencies: ["MSDesignSystem"]), - - // Tests - .testTarget(name: .designSystem.testTarget, - dependencies: ["MSDesignSystem"]) + dependencies: ["MSDesignSystem"]) ], swiftLanguageVersions: [.v5] ) diff --git a/iOS/MSUIKit/Tests/MSDesignSystemTests/MSDesignSystemTests.swift b/iOS/MSUIKit/Tests/MSDesignSystemTests/MSDesignSystemTests.swift deleted file mode 100644 index 7eebb79..0000000 --- a/iOS/MSUIKit/Tests/MSDesignSystemTests/MSDesignSystemTests.swift +++ /dev/null @@ -1,10 +0,0 @@ -// -// MSDesignSystemTests.swift -// MSUIKit -// -// Created by 이창쀀 on 11/26/23. -// - -import XCTest - -final class MSDesignSystemTests: XCTestCase { } diff --git a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata index a34d56e..63c9482 100644 --- a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata +++ b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata @@ -1,6 +1,9 @@ + + @@ -22,9 +25,6 @@ - - @@ -35,6 +35,6 @@ location = "group:MSCoreKit"> + location = "group:MusicSpot/../MSFoundation"> diff --git a/iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme b/iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme new file mode 100644 index 0000000..7eb04dc --- /dev/null +++ b/iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 63230d7a818b696cc15fd7db8ae54fe2948b3414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 17:16:02 +0900 Subject: [PATCH 09/40] =?UTF-8?q?:art:=20=EB=B9=8C=EB=93=9C=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=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 --- .../MSCacheStorage/MSCacheStorage.swift | 96 ------------------ .../MSCacheStorage/MSCacheableData.swift | 29 ------ .../MSCacheStorage/MSImageCacheStorage.swift | 4 +- .../Sources/MSNetworking/ImageRouter.swift | 38 ------- .../Sources/MSNetworking/MSRouter.swift | 42 -------- .../Calender.pdf | Bin .../Contents.json | 0 .../Calender.imageset/Calender 1.pdf | Bin 4018 -> 0 bytes 8 files changed, 2 insertions(+), 207 deletions(-) delete mode 100644 iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheStorage.swift delete mode 100644 iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheableData.swift delete mode 100644 iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift delete mode 100644 iOS/MSCoreKit/Sources/MSNetworking/MSRouter.swift rename iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/{Calender.imageset => Calendar.imageset}/Calender.pdf (100%) rename iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/{Calender.imageset => Calendar.imageset}/Contents.json (100%) delete mode 100644 iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Calender 1.pdf diff --git a/iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheStorage.swift b/iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheStorage.swift deleted file mode 100644 index acc1e77..0000000 --- a/iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheStorage.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// MSCacheStorage.swift -// MSCoreKit -// -// Created by 이창쀀 on 11/14/23. -// - -import Foundation - -import MSUserDefaults - -public protocol KeyValueStorage { - associatedtype Value - func data(forKey key: String, etag: String?) async -> Value? - func cleanDisk() throws -} - -public final class MSCacheStorage: KeyValueStorage { - - public typealias Key = NSString - public typealias Cache = NSCache - - // MARK: - Properties - - private let memory: Cache - private let disk: FileManager - - // MARK: - Initializer - - public init(cache: Cache = Cache(), - fileManager: FileManager = .default) { - self.memory = cache - self.disk = fileManager - } - - // MARK: - Functions - - /// μΊμ‹±λœ 데이터λ₯Ό λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. - public func data(forKey key: String, etag: String? = nil) async -> MSCacheableData? { - // Memory Cache - if let memoryData = memory.object(forKey: key as NSString) { // memory hit - // TODO: μ„œλ²„μ™€ 데이터 검증 ν•„μš” (etag ν™œμš©) - return memoryData - } - - // Disk Cache - if let cacheURL = cacheURL(forCache: "\(key).cache"), - let diskData = disk.contents(atPath: cacheURL.path) { // disk hit - // TODO: μ„œλ²„μ™€ 데이터 검증 ν•„μš” (etag ν™œμš©) - let decoder = JSONDecoder() - return try? decoder.decode(MSCacheableData.self, from: diskData) - } - - // Request - // TODO: μ„œλ²„λ‘œλΆ€ν„° 데이터 μˆ˜μ‹  및 캐싱 + return κ°’ λ³€κ²½ - return nil - } - - public func cleanDisk() throws { - if let path = cacheDirectoryURL?.path { - try disk.removeItem(atPath: path) - } - } - -} - -// MARK: - URLs - -private extension MSCacheStorage { - - var cacheDirectoryURL: URL? { - if #available(iOS 16.0, *) { - return try? disk.url(for: .cachesDirectory, - in: .userDomainMask, - appropriateFor: .cachesDirectory, - create: true) - } else { - return disk - .urls(for: .cachesDirectory, in: .userDomainMask) - .first - } - } - - func cacheURL(forCache cache: String) -> URL? { - if #available(iOS 16.0, *) { - return cacheDirectoryURL? - .appending(path: "MusicSpot", directoryHint: .isDirectory) - .appending(component: cache, directoryHint: .notDirectory) - } else { - return cacheDirectoryURL? - .appendingPathExtension("MusicSpot") - .appendingPathComponent(cache) - } - } - -} diff --git a/iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheableData.swift b/iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheableData.swift deleted file mode 100644 index 4bdf3c8..0000000 --- a/iOS/MSCoreKit/Sources/MSCacheStorage/MSCacheableData.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// MSCacheableData.swift -// MSCoreKit -// -// Created by 이창쀀 on 11/15/23. -// - -import Foundation - -public final class MSCacheableData: Codable { - - struct Metadata: Hashable, Codable { - let etag: String - let lastUsed: Date - } - - // MARK: - Properties - - let data: Data - let metadata: Metadata - - // MARK: - Initializer - - public init(data: Data, etag: String) { - self.data = data - self.metadata = Metadata(etag: etag, lastUsed: .now) - } - -} diff --git a/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift b/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift index b4538ee..af47f8e 100644 --- a/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift +++ b/iOS/MSCoreKit/Sources/MSCacheStorage/MSImageCacheStorage.swift @@ -29,7 +29,7 @@ public final class MSImageCacheStorage: CacheStorage { // MARK: - Functions /// μΊμ‹±λœ 데이터λ₯Ό λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. - public func data(forKey key: String, etag: String? = nil) async -> NSData? { + public func data(forKey key: NSString) async -> NSData? { // Memory Cache if let memoryData = self.memory.object(forKey: key as NSString) { // memory hit return memoryData @@ -38,7 +38,7 @@ public final class MSImageCacheStorage: CacheStorage { // Disk Cache if let cacheURL = self.cacheURL(forCache: "\(key).cache"), let diskData = self.disk.contents(atPath: cacheURL.path) { // disk hit - return try? self.decoder.decode(MSCacheableData.self, from: diskData) + } return nil diff --git a/iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift b/iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift deleted file mode 100644 index 9218c67..0000000 --- a/iOS/MSCoreKit/Sources/MSNetworking/ImageRouter.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// ImageRouter.swift -// MSCoreKit -// -// Created by 이창쀀 on 2023.11.28. -// - -import Foundation - -public struct ImageRouter: Router { - - // MARK: - Properties - - public var baseURL: String - - public var pathURL: String - - public var method: HTTPMethod { - return .get - } - - public var body: HTTPBody? - - public var headers: HTTPHeaders? - - // MARK: - Initializer - - public init(baseURL: String, - pathURL: String, - body: HTTPBody? = nil, - headers: HTTPHeaders? = nil) { - self.baseURL = baseURL - self.pathURL = pathURL - self.body = body - self.headers = headers - } - -} diff --git a/iOS/MSCoreKit/Sources/MSNetworking/MSRouter.swift b/iOS/MSCoreKit/Sources/MSNetworking/MSRouter.swift deleted file mode 100644 index 62158bc..0000000 --- a/iOS/MSCoreKit/Sources/MSNetworking/MSRouter.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// MSRouter.swift -// MSCoreKit -// -// Created by 전민건 on 11/16/23. -// - -import Foundation - -public struct RouterType { - - private var encodable: Encodable? - - //κΈ°λŠ₯별 MSRouter - public var getJourney: MSRouter { - MSRouter(baseURL: .none, pathURL: .none, method: .get, body: HTTPBody(content: encodable)) - } - public var getPerson: MSRouter { - MSRouter(baseURL: .none, pathURL: .none, method: .get, body: HTTPBody(content: encodable)) - } - -} - -public struct MSRouter: Router { - - let baseURL: APIbaseURL - let pathURL: APIpathURL - let method: HTTPMethod - var body: HTTPBody - - func asURLRequest() -> URLRequest? { - guard let url = URL(string: baseURL.rawValue + pathURL.rawValue) else { - return nil - } - var request = URLRequest(url: url) - request.httpMethod = method.rawValue - request.httpBody = body.contentToData() - - return request - } - -} diff --git a/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Calender.pdf b/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Calender.pdf similarity index 100% rename from iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Calender.pdf rename to iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Calender.pdf diff --git a/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Contents.json b/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Contents.json similarity index 100% rename from iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Contents.json rename to iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Contents.json diff --git a/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Calender 1.pdf b/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calender.imageset/Calender 1.pdf deleted file mode 100644 index 88304860eadd0b5156d61d69bf15113f536951ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4018 zcmbtXTaOzx6n>vy;g?D+QXJdISE;H*w-g~jlr3)+4AH90t zj+=*J{bKy?lCr)#0?= z4^EqCP4dd>;DgCQJphZv$6^(JG{I9)q1mJ76VxQxdFic4h6O%cgXs z%r*$kb|^X!M6lP5&%#0q#n1)ReiV({0dzCReAq2O@xa=vU|0@1f8BG)b64T8G)wN% z1X={7(@Caa3R2~*w;6u4gxa9V1TqY@tOF{Pi;KNDU`j;7k#7UgQH(h$K#5NUCg=8B z(uT_^0z$#C46r60P4N^Js+TBbA_Xja;{q_N$r?(5u|hsZuU1Z{8c1*>^f3@K3%CPl zLrET#!VS^Igt$~ zQ^HkiV#x?G+()URDWx~i@7d#n;Zi6>#U&1ZLlECtS!Y~%>Q+3=Jc~25+y*vdvq;WNh6cqShXs%DM7nnT+9ndx~@}k+htUY zrv)AN6Uu~=U>I1i4o;R*v5cG-Ho2ilKNQXAMRy_kl(07;tmHVsuvSh^Sw`PCPQMyQs6i;3MWhuG_XIgxPFY9OfX(8FnEC!A~FkXQ4t;G zHY^Tvy+f_MPE|XiF7q_K#6BwF9a={wJqi?|;BI&r0&*J? zMnwl}slY*QYwRTKAgm2kPlKekmta9=VgcPOjYnHm(X|SM!19=z1PY44Vu)MsFcuKl z#ty6vAz0J2Twr3(1={RhNEDxe&AJ8Sm3IYl%-(+WW%CA`5c3lA{L}NM5Be201MUM< zJQ4%gMrR{BgpbK5v^EIPRS}z+L2p7p70-^NN*P2`A`>;nh@3@ZvD^SQ!rI_)5;~%S z&g9J1goZ&6Ii@6C42GU%0l3p(+XjZY(9s`QHxOkbtOSVN2Lmu5c`Z?}l@e7QQ>5BH z5p4>7`$W*D*%3~KW zwjKP23$h%mXD%mGH)dO+92hbd0aJ)vTepiW{Evl$0o``zCvSnUaU!Mp@PKk`7!n@Q z5?;lrH+;YRNy*C9Z`<2hFzHf}B#7u^zGg03Vlrm8#E@N{5z^kW>%;~@xRq)bFLtDO z!y~UsS|Cjy^L-qL+JRrzfS(cnxql39+RXyApUfSJ8=y9xB)Hrc_3K$d(cuEfGj(xK z=M^}GwM!F7v{u&ZJalFWUsoY<@1_U@d1A7FfSQwC+5(bnbULxGr-PqY?d>!_wD?Um zJ-~3eO!EFh74&!6`s@Ava6YLwzv7*SZ~enkI{pR`MZ}q0%lf-oA z=VID@Y?M_>xqt_m$4iwwyla{c}N9ZXg1 z!L6G0+#EiD*IwCw0-SL~vd9ypbyJY?QIKCZ>O2brH{8wSl;)(;f zeHg#>r1k<~-d#et#Nz?SpHPu6A2Z_8jm%wAC0zAp=zQGV@5bYRSM~b47YN7W)8S!! sq8{JhJ(+^CzC9eyiXE;2UcbKocZBuzb-g*Bt2?+O#o^JTZ+?3DAM-LHR{#J2 From b9c2450c1c64800211a0179e84e36782f8c542c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Tue, 28 Nov 2023 18:58:23 +0900 Subject: [PATCH 10/40] =?UTF-8?q?:truck:=20Workspace=EC=9D=98=20Feature?= =?UTF-8?q?=EB=93=A4=EC=9D=84=20=EA=B7=B8=EB=A3=B9=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata index 63c9482..a4dda14 100644 --- a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata +++ b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata @@ -4,27 +4,31 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + From b068a58dea56b984a1357588f5e5326b8af687c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Wed, 29 Nov 2023 13:51:49 +0900 Subject: [PATCH 11/40] =?UTF-8?q?:package:=20Dependency=EB=A5=BC=20?= =?UTF-8?q?=ED=86=B5=ED=95=9C=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/{HomeMap => Home}/.gitignore | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcschemes/NavigateMap.xcscheme} | 24 +-- .../xcschemes/RecordJourney.xcscheme} | 24 +-- iOS/Features/Home/Package.swift | 38 ++++ .../Sources/NavigateMap/NavigateMap.swift | 8 + .../Sources/RecordJourney/RecordJourney.swift | 8 + iOS/Features/HomeMap/Package.swift | 18 -- .../HomeMap/Sources/HomeMap/HomeMap.swift | 2 - .../contents.xcworkspacedata | 7 - .../xcschemes/JourneyList.xcscheme} | 37 ++-- iOS/Features/JourneyList/Package.swift | 33 +-- .../Sources/JourneyList/JourneyList.swift | 10 +- iOS/Features/RecordJourney/.gitignore | 8 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - iOS/Features/RecordJourney/Package.swift | 18 -- .../Sources/RecordJourney/RecordJourney.swift | 2 - .../xcschemes/RewindJourney.xcscheme | 66 ++++++ iOS/Features/RewindJourney/Package.swift | 53 +++-- .../RewindJourneyTests.swift | 12 -- .../contents.xcworkspacedata | 7 - .../xcschemes/SaveJourney.xcscheme | 66 ++++++ iOS/Features/SaveJourney/Package.swift | 50 ++++- iOS/Features/SelectSong/Package.swift | 41 +++- .../xcshareddata/xcschemes/Spot.xcscheme} | 37 ++-- iOS/Features/Spot/Package.swift | 51 +++-- .../xcschemes/MSNetworkingTests.xcscheme | 53 ----- .../MSPersistentStorageTests.xcscheme | 53 ----- .../xcschemes/MSDataTests.xcscheme | 53 ----- .../xcschemes/MSLoggerTests.xcscheme | 53 ----- .../xcschemes/MSUserDefaultsTests.xcscheme | 53 ----- .../xcschemes/MSDesignSystem.xcscheme | 66 ++++++ .../contents.xcworkspacedata | 5 +- .../MusicSpot.xcodeproj/project.pbxproj | 202 +++++++++++++++++- 34 files changed, 687 insertions(+), 479 deletions(-) rename iOS/Features/{HomeMap => Home}/.gitignore (100%) rename iOS/Features/{HomeMap => Home}/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename iOS/{MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme => Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme} (74%) rename iOS/{MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme => Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme} (73%) create mode 100644 iOS/Features/Home/Package.swift create mode 100644 iOS/Features/Home/Sources/NavigateMap/NavigateMap.swift create mode 100644 iOS/Features/Home/Sources/RecordJourney/RecordJourney.swift delete mode 100644 iOS/Features/HomeMap/Package.swift delete mode 100644 iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift delete mode 100644 iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata rename iOS/{MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme => Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme} (66%) delete mode 100644 iOS/Features/RecordJourney/.gitignore delete mode 100644 iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 iOS/Features/RecordJourney/Package.swift delete mode 100644 iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift create mode 100644 iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme delete mode 100644 iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift delete mode 100644 iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme rename iOS/{MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme => Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme} (68%) delete mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme delete mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme delete mode 100644 iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme delete mode 100644 iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme delete mode 100644 iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme create mode 100644 iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystem.xcscheme diff --git a/iOS/Features/HomeMap/.gitignore b/iOS/Features/Home/.gitignore similarity index 100% rename from iOS/Features/HomeMap/.gitignore rename to iOS/Features/Home/.gitignore diff --git a/iOS/Features/HomeMap/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/Home/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from iOS/Features/HomeMap/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to iOS/Features/Home/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme b/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme similarity index 74% rename from iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme rename to iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme index 4fe42f0..f4a8537 100644 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme +++ b/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme @@ -14,9 +14,9 @@ buildForAnalyzing = "YES"> @@ -28,18 +28,6 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> - - - - - - diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme b/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme similarity index 73% rename from iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme rename to iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme index 6aed764..c01b3e3 100644 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme +++ b/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme @@ -14,9 +14,9 @@ buildForAnalyzing = "YES"> @@ -28,18 +28,6 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> - - - - - - diff --git a/iOS/Features/Home/Package.swift b/iOS/Features/Home/Package.swift new file mode 100644 index 0000000..237d1a7 --- /dev/null +++ b/iOS/Features/Home/Package.swift @@ -0,0 +1,38 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +// MARK: - Constants + +private extension String { + + static let package = "FeatureHome" + +} + +private enum Target { + + static let navigateMap = "NavigateMap" + static let recordJourney = "RecordJourney" + +} + +// MARK: - Package + +let package = Package( + name: .package, + platforms: [ + .iOS(.v15) + ], + products: [ + .library(name: Target.navigateMap, + targets: [Target.navigateMap]), + .library(name: Target.recordJourney, + targets: [Target.recordJourney]) + ], + targets: [ + .target(name: Target.navigateMap), + .target(name: Target.recordJourney) + ] +) diff --git a/iOS/Features/Home/Sources/NavigateMap/NavigateMap.swift b/iOS/Features/Home/Sources/NavigateMap/NavigateMap.swift new file mode 100644 index 0000000..57f01ed --- /dev/null +++ b/iOS/Features/Home/Sources/NavigateMap/NavigateMap.swift @@ -0,0 +1,8 @@ +// +// NavigateMap.swift +// Home +// +// Created by 이창쀀 on 2023.11.29. +// + +import Foundation diff --git a/iOS/Features/Home/Sources/RecordJourney/RecordJourney.swift b/iOS/Features/Home/Sources/RecordJourney/RecordJourney.swift new file mode 100644 index 0000000..17512ba --- /dev/null +++ b/iOS/Features/Home/Sources/RecordJourney/RecordJourney.swift @@ -0,0 +1,8 @@ +// +// RecordJourney.swift +// Home +// +// Created by 이창쀀 on 2023.11.29. +// + +import Foundation diff --git a/iOS/Features/HomeMap/Package.swift b/iOS/Features/HomeMap/Package.swift deleted file mode 100644 index 791aac9..0000000 --- a/iOS/Features/HomeMap/Package.swift +++ /dev/null @@ -1,18 +0,0 @@ -// swift-tools-version: 5.9 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "HomeMap", - platforms: [ - .iOS(.v15) - ], - products: [ - .library(name: "HomeMap", - targets: ["HomeMap"]) - ], - targets: [ - .target(name: "HomeMap") - ] -) diff --git a/iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift b/iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift deleted file mode 100644 index 08b22b8..0000000 --- a/iOS/Features/HomeMap/Sources/HomeMap/HomeMap.swift +++ /dev/null @@ -1,2 +0,0 @@ -// The Swift Programming Language -// https://docs.swift.org/swift-book diff --git a/iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/iOS/Features/JourneyList/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme b/iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme similarity index 66% rename from iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme rename to iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme index f299dc2..e56683b 100644 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme +++ b/iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme @@ -5,6 +5,22 @@ + + + + + + - - - - - - + + + + diff --git a/iOS/Features/JourneyList/Package.swift b/iOS/Features/JourneyList/Package.swift index 0920ee1..0b44822 100644 --- a/iOS/Features/JourneyList/Package.swift +++ b/iOS/Features/JourneyList/Package.swift @@ -3,25 +3,32 @@ import PackageDescription +// MARK: - Constants + +private extension String { + + static let package = "FeatureJourneyList" + +} + +private enum Target { + + static let journeyList = "JourneyList" + +} + +// MARK: - Package + let package = Package( - name: "JourneyList", + name: .package, platforms: [ .iOS(.v15) ], products: [ - .library(name: "JourneyList", - targets: ["JourneyList"]) - ], - dependencies: [ - .package(name: "MSData", - path: "../../MSData"), - .package(name: "MSUIKit", - path: "../../MSUIKit"), - .package(name: "MSNetworking", - path: "../../MSCoreKit") + .library(name: Target.journeyList, + targets: [Target.journeyList]) ], targets: [ - .target(name: "JourneyList", - dependencies: ["MSData", "MSUIKit", "MSNetworking"]) + .target(name: Target.journeyList) ] ) diff --git a/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift b/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift index 08b22b8..fa1180d 100644 --- a/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift +++ b/iOS/Features/JourneyList/Sources/JourneyList/JourneyList.swift @@ -1,2 +1,8 @@ -// The Swift Programming Language -// https://docs.swift.org/swift-book +// +// JourneyList.swift +// JourneyList +// +// Created by 이창쀀 on 2023.11.29. +// + +import Foundation diff --git a/iOS/Features/RecordJourney/.gitignore b/iOS/Features/RecordJourney/.gitignore deleted file mode 100644 index 0023a53..0000000 --- a/iOS/Features/RecordJourney/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -/.build -/Packages -xcuserdata/ -DerivedData/ -.swiftpm/configuration/registries.json -.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata -.netrc diff --git a/iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/iOS/Features/RecordJourney/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/iOS/Features/RecordJourney/Package.swift b/iOS/Features/RecordJourney/Package.swift deleted file mode 100644 index ab62c81..0000000 --- a/iOS/Features/RecordJourney/Package.swift +++ /dev/null @@ -1,18 +0,0 @@ -// swift-tools-version: 5.9 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "RecordJourney", - platforms: [ - .iOS(.v15) - ], - products: [ - .library(name: "RecordJourney", - targets: ["RecordJourney"]) - ], - targets: [ - .target(name: "RecordJourney") - ] -) diff --git a/iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift b/iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift deleted file mode 100644 index 08b22b8..0000000 --- a/iOS/Features/RecordJourney/Sources/RecordJourney/RecordJourney.swift +++ /dev/null @@ -1,2 +0,0 @@ -// The Swift Programming Language -// https://docs.swift.org/swift-book diff --git a/iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme b/iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme new file mode 100644 index 0000000..b502766 --- /dev/null +++ b/iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/RewindJourney/Package.swift b/iOS/Features/RewindJourney/Package.swift index fbd5d5c..6fb271e 100644 --- a/iOS/Features/RewindJourney/Package.swift +++ b/iOS/Features/RewindJourney/Package.swift @@ -5,25 +5,32 @@ import PackageDescription // MARK: - Constants -extension String { - static let package = "RewindJourney" - static let rewindJourney = "RewindJourney" - static let msUIKit = "MSUIKit" - static let msFoundation = "MSFoundation" - static let msDesignsystem = "MSDesignSystem" - static let msLogger = "MSLogger" +private extension String { + + static let package = "FeatureRewindJourney" var testTarget: String { return self + "Tests" } - var path: String { + var fromRootPath: String { return "../../" + self } - var featurePath: String { - return "../Features/" + self - } +} + +private enum Target { + + static let rewindJourney = "RewindJourney" + +} + +private enum Dependency { + + static let msUIKit = "MSUIKit" + static let msFoundation = "MSFoundation" + static let msDesignsystem = "MSDesignSystem" + static let msLogger = "MSLogger" } @@ -35,22 +42,24 @@ let package = Package( .iOS(.v15) ], products: [ - .library(name: .rewindJourney, - targets: [.rewindJourney]) + .library(name: Target.rewindJourney, + targets: [Target.rewindJourney]) ], dependencies: [ - .package(path: .msUIKit.path), - .package(path: .msFoundation.path) + .package(name: Dependency.msUIKit, + path: Dependency.msUIKit.fromRootPath), + .package(name: Dependency.msFoundation, + path: Dependency.msFoundation.fromRootPath) ], targets: [ - // Codes - .target(name: .rewindJourney, + .target(name: Target.rewindJourney, dependencies: [ - .product(name: .msUIKit, package: .msUIKit), - .product(name: .msDesignsystem, package: .msUIKit), - .product(name: .msLogger, package: .msFoundation) + .product(name: Dependency.msUIKit, + package: Dependency.msUIKit), + .product(name: Dependency.msDesignsystem, + package: Dependency.msUIKit), + .product(name: Dependency.msLogger, + package: Dependency.msFoundation) ]) - - // Tests ] ) diff --git a/iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift b/iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift deleted file mode 100644 index b8c4d4a..0000000 --- a/iOS/Features/RewindJourney/Tests/RewindJourneyTests/RewindJourneyTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import XCTest -@testable import RewindJourney - -final class RewindJourneyTests: XCTestCase { - func testExample() throws { - // XCTest Documentation - // https://developer.apple.com/documentation/xctest - - // Defining Test Cases and Test Methods - // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods - } -} diff --git a/iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/iOS/Features/SaveJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme b/iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme new file mode 100644 index 0000000..3b465cc --- /dev/null +++ b/iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/SaveJourney/Package.swift b/iOS/Features/SaveJourney/Package.swift index 490cd31..f9dec09 100644 --- a/iOS/Features/SaveJourney/Package.swift +++ b/iOS/Features/SaveJourney/Package.swift @@ -3,21 +3,57 @@ import PackageDescription +// MARK: - Constants + +private extension String { + + static let package = "FeatureSaveJourney" + + var testTarget: String { + return self + "Tests" + } + + var fromRootPath: String { + return "../../" + self + } + +} + +private enum Target { + + static let saveJourney = "SaveJourney" + +} + +private enum Dependency { + + static let msUIKit = "MSUIKit" + static let msFoundation = "MSFoundation" + static let msDesignsystem = "MSDesignSystem" + static let msLogger = "MSLogger" + +} + +// MARK: - Package + let package = Package( - name: "SaveJourney", + name: .package, platforms: [ .iOS(.v15) ], products: [ - .library(name: "SaveJourney", - targets: ["SaveJourney"]) + .library(name: Target.saveJourney, + targets: [Target.saveJourney]) ], dependencies: [ - .package(name: "MSUIKit", - path: "../../MSUIKit") + .package(name: Dependency.msUIKit, + path: Dependency.msUIKit.fromRootPath) ], targets: [ - .target(name: "SaveJourney", - dependencies: ["MSUIKit"]) + .target(name: Target.saveJourney, + dependencies: [ + .product(name: Dependency.msUIKit, + package: Dependency.msUIKit) + ]) ] ) diff --git a/iOS/Features/SelectSong/Package.swift b/iOS/Features/SelectSong/Package.swift index b78d896..910e61f 100644 --- a/iOS/Features/SelectSong/Package.swift +++ b/iOS/Features/SelectSong/Package.swift @@ -3,16 +3,49 @@ import PackageDescription +// MARK: - Constants + +private extension String { + + static let package = "FeatureSelectSong" + + var testTarget: String { + return self + "Tests" + } + + var fromRootPath: String { + return "../../" + self + } + +} + +private enum Target { + + static let selectSong = "SelectSong" + +} + +private enum Dependency { + + static let msUIKit = "MSUIKit" + static let msFoundation = "MSFoundation" + static let msDesignsystem = "MSDesignSystem" + static let msLogger = "MSLogger" + +} + +// MARK: - Package + let package = Package( - name: "SelectSong", + name: .package, platforms: [ .iOS(.v15) ], products: [ - .library(name: "SelectSong", - targets: ["SelectSong"]) + .library(name: Target.selectSong, + targets: [Target.selectSong]) ], targets: [ - .target(name: "SelectSong") + .target(name:Target.selectSong) ] ) diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme b/iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme similarity index 68% rename from iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme rename to iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme index 326b091..bfdca86 100644 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme +++ b/iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme @@ -5,6 +5,22 @@ + + + + + + - - - - - - + + + + diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift index 68e4d11..0bc07b7 100644 --- a/iOS/Features/Spot/Package.swift +++ b/iOS/Features/Spot/Package.swift @@ -5,24 +5,35 @@ import PackageDescription // MARK: - Constants -extension String { - static let package = "Spot" - static let spot = "Spot" - static let msUIKit = "MSUIKit" - static let msFoundation = "MSFoundation" - static let msDesignsystem = "MSDesignSystem" - static let msLogger = "MSLogger" +private extension String { + + static let package = "FeatureSpot" var testTarget: String { return self + "Tests" } - var path: String { + var fromRootPath: String { return "../../" + self } } +private enum Target { + + static let spot = "Spot" + +} + +private enum Dependency { + + static let msUIKit = "MSUIKit" + static let msFoundation = "MSFoundation" + static let msDesignsystem = "MSDesignSystem" + static let msLogger = "MSLogger" + +} + // MARK: - Package let package = Package( @@ -31,22 +42,24 @@ let package = Package( .iOS(.v15) ], products: [ - .library(name: .spot, - targets: [.spot]) + .library(name: Target.spot, + targets: [Target.spot]) ], dependencies: [ - .package(path: .msUIKit.path), - .package(path: .msFoundation.path) + .package(name: Dependency.msUIKit, + path: Dependency.msUIKit.fromRootPath), + .package(name: Dependency.msFoundation, + path: Dependency.msFoundation.fromRootPath) ], targets: [ - // Codes - .target(name: .spot, + .target(name: Target.spot, dependencies: [ - .product(name: .msUIKit, package: .msUIKit), - .product(name: .msDesignsystem, package: .msUIKit), - .product(name: .msLogger, package: .msFoundation) + .product(name: Dependency.msUIKit, + package: Dependency.msUIKit), + .product(name: Dependency.msDesignsystem, + package: Dependency.msUIKit), + .product(name: Dependency.msLogger, + package: Dependency.msFoundation) ]) - - // Tests ] ) diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme deleted file mode 100644 index 5e9ef94..0000000 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme deleted file mode 100644 index e9cfe80..0000000 --- a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme deleted file mode 100644 index c0fb639..0000000 --- a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme deleted file mode 100644 index 652c200..0000000 --- a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme deleted file mode 100644 index 5d159c4..0000000 --- a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystem.xcscheme b/iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystem.xcscheme new file mode 100644 index 0000000..e15b2aa --- /dev/null +++ b/iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystem.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata index a4dda14..17b1b2b 100644 --- a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata +++ b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata @@ -8,10 +8,7 @@ location = "container:" name = "Features"> - - + location = "group:Features/Home"> diff --git a/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj b/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj index 7c15359..e0bb55b 100644 --- a/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj +++ b/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj @@ -3,10 +3,27 @@ archiveVersion = 1; classes = { }; - objectVersion = 56; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ + DD5EA2412B16EC690080AEC1 /* FoundationExt in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2402B16EC690080AEC1 /* FoundationExt */; }; + DD5EA2432B16EC6C0080AEC1 /* MSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2422B16EC6C0080AEC1 /* MSLogger */; }; + DD5EA2452B16EC720080AEC1 /* MSUserDefaults in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2442B16EC720080AEC1 /* MSUserDefaults */; }; + DD5EA2472B16EC740080AEC1 /* MSCacheStorage in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2462B16EC740080AEC1 /* MSCacheStorage */; }; + DD5EA2492B16EC760080AEC1 /* MSFetcher in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2482B16EC760080AEC1 /* MSFetcher */; }; + DD5EA24B2B16EC790080AEC1 /* MSNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA24A2B16EC790080AEC1 /* MSNetworking */; }; + DD5EA24D2B16EC7B0080AEC1 /* MSPersistentStorage in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA24C2B16EC7B0080AEC1 /* MSPersistentStorage */; }; + DD5EA24F2B16EC830080AEC1 /* MSDesignSystem in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA24E2B16EC830080AEC1 /* MSDesignSystem */; }; + DD5EA2512B16EC860080AEC1 /* MSUIKit in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2502B16EC860080AEC1 /* MSUIKit */; }; + DD5EA2532B16EC890080AEC1 /* MSData in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2522B16EC890080AEC1 /* MSData */; }; + DD5EA2552B16EC920080AEC1 /* JourneyList in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2542B16EC920080AEC1 /* JourneyList */; }; + DD5EA2572B16EC960080AEC1 /* NavigateMap in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2562B16EC960080AEC1 /* NavigateMap */; }; + DD5EA2592B16EC9B0080AEC1 /* RecordJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2582B16EC9B0080AEC1 /* RecordJourney */; }; + DD5EA25B2B16ECA10080AEC1 /* SaveJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA25A2B16ECA10080AEC1 /* SaveJourney */; }; + DD5EA25D2B16ECA60080AEC1 /* SelectSong in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA25C2B16ECA60080AEC1 /* SelectSong */; }; + DD5EA25F2B16ECAB0080AEC1 /* Spot in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA25E2B16ECAB0080AEC1 /* Spot */; }; + DD5EA2612B16ECAF0080AEC1 /* RewindJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2602B16ECAF0080AEC1 /* RewindJourney */; }; DD73F8592B024C4900EE9BF2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD73F8582B024C4900EE9BF2 /* AppDelegate.swift */; }; DD73F85B2B024C4900EE9BF2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD73F85A2B024C4900EE9BF2 /* SceneDelegate.swift */; }; DD73F8622B024C4B00EE9BF2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DD73F8612B024C4B00EE9BF2 /* Assets.xcassets */; }; @@ -28,17 +45,42 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DD5EA2572B16EC960080AEC1 /* NavigateMap in Frameworks */, + DD5EA2532B16EC890080AEC1 /* MSData in Frameworks */, + DD5EA25D2B16ECA60080AEC1 /* SelectSong in Frameworks */, + DD5EA2552B16EC920080AEC1 /* JourneyList in Frameworks */, + DD5EA2612B16ECAF0080AEC1 /* RewindJourney in Frameworks */, + DD5EA2432B16EC6C0080AEC1 /* MSLogger in Frameworks */, + DD5EA2452B16EC720080AEC1 /* MSUserDefaults in Frameworks */, + DD5EA24B2B16EC790080AEC1 /* MSNetworking in Frameworks */, + DD5EA25B2B16ECA10080AEC1 /* SaveJourney in Frameworks */, + DD5EA2412B16EC690080AEC1 /* FoundationExt in Frameworks */, + DD5EA2472B16EC740080AEC1 /* MSCacheStorage in Frameworks */, + DD5EA25F2B16ECAB0080AEC1 /* Spot in Frameworks */, + DD5EA24F2B16EC830080AEC1 /* MSDesignSystem in Frameworks */, + DD5EA2592B16EC9B0080AEC1 /* RecordJourney in Frameworks */, + DD5EA2512B16EC860080AEC1 /* MSUIKit in Frameworks */, + DD5EA24D2B16EC7B0080AEC1 /* MSPersistentStorage in Frameworks */, + DD5EA2492B16EC760080AEC1 /* MSFetcher in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + DD5EA23F2B16EC690080AEC1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; DD73F84C2B024C4900EE9BF2 = { isa = PBXGroup; children = ( DD73F8572B024C4900EE9BF2 /* MusicSpot */, DD73F8562B024C4900EE9BF2 /* Products */, + DD5EA23F2B16EC690080AEC1 /* Frameworks */, ); sourceTree = ""; }; @@ -79,6 +121,23 @@ ); name = MusicSpot; packageProductDependencies = ( + DD5EA2402B16EC690080AEC1 /* FoundationExt */, + DD5EA2422B16EC6C0080AEC1 /* MSLogger */, + DD5EA2442B16EC720080AEC1 /* MSUserDefaults */, + DD5EA2462B16EC740080AEC1 /* MSCacheStorage */, + DD5EA2482B16EC760080AEC1 /* MSFetcher */, + DD5EA24A2B16EC790080AEC1 /* MSNetworking */, + DD5EA24C2B16EC7B0080AEC1 /* MSPersistentStorage */, + DD5EA24E2B16EC830080AEC1 /* MSDesignSystem */, + DD5EA2502B16EC860080AEC1 /* MSUIKit */, + DD5EA2522B16EC890080AEC1 /* MSData */, + DD5EA2542B16EC920080AEC1 /* JourneyList */, + DD5EA2562B16EC960080AEC1 /* NavigateMap */, + DD5EA2582B16EC9B0080AEC1 /* RecordJourney */, + DD5EA25A2B16ECA10080AEC1 /* SaveJourney */, + DD5EA25C2B16ECA60080AEC1 /* SelectSong */, + DD5EA25E2B16ECAB0080AEC1 /* Spot */, + DD5EA2602B16ECAF0080AEC1 /* RewindJourney */, ); productName = MusicSpot; productReference = DD73F8552B024C4900EE9BF2 /* MusicSpot.app */; @@ -109,6 +168,16 @@ ); mainGroup = DD73F84C2B024C4900EE9BF2; packageReferences = ( + DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */, + DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */, + DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */, + DDB21A272B16C7AC00E6D1E8 /* XCLocalSwiftPackageReference "../MSData" */, + DD734C432B16EAFC00944E71 /* XCLocalSwiftPackageReference "../Features/JourneyList" */, + DD734C462B16EB0700944E71 /* XCLocalSwiftPackageReference "../Features/Home" */, + DD734C4E2B16EB2D00944E71 /* XCLocalSwiftPackageReference "../Features/SaveJourney" */, + DD734C512B16EB3400944E71 /* XCLocalSwiftPackageReference "../Features/SelectSong" */, + DD734C572B16EB5500944E71 /* XCLocalSwiftPackageReference "../Features/Spot" */, + DD734C5A2B16EBB800944E71 /* XCLocalSwiftPackageReference "../Features/RewindJourney" */, ); productRefGroup = DD73F8562B024C4900EE9BF2 /* Products */; projectDirPath = ""; @@ -365,6 +434,137 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DD734C432B16EAFC00944E71 /* XCLocalSwiftPackageReference "../Features/JourneyList" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../Features/JourneyList; + }; + DD734C462B16EB0700944E71 /* XCLocalSwiftPackageReference "../Features/Home" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../Features/Home; + }; + DD734C4E2B16EB2D00944E71 /* XCLocalSwiftPackageReference "../Features/SaveJourney" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../Features/SaveJourney; + }; + DD734C512B16EB3400944E71 /* XCLocalSwiftPackageReference "../Features/SelectSong" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../Features/SelectSong; + }; + DD734C572B16EB5500944E71 /* XCLocalSwiftPackageReference "../Features/Spot" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../Features/Spot; + }; + DD734C5A2B16EBB800944E71 /* XCLocalSwiftPackageReference "../Features/RewindJourney" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../Features/RewindJourney; + }; + DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../MSFoundation; + }; + DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../MSCoreKit; + }; + DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../MSUIKit; + }; + DDB21A272B16C7AC00E6D1E8 /* XCLocalSwiftPackageReference "../MSData" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ../MSData; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DD5EA2402B16EC690080AEC1 /* FoundationExt */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */; + productName = FoundationExt; + }; + DD5EA2422B16EC6C0080AEC1 /* MSLogger */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */; + productName = MSLogger; + }; + DD5EA2442B16EC720080AEC1 /* MSUserDefaults */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */; + productName = MSUserDefaults; + }; + DD5EA2462B16EC740080AEC1 /* MSCacheStorage */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; + productName = MSCacheStorage; + }; + DD5EA2482B16EC760080AEC1 /* MSFetcher */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; + productName = MSFetcher; + }; + DD5EA24A2B16EC790080AEC1 /* MSNetworking */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; + productName = MSNetworking; + }; + DD5EA24C2B16EC7B0080AEC1 /* MSPersistentStorage */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; + productName = MSPersistentStorage; + }; + DD5EA24E2B16EC830080AEC1 /* MSDesignSystem */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */; + productName = MSDesignSystem; + }; + DD5EA2502B16EC860080AEC1 /* MSUIKit */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */; + productName = MSUIKit; + }; + DD5EA2522B16EC890080AEC1 /* MSData */ = { + isa = XCSwiftPackageProductDependency; + package = DDB21A272B16C7AC00E6D1E8 /* XCLocalSwiftPackageReference "../MSData" */; + productName = MSData; + }; + DD5EA2542B16EC920080AEC1 /* JourneyList */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C432B16EAFC00944E71 /* XCLocalSwiftPackageReference "../Features/JourneyList" */; + productName = JourneyList; + }; + DD5EA2562B16EC960080AEC1 /* NavigateMap */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C462B16EB0700944E71 /* XCLocalSwiftPackageReference "../Features/Home" */; + productName = NavigateMap; + }; + DD5EA2582B16EC9B0080AEC1 /* RecordJourney */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C462B16EB0700944E71 /* XCLocalSwiftPackageReference "../Features/Home" */; + productName = RecordJourney; + }; + DD5EA25A2B16ECA10080AEC1 /* SaveJourney */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C4E2B16EB2D00944E71 /* XCLocalSwiftPackageReference "../Features/SaveJourney" */; + productName = SaveJourney; + }; + DD5EA25C2B16ECA60080AEC1 /* SelectSong */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C512B16EB3400944E71 /* XCLocalSwiftPackageReference "../Features/SelectSong" */; + productName = SelectSong; + }; + DD5EA25E2B16ECAB0080AEC1 /* Spot */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C572B16EB5500944E71 /* XCLocalSwiftPackageReference "../Features/Spot" */; + productName = Spot; + }; + DD5EA2602B16ECAF0080AEC1 /* RewindJourney */ = { + isa = XCSwiftPackageProductDependency; + package = DD734C5A2B16EBB800944E71 /* XCLocalSwiftPackageReference "../Features/RewindJourney" */; + productName = RewindJourney; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = DD73F84D2B024C4900EE9BF2 /* Project object */; } From 7088ba502f5e8c196509973fd2662579e4f9b197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Wed, 29 Nov 2023 14:06:25 +0900 Subject: [PATCH 12/40] =?UTF-8?q?:package:=20Workspace=EC=97=90=20Test=20?= =?UTF-8?q?=ED=83=80=EA=B2=9F=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Xcode_build_test.yml | 2 +- .../xcschemes/MSCacheStorageTests.xcscheme | 53 +++++++++++++ .../xcshareddata/xcschemes/MSFetcher.xcscheme | 78 +++++++++++++++++++ .../xcschemes/MSFetcherTests.xcscheme | 53 +++++++++++++ .../xcschemes/MSNetworking.xcscheme | 78 +++++++++++++++++++ .../xcschemes/MSNetworkingTests.xcscheme | 53 +++++++++++++ .../MSPersistentStorageTests.xcscheme | 53 +++++++++++++ .../xcschemes/MSDataTests.xcscheme | 53 +++++++++++++ .../xcschemes/MSLoggerTests.xcscheme | 53 +++++++++++++ .../xcschemes/MSUserDefaultsTests.xcscheme | 53 +++++++++++++ 10 files changed, 528 insertions(+), 1 deletion(-) create mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme create mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme create mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme create mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme create mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme create mode 100644 iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme create mode 100644 iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme create mode 100644 iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme create mode 100644 iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme diff --git a/.github/workflows/Xcode_build_test.yml b/.github/workflows/Xcode_build_test.yml index 116eb3d..6637b80 100644 --- a/.github/workflows/Xcode_build_test.yml +++ b/.github/workflows/Xcode_build_test.yml @@ -121,4 +121,4 @@ jobs: -scheme ${{ matrix.scheme }} \ -sdk 'iphonesimulator' \ -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ - test + test-without-building diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme new file mode 100644 index 0000000..326b091 --- /dev/null +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSCacheStorageTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme new file mode 100644 index 0000000..4fe42f0 --- /dev/null +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcher.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme new file mode 100644 index 0000000..f299dc2 --- /dev/null +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSFetcherTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme new file mode 100644 index 0000000..6aed764 --- /dev/null +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworking.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme new file mode 100644 index 0000000..5e9ef94 --- /dev/null +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSNetworkingTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme new file mode 100644 index 0000000..e9cfe80 --- /dev/null +++ b/iOS/MSCoreKit/.swiftpm/xcode/xcshareddata/xcschemes/MSPersistentStorageTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme new file mode 100644 index 0000000..c0fb639 --- /dev/null +++ b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSDataTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme new file mode 100644 index 0000000..652c200 --- /dev/null +++ b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSLoggerTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme new file mode 100644 index 0000000..5d159c4 --- /dev/null +++ b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaultsTests.xcscheme @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + From 37fad587e44a8ca70c0c7255673766baf5da4a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Wed, 29 Nov 2023 14:10:51 +0900 Subject: [PATCH 13/40] =?UTF-8?q?:package:=20=EC=95=B1=20=ED=83=80?= =?UTF-8?q?=EA=B2=9F=EC=97=90=EC=84=9C=20Core,=20Foundation,=20UIKit=20?= =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=20Dependency=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MusicSpot.xcodeproj/project.pbxproj | 100 ------------------ iOS/MusicSpot/MusicSpot/SceneDelegate.swift | 5 + 2 files changed, 5 insertions(+), 100 deletions(-) diff --git a/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj b/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj index e0bb55b..650685c 100644 --- a/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj +++ b/iOS/MusicSpot/MusicSpot.xcodeproj/project.pbxproj @@ -7,16 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - DD5EA2412B16EC690080AEC1 /* FoundationExt in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2402B16EC690080AEC1 /* FoundationExt */; }; - DD5EA2432B16EC6C0080AEC1 /* MSLogger in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2422B16EC6C0080AEC1 /* MSLogger */; }; - DD5EA2452B16EC720080AEC1 /* MSUserDefaults in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2442B16EC720080AEC1 /* MSUserDefaults */; }; - DD5EA2472B16EC740080AEC1 /* MSCacheStorage in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2462B16EC740080AEC1 /* MSCacheStorage */; }; - DD5EA2492B16EC760080AEC1 /* MSFetcher in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2482B16EC760080AEC1 /* MSFetcher */; }; - DD5EA24B2B16EC790080AEC1 /* MSNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA24A2B16EC790080AEC1 /* MSNetworking */; }; - DD5EA24D2B16EC7B0080AEC1 /* MSPersistentStorage in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA24C2B16EC7B0080AEC1 /* MSPersistentStorage */; }; - DD5EA24F2B16EC830080AEC1 /* MSDesignSystem in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA24E2B16EC830080AEC1 /* MSDesignSystem */; }; - DD5EA2512B16EC860080AEC1 /* MSUIKit in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2502B16EC860080AEC1 /* MSUIKit */; }; - DD5EA2532B16EC890080AEC1 /* MSData in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2522B16EC890080AEC1 /* MSData */; }; DD5EA2552B16EC920080AEC1 /* JourneyList in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2542B16EC920080AEC1 /* JourneyList */; }; DD5EA2572B16EC960080AEC1 /* NavigateMap in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2562B16EC960080AEC1 /* NavigateMap */; }; DD5EA2592B16EC9B0080AEC1 /* RecordJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DD5EA2582B16EC9B0080AEC1 /* RecordJourney */; }; @@ -46,22 +36,12 @@ buildActionMask = 2147483647; files = ( DD5EA2572B16EC960080AEC1 /* NavigateMap in Frameworks */, - DD5EA2532B16EC890080AEC1 /* MSData in Frameworks */, DD5EA25D2B16ECA60080AEC1 /* SelectSong in Frameworks */, DD5EA2552B16EC920080AEC1 /* JourneyList in Frameworks */, DD5EA2612B16ECAF0080AEC1 /* RewindJourney in Frameworks */, - DD5EA2432B16EC6C0080AEC1 /* MSLogger in Frameworks */, - DD5EA2452B16EC720080AEC1 /* MSUserDefaults in Frameworks */, - DD5EA24B2B16EC790080AEC1 /* MSNetworking in Frameworks */, DD5EA25B2B16ECA10080AEC1 /* SaveJourney in Frameworks */, - DD5EA2412B16EC690080AEC1 /* FoundationExt in Frameworks */, - DD5EA2472B16EC740080AEC1 /* MSCacheStorage in Frameworks */, DD5EA25F2B16ECAB0080AEC1 /* Spot in Frameworks */, - DD5EA24F2B16EC830080AEC1 /* MSDesignSystem in Frameworks */, DD5EA2592B16EC9B0080AEC1 /* RecordJourney in Frameworks */, - DD5EA2512B16EC860080AEC1 /* MSUIKit in Frameworks */, - DD5EA24D2B16EC7B0080AEC1 /* MSPersistentStorage in Frameworks */, - DD5EA2492B16EC760080AEC1 /* MSFetcher in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -121,16 +101,6 @@ ); name = MusicSpot; packageProductDependencies = ( - DD5EA2402B16EC690080AEC1 /* FoundationExt */, - DD5EA2422B16EC6C0080AEC1 /* MSLogger */, - DD5EA2442B16EC720080AEC1 /* MSUserDefaults */, - DD5EA2462B16EC740080AEC1 /* MSCacheStorage */, - DD5EA2482B16EC760080AEC1 /* MSFetcher */, - DD5EA24A2B16EC790080AEC1 /* MSNetworking */, - DD5EA24C2B16EC7B0080AEC1 /* MSPersistentStorage */, - DD5EA24E2B16EC830080AEC1 /* MSDesignSystem */, - DD5EA2502B16EC860080AEC1 /* MSUIKit */, - DD5EA2522B16EC890080AEC1 /* MSData */, DD5EA2542B16EC920080AEC1 /* JourneyList */, DD5EA2562B16EC960080AEC1 /* NavigateMap */, DD5EA2582B16EC9B0080AEC1 /* RecordJourney */, @@ -168,10 +138,6 @@ ); mainGroup = DD73F84C2B024C4900EE9BF2; packageReferences = ( - DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */, - DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */, - DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */, - DDB21A272B16C7AC00E6D1E8 /* XCLocalSwiftPackageReference "../MSData" */, DD734C432B16EAFC00944E71 /* XCLocalSwiftPackageReference "../Features/JourneyList" */, DD734C462B16EB0700944E71 /* XCLocalSwiftPackageReference "../Features/Home" */, DD734C4E2B16EB2D00944E71 /* XCLocalSwiftPackageReference "../Features/SaveJourney" */, @@ -460,75 +426,9 @@ isa = XCLocalSwiftPackageReference; relativePath = ../Features/RewindJourney; }; - DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../MSFoundation; - }; - DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../MSCoreKit; - }; - DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../MSUIKit; - }; - DDB21A272B16C7AC00E6D1E8 /* XCLocalSwiftPackageReference "../MSData" */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../MSData; - }; /* End XCLocalSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - DD5EA2402B16EC690080AEC1 /* FoundationExt */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */; - productName = FoundationExt; - }; - DD5EA2422B16EC6C0080AEC1 /* MSLogger */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */; - productName = MSLogger; - }; - DD5EA2442B16EC720080AEC1 /* MSUserDefaults */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A122B16C74300E6D1E8 /* XCLocalSwiftPackageReference "../MSFoundation" */; - productName = MSUserDefaults; - }; - DD5EA2462B16EC740080AEC1 /* MSCacheStorage */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; - productName = MSCacheStorage; - }; - DD5EA2482B16EC760080AEC1 /* MSFetcher */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; - productName = MSFetcher; - }; - DD5EA24A2B16EC790080AEC1 /* MSNetworking */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; - productName = MSNetworking; - }; - DD5EA24C2B16EC7B0080AEC1 /* MSPersistentStorage */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A192B16C75E00E6D1E8 /* XCLocalSwiftPackageReference "../MSCoreKit" */; - productName = MSPersistentStorage; - }; - DD5EA24E2B16EC830080AEC1 /* MSDesignSystem */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */; - productName = MSDesignSystem; - }; - DD5EA2502B16EC860080AEC1 /* MSUIKit */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A222B16C77000E6D1E8 /* XCLocalSwiftPackageReference "../MSUIKit" */; - productName = MSUIKit; - }; - DD5EA2522B16EC890080AEC1 /* MSData */ = { - isa = XCSwiftPackageProductDependency; - package = DDB21A272B16C7AC00E6D1E8 /* XCLocalSwiftPackageReference "../MSData" */; - productName = MSData; - }; DD5EA2542B16EC920080AEC1 /* JourneyList */ = { isa = XCSwiftPackageProductDependency; package = DD734C432B16EAFC00944E71 /* XCLocalSwiftPackageReference "../Features/JourneyList" */; diff --git a/iOS/MusicSpot/MusicSpot/SceneDelegate.swift b/iOS/MusicSpot/MusicSpot/SceneDelegate.swift index b01638c..0f347bb 100644 --- a/iOS/MusicSpot/MusicSpot/SceneDelegate.swift +++ b/iOS/MusicSpot/MusicSpot/SceneDelegate.swift @@ -9,7 +9,11 @@ import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { + // MARK: - Properties + var window: UIWindow? + + // MARK: - Functions func scene(_ scene: UIScene, willConnectTo _: UISceneSession, @@ -22,4 +26,5 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { window.rootViewController = testViewController window.makeKeyAndVisible() } + } From 08ea4ee39482028e380d97862bcd228e234905ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Wed, 29 Nov 2023 14:23:21 +0900 Subject: [PATCH 14/40] =?UTF-8?q?:construction=5Fworker:=20test=20without?= =?UTF-8?q?=20build=20=E2=9E=A1=EF=B8=8F=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Xcode_build_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Xcode_build_test.yml b/.github/workflows/Xcode_build_test.yml index 6637b80..116eb3d 100644 --- a/.github/workflows/Xcode_build_test.yml +++ b/.github/workflows/Xcode_build_test.yml @@ -121,4 +121,4 @@ jobs: -scheme ${{ matrix.scheme }} \ -sdk 'iphonesimulator' \ -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ - test-without-building + test From 5b28fd4ed226aa9b670cb3ddb51e5ac6a869e9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Wed, 29 Nov 2023 18:04:06 +0900 Subject: [PATCH 15/40] =?UTF-8?q?:truck:=20=EA=B0=81=20Feature=EC=97=90=20?= =?UTF-8?q?Demo=20=EC=95=B1=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HomeDemo.xcodeproj/project.pbxproj | 403 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../Home/HomeDemo/HomeDemo/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../HomeDemo/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../HomeDemo/Base.lproj/Main.storyboard | 24 ++ .../Home/HomeDemo/HomeDemo/Info.plist | 25 ++ .../HomeDemo/HomeDemo/SceneDelegate.swift | 52 +++ .../HomeDemo/HomeDemo/ViewController.swift | 19 + .../JourneyListDemo.xcodeproj/project.pbxproj | 396 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../JourneyListDemo/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Base.lproj/Main.storyboard | 24 ++ .../JourneyListDemo/Info.plist | 25 ++ .../JourneyListDemo/SceneDelegate.swift | 52 +++ .../JourneyListDemo/ViewController.swift | 19 + .../project.pbxproj | 396 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../RewindJourneyDemo/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Base.lproj/Main.storyboard | 24 ++ .../RewindJourneyDemo/Info.plist | 25 ++ .../RewindJourneyDemo/SceneDelegate.swift | 52 +++ .../RewindJourneyDemo/ViewController.swift | 19 + .../SaveJourneyDemo.xcodeproj/project.pbxproj | 396 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../SaveJourneyDemo/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Base.lproj/Main.storyboard | 24 ++ .../SaveJourneyDemo/Info.plist | 25 ++ .../SaveJourneyDemo/SceneDelegate.swift | 52 +++ .../SaveJourneyDemo/ViewController.swift | 19 + .../SelectSongDemo.xcodeproj/project.pbxproj | 396 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../SelectSongDemo/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../SelectSongDemo/Base.lproj/Main.storyboard | 24 ++ .../SelectSongDemo/SelectSongDemo/Info.plist | 25 ++ .../SelectSongDemo/SceneDelegate.swift | 52 +++ .../SelectSongDemo/ViewController.swift | 19 + .../SpotDemo.xcodeproj/project.pbxproj | 396 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../Spot/SpotDemo/SpotDemo/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../SpotDemo/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../SpotDemo/Base.lproj/Main.storyboard | 24 ++ .../Spot/SpotDemo/SpotDemo/Info.plist | 25 ++ .../SpotDemo/SpotDemo/SceneDelegate.swift | 52 +++ .../SpotDemo/SpotDemo/ViewController.swift | 19 + 72 files changed, 3739 insertions(+) create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.pbxproj create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/AppDelegate.swift create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/Contents.json create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/Main.storyboard create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/Info.plist create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/SceneDelegate.swift create mode 100644 iOS/Features/Home/HomeDemo/HomeDemo/ViewController.swift create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.pbxproj create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/AppDelegate.swift create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/Contents.json create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/Main.storyboard create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Info.plist create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/SceneDelegate.swift create mode 100644 iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/ViewController.swift create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.pbxproj create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/AppDelegate.swift create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/Contents.json create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/Main.storyboard create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Info.plist create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/SceneDelegate.swift create mode 100644 iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/ViewController.swift create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.pbxproj create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/AppDelegate.swift create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/Contents.json create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/Main.storyboard create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Info.plist create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/SceneDelegate.swift create mode 100644 iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/ViewController.swift create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.pbxproj create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/AppDelegate.swift create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/Contents.json create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/Main.storyboard create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Info.plist create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/SceneDelegate.swift create mode 100644 iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/ViewController.swift create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/Contents.json create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/Main.storyboard create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift create mode 100644 iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift diff --git a/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.pbxproj b/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..50ce04a --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.pbxproj @@ -0,0 +1,403 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + DDAA4D5E2B17349A002F0748 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4D5D2B17349A002F0748 /* AppDelegate.swift */; }; + DDAA4D602B17349A002F0748 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4D5F2B17349A002F0748 /* SceneDelegate.swift */; }; + DDAA4D622B17349A002F0748 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4D612B17349A002F0748 /* ViewController.swift */; }; + DDAA4D652B17349A002F0748 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4D632B17349A002F0748 /* Main.storyboard */; }; + DDAA4D672B17349C002F0748 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4D662B17349C002F0748 /* Assets.xcassets */; }; + DDAA4D6A2B17349C002F0748 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4D682B17349C002F0748 /* LaunchScreen.storyboard */; }; + DDAA4D732B1734C3002F0748 /* NavigateMap in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4D722B1734C3002F0748 /* NavigateMap */; }; + DDAA4D752B1734C3002F0748 /* RecordJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4D742B1734C3002F0748 /* RecordJourney */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DDAA4D5A2B17349A002F0748 /* HomeDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HomeDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAA4D5D2B17349A002F0748 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DDAA4D5F2B17349A002F0748 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DDAA4D612B17349A002F0748 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DDAA4D642B17349A002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + DDAA4D662B17349C002F0748 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DDAA4D692B17349C002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + DDAA4D6B2B17349C002F0748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DDAA4D572B17349A002F0748 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4D752B1734C3002F0748 /* RecordJourney in Frameworks */, + DDAA4D732B1734C3002F0748 /* NavigateMap in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DDAA4D512B17349A002F0748 = { + isa = PBXGroup; + children = ( + DDAA4D5C2B17349A002F0748 /* HomeDemo */, + DDAA4D5B2B17349A002F0748 /* Products */, + ); + sourceTree = ""; + }; + DDAA4D5B2B17349A002F0748 /* Products */ = { + isa = PBXGroup; + children = ( + DDAA4D5A2B17349A002F0748 /* HomeDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DDAA4D5C2B17349A002F0748 /* HomeDemo */ = { + isa = PBXGroup; + children = ( + DDAA4D5D2B17349A002F0748 /* AppDelegate.swift */, + DDAA4D5F2B17349A002F0748 /* SceneDelegate.swift */, + DDAA4D612B17349A002F0748 /* ViewController.swift */, + DDAA4D632B17349A002F0748 /* Main.storyboard */, + DDAA4D662B17349C002F0748 /* Assets.xcassets */, + DDAA4D682B17349C002F0748 /* LaunchScreen.storyboard */, + DDAA4D6B2B17349C002F0748 /* Info.plist */, + ); + path = HomeDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DDAA4D592B17349A002F0748 /* HomeDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDAA4D6E2B17349C002F0748 /* Build configuration list for PBXNativeTarget "HomeDemo" */; + buildPhases = ( + DDAA4D562B17349A002F0748 /* Sources */, + DDAA4D572B17349A002F0748 /* Frameworks */, + DDAA4D582B17349A002F0748 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HomeDemo; + packageProductDependencies = ( + DDAA4D722B1734C3002F0748 /* NavigateMap */, + DDAA4D742B1734C3002F0748 /* RecordJourney */, + ); + productName = HomeDemo; + productReference = DDAA4D5A2B17349A002F0748 /* HomeDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DDAA4D522B17349A002F0748 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + DDAA4D592B17349A002F0748 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = DDAA4D552B17349A002F0748 /* Build configuration list for PBXProject "HomeDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DDAA4D512B17349A002F0748; + packageReferences = ( + DDAA4D712B1734C3002F0748 /* XCLocalSwiftPackageReference ".." */, + ); + productRefGroup = DDAA4D5B2B17349A002F0748 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDAA4D592B17349A002F0748 /* HomeDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DDAA4D582B17349A002F0748 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4D6A2B17349C002F0748 /* LaunchScreen.storyboard in Resources */, + DDAA4D672B17349C002F0748 /* Assets.xcassets in Resources */, + DDAA4D652B17349A002F0748 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DDAA4D562B17349A002F0748 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4D622B17349A002F0748 /* ViewController.swift in Sources */, + DDAA4D5E2B17349A002F0748 /* AppDelegate.swift in Sources */, + DDAA4D602B17349A002F0748 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + DDAA4D632B17349A002F0748 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4D642B17349A002F0748 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + DDAA4D682B17349C002F0748 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4D692B17349C002F0748 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DDAA4D6C2B17349C002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DDAA4D6D2B17349C002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DDAA4D6F2B17349C002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = HomeDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.HomeDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DDAA4D702B17349C002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = HomeDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.HomeDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DDAA4D552B17349A002F0748 /* Build configuration list for PBXProject "HomeDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4D6C2B17349C002F0748 /* Debug */, + DDAA4D6D2B17349C002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDAA4D6E2B17349C002F0748 /* Build configuration list for PBXNativeTarget "HomeDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4D6F2B17349C002F0748 /* Debug */, + DDAA4D702B17349C002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DDAA4D712B1734C3002F0748 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DDAA4D722B1734C3002F0748 /* NavigateMap */ = { + isa = XCSwiftPackageProductDependency; + productName = NavigateMap; + }; + DDAA4D742B1734C3002F0748 /* RecordJourney */ = { + isa = XCSwiftPackageProductDependency; + productName = RecordJourney; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DDAA4D522B17349A002F0748 /* Project object */; +} diff --git a/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/AppDelegate.swift b/iOS/Features/Home/HomeDemo/HomeDemo/AppDelegate.swift new file mode 100644 index 0000000..014d7a2 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// HomeDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/Contents.json b/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/LaunchScreen.storyboard b/iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/Main.storyboard b/iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/Info.plist b/iOS/Features/Home/HomeDemo/HomeDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/iOS/Features/Home/HomeDemo/HomeDemo/SceneDelegate.swift b/iOS/Features/Home/HomeDemo/HomeDemo/SceneDelegate.swift new file mode 100644 index 0000000..0144605 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// HomeDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/Home/HomeDemo/HomeDemo/ViewController.swift b/iOS/Features/Home/HomeDemo/HomeDemo/ViewController.swift new file mode 100644 index 0000000..2ee0cf6 --- /dev/null +++ b/iOS/Features/Home/HomeDemo/HomeDemo/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// HomeDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.pbxproj b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8c8f3ff --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.pbxproj @@ -0,0 +1,396 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + DDAA4D832B1734F9002F0748 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4D822B1734F9002F0748 /* AppDelegate.swift */; }; + DDAA4D852B1734F9002F0748 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4D842B1734F9002F0748 /* SceneDelegate.swift */; }; + DDAA4D872B1734F9002F0748 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4D862B1734F9002F0748 /* ViewController.swift */; }; + DDAA4D8A2B1734F9002F0748 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4D882B1734F9002F0748 /* Main.storyboard */; }; + DDAA4D8C2B1734FB002F0748 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4D8B2B1734FB002F0748 /* Assets.xcassets */; }; + DDAA4D8F2B1734FB002F0748 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4D8D2B1734FB002F0748 /* LaunchScreen.storyboard */; }; + DDAA4D982B173512002F0748 /* JourneyList in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4D972B173512002F0748 /* JourneyList */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DDAA4D7F2B1734F9002F0748 /* JourneyListDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JourneyListDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAA4D822B1734F9002F0748 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DDAA4D842B1734F9002F0748 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DDAA4D862B1734F9002F0748 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DDAA4D892B1734F9002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + DDAA4D8B2B1734FB002F0748 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DDAA4D8E2B1734FB002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + DDAA4D902B1734FB002F0748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DDAA4D7C2B1734F9002F0748 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4D982B173512002F0748 /* JourneyList in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DDAA4D762B1734F9002F0748 = { + isa = PBXGroup; + children = ( + DDAA4D812B1734F9002F0748 /* JourneyListDemo */, + DDAA4D802B1734F9002F0748 /* Products */, + ); + sourceTree = ""; + }; + DDAA4D802B1734F9002F0748 /* Products */ = { + isa = PBXGroup; + children = ( + DDAA4D7F2B1734F9002F0748 /* JourneyListDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DDAA4D812B1734F9002F0748 /* JourneyListDemo */ = { + isa = PBXGroup; + children = ( + DDAA4D822B1734F9002F0748 /* AppDelegate.swift */, + DDAA4D842B1734F9002F0748 /* SceneDelegate.swift */, + DDAA4D862B1734F9002F0748 /* ViewController.swift */, + DDAA4D882B1734F9002F0748 /* Main.storyboard */, + DDAA4D8B2B1734FB002F0748 /* Assets.xcassets */, + DDAA4D8D2B1734FB002F0748 /* LaunchScreen.storyboard */, + DDAA4D902B1734FB002F0748 /* Info.plist */, + ); + path = JourneyListDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DDAA4D7E2B1734F9002F0748 /* JourneyListDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDAA4D932B1734FB002F0748 /* Build configuration list for PBXNativeTarget "JourneyListDemo" */; + buildPhases = ( + DDAA4D7B2B1734F9002F0748 /* Sources */, + DDAA4D7C2B1734F9002F0748 /* Frameworks */, + DDAA4D7D2B1734F9002F0748 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = JourneyListDemo; + packageProductDependencies = ( + DDAA4D972B173512002F0748 /* JourneyList */, + ); + productName = JourneyListDemo; + productReference = DDAA4D7F2B1734F9002F0748 /* JourneyListDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DDAA4D772B1734F9002F0748 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + DDAA4D7E2B1734F9002F0748 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = DDAA4D7A2B1734F9002F0748 /* Build configuration list for PBXProject "JourneyListDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DDAA4D762B1734F9002F0748; + packageReferences = ( + DDAA4D962B173512002F0748 /* XCLocalSwiftPackageReference ".." */, + ); + productRefGroup = DDAA4D802B1734F9002F0748 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDAA4D7E2B1734F9002F0748 /* JourneyListDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DDAA4D7D2B1734F9002F0748 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4D8F2B1734FB002F0748 /* LaunchScreen.storyboard in Resources */, + DDAA4D8C2B1734FB002F0748 /* Assets.xcassets in Resources */, + DDAA4D8A2B1734F9002F0748 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DDAA4D7B2B1734F9002F0748 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4D872B1734F9002F0748 /* ViewController.swift in Sources */, + DDAA4D832B1734F9002F0748 /* AppDelegate.swift in Sources */, + DDAA4D852B1734F9002F0748 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + DDAA4D882B1734F9002F0748 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4D892B1734F9002F0748 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + DDAA4D8D2B1734FB002F0748 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4D8E2B1734FB002F0748 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DDAA4D912B1734FB002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DDAA4D922B1734FB002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DDAA4D942B1734FB002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = JourneyListDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.JourneyListDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DDAA4D952B1734FB002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = JourneyListDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.JourneyListDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DDAA4D7A2B1734F9002F0748 /* Build configuration list for PBXProject "JourneyListDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4D912B1734FB002F0748 /* Debug */, + DDAA4D922B1734FB002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDAA4D932B1734FB002F0748 /* Build configuration list for PBXNativeTarget "JourneyListDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4D942B1734FB002F0748 /* Debug */, + DDAA4D952B1734FB002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DDAA4D962B173512002F0748 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DDAA4D972B173512002F0748 /* JourneyList */ = { + isa = XCSwiftPackageProductDependency; + productName = JourneyList; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DDAA4D772B1734F9002F0748 /* Project object */; +} diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/AppDelegate.swift b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/AppDelegate.swift new file mode 100644 index 0000000..a1148cd --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// JourneyListDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/Contents.json b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/LaunchScreen.storyboard b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/Main.storyboard b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Info.plist b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/SceneDelegate.swift b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/SceneDelegate.swift new file mode 100644 index 0000000..1a1942a --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// JourneyListDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/ViewController.swift b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/ViewController.swift new file mode 100644 index 0000000..26aa375 --- /dev/null +++ b/iOS/Features/JourneyList/JourneyListDemo/JourneyListDemo/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// JourneyListDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.pbxproj b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..fd6b2b8 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.pbxproj @@ -0,0 +1,396 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + DDAA4DA62B173530002F0748 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DA52B173530002F0748 /* AppDelegate.swift */; }; + DDAA4DA82B173530002F0748 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DA72B173530002F0748 /* SceneDelegate.swift */; }; + DDAA4DAA2B173530002F0748 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DA92B173530002F0748 /* ViewController.swift */; }; + DDAA4DAD2B173530002F0748 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DAB2B173530002F0748 /* Main.storyboard */; }; + DDAA4DAF2B173532002F0748 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DAE2B173532002F0748 /* Assets.xcassets */; }; + DDAA4DB22B173532002F0748 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DB02B173532002F0748 /* LaunchScreen.storyboard */; }; + DDAA4DBB2B173551002F0748 /* RewindJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4DBA2B173551002F0748 /* RewindJourney */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DDAA4DA22B173530002F0748 /* RewindJourneyDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RewindJourneyDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAA4DA52B173530002F0748 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DDAA4DA72B173530002F0748 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DDAA4DA92B173530002F0748 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DDAA4DAC2B173530002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + DDAA4DAE2B173532002F0748 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DDAA4DB12B173532002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + DDAA4DB32B173532002F0748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DDAA4D9F2B173530002F0748 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DBB2B173551002F0748 /* RewindJourney in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DDAA4D992B173530002F0748 = { + isa = PBXGroup; + children = ( + DDAA4DA42B173530002F0748 /* RewindJourneyDemo */, + DDAA4DA32B173530002F0748 /* Products */, + ); + sourceTree = ""; + }; + DDAA4DA32B173530002F0748 /* Products */ = { + isa = PBXGroup; + children = ( + DDAA4DA22B173530002F0748 /* RewindJourneyDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DDAA4DA42B173530002F0748 /* RewindJourneyDemo */ = { + isa = PBXGroup; + children = ( + DDAA4DA52B173530002F0748 /* AppDelegate.swift */, + DDAA4DA72B173530002F0748 /* SceneDelegate.swift */, + DDAA4DA92B173530002F0748 /* ViewController.swift */, + DDAA4DAB2B173530002F0748 /* Main.storyboard */, + DDAA4DAE2B173532002F0748 /* Assets.xcassets */, + DDAA4DB02B173532002F0748 /* LaunchScreen.storyboard */, + DDAA4DB32B173532002F0748 /* Info.plist */, + ); + path = RewindJourneyDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DDAA4DA12B173530002F0748 /* RewindJourneyDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDAA4DB62B173532002F0748 /* Build configuration list for PBXNativeTarget "RewindJourneyDemo" */; + buildPhases = ( + DDAA4D9E2B173530002F0748 /* Sources */, + DDAA4D9F2B173530002F0748 /* Frameworks */, + DDAA4DA02B173530002F0748 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RewindJourneyDemo; + packageProductDependencies = ( + DDAA4DBA2B173551002F0748 /* RewindJourney */, + ); + productName = RewindJourneyDemo; + productReference = DDAA4DA22B173530002F0748 /* RewindJourneyDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DDAA4D9A2B173530002F0748 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + DDAA4DA12B173530002F0748 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = DDAA4D9D2B173530002F0748 /* Build configuration list for PBXProject "RewindJourneyDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DDAA4D992B173530002F0748; + packageReferences = ( + DDAA4DB92B173551002F0748 /* XCLocalSwiftPackageReference ".." */, + ); + productRefGroup = DDAA4DA32B173530002F0748 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDAA4DA12B173530002F0748 /* RewindJourneyDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DDAA4DA02B173530002F0748 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DB22B173532002F0748 /* LaunchScreen.storyboard in Resources */, + DDAA4DAF2B173532002F0748 /* Assets.xcassets in Resources */, + DDAA4DAD2B173530002F0748 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DDAA4D9E2B173530002F0748 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DAA2B173530002F0748 /* ViewController.swift in Sources */, + DDAA4DA62B173530002F0748 /* AppDelegate.swift in Sources */, + DDAA4DA82B173530002F0748 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + DDAA4DAB2B173530002F0748 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4DAC2B173530002F0748 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + DDAA4DB02B173532002F0748 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4DB12B173532002F0748 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DDAA4DB42B173532002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DDAA4DB52B173532002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DDAA4DB72B173532002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = RewindJourneyDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.RewindJourneyDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DDAA4DB82B173532002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = RewindJourneyDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.RewindJourneyDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DDAA4D9D2B173530002F0748 /* Build configuration list for PBXProject "RewindJourneyDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4DB42B173532002F0748 /* Debug */, + DDAA4DB52B173532002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDAA4DB62B173532002F0748 /* Build configuration list for PBXNativeTarget "RewindJourneyDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4DB72B173532002F0748 /* Debug */, + DDAA4DB82B173532002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DDAA4DB92B173551002F0748 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DDAA4DBA2B173551002F0748 /* RewindJourney */ = { + isa = XCSwiftPackageProductDependency; + productName = RewindJourney; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DDAA4D9A2B173530002F0748 /* Project object */; +} diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/AppDelegate.swift b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/AppDelegate.swift new file mode 100644 index 0000000..1248a15 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// RewindJourneyDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/Contents.json b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/LaunchScreen.storyboard b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/Main.storyboard b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Info.plist b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/SceneDelegate.swift b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/SceneDelegate.swift new file mode 100644 index 0000000..784866e --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// RewindJourneyDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/ViewController.swift b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/ViewController.swift new file mode 100644 index 0000000..5626537 --- /dev/null +++ b/iOS/Features/RewindJourney/RewindJourneyDemo/RewindJourneyDemo/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// RewindJourneyDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.pbxproj b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..163320f --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.pbxproj @@ -0,0 +1,396 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + DDAA4DC92B17356D002F0748 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DC82B17356D002F0748 /* AppDelegate.swift */; }; + DDAA4DCB2B17356D002F0748 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DCA2B17356D002F0748 /* SceneDelegate.swift */; }; + DDAA4DCD2B17356D002F0748 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DCC2B17356D002F0748 /* ViewController.swift */; }; + DDAA4DD02B17356D002F0748 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DCE2B17356D002F0748 /* Main.storyboard */; }; + DDAA4DD22B17356E002F0748 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DD12B17356E002F0748 /* Assets.xcassets */; }; + DDAA4DD52B17356E002F0748 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DD32B17356E002F0748 /* LaunchScreen.storyboard */; }; + DDAA4DDE2B17357F002F0748 /* SaveJourney in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4DDD2B17357F002F0748 /* SaveJourney */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DDAA4DC52B17356D002F0748 /* SaveJourneyDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SaveJourneyDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAA4DC82B17356D002F0748 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DDAA4DCA2B17356D002F0748 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DDAA4DCC2B17356D002F0748 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DDAA4DCF2B17356D002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + DDAA4DD12B17356E002F0748 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DDAA4DD42B17356E002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + DDAA4DD62B17356E002F0748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DDAA4DC22B17356D002F0748 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DDE2B17357F002F0748 /* SaveJourney in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DDAA4DBC2B17356D002F0748 = { + isa = PBXGroup; + children = ( + DDAA4DC72B17356D002F0748 /* SaveJourneyDemo */, + DDAA4DC62B17356D002F0748 /* Products */, + ); + sourceTree = ""; + }; + DDAA4DC62B17356D002F0748 /* Products */ = { + isa = PBXGroup; + children = ( + DDAA4DC52B17356D002F0748 /* SaveJourneyDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DDAA4DC72B17356D002F0748 /* SaveJourneyDemo */ = { + isa = PBXGroup; + children = ( + DDAA4DC82B17356D002F0748 /* AppDelegate.swift */, + DDAA4DCA2B17356D002F0748 /* SceneDelegate.swift */, + DDAA4DCC2B17356D002F0748 /* ViewController.swift */, + DDAA4DCE2B17356D002F0748 /* Main.storyboard */, + DDAA4DD12B17356E002F0748 /* Assets.xcassets */, + DDAA4DD32B17356E002F0748 /* LaunchScreen.storyboard */, + DDAA4DD62B17356E002F0748 /* Info.plist */, + ); + path = SaveJourneyDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DDAA4DC42B17356D002F0748 /* SaveJourneyDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDAA4DD92B17356E002F0748 /* Build configuration list for PBXNativeTarget "SaveJourneyDemo" */; + buildPhases = ( + DDAA4DC12B17356D002F0748 /* Sources */, + DDAA4DC22B17356D002F0748 /* Frameworks */, + DDAA4DC32B17356D002F0748 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SaveJourneyDemo; + packageProductDependencies = ( + DDAA4DDD2B17357F002F0748 /* SaveJourney */, + ); + productName = SaveJourneyDemo; + productReference = DDAA4DC52B17356D002F0748 /* SaveJourneyDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DDAA4DBD2B17356D002F0748 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + DDAA4DC42B17356D002F0748 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = DDAA4DC02B17356D002F0748 /* Build configuration list for PBXProject "SaveJourneyDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DDAA4DBC2B17356D002F0748; + packageReferences = ( + DDAA4DDC2B17357F002F0748 /* XCLocalSwiftPackageReference ".." */, + ); + productRefGroup = DDAA4DC62B17356D002F0748 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDAA4DC42B17356D002F0748 /* SaveJourneyDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DDAA4DC32B17356D002F0748 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DD52B17356E002F0748 /* LaunchScreen.storyboard in Resources */, + DDAA4DD22B17356E002F0748 /* Assets.xcassets in Resources */, + DDAA4DD02B17356D002F0748 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DDAA4DC12B17356D002F0748 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DCD2B17356D002F0748 /* ViewController.swift in Sources */, + DDAA4DC92B17356D002F0748 /* AppDelegate.swift in Sources */, + DDAA4DCB2B17356D002F0748 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + DDAA4DCE2B17356D002F0748 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4DCF2B17356D002F0748 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + DDAA4DD32B17356E002F0748 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4DD42B17356E002F0748 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DDAA4DD72B17356E002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DDAA4DD82B17356E002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DDAA4DDA2B17356E002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SaveJourneyDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.SaveJourneyDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DDAA4DDB2B17356E002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SaveJourneyDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.SaveJourneyDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DDAA4DC02B17356D002F0748 /* Build configuration list for PBXProject "SaveJourneyDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4DD72B17356E002F0748 /* Debug */, + DDAA4DD82B17356E002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDAA4DD92B17356E002F0748 /* Build configuration list for PBXNativeTarget "SaveJourneyDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4DDA2B17356E002F0748 /* Debug */, + DDAA4DDB2B17356E002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DDAA4DDC2B17357F002F0748 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DDAA4DDD2B17357F002F0748 /* SaveJourney */ = { + isa = XCSwiftPackageProductDependency; + productName = SaveJourney; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DDAA4DBD2B17356D002F0748 /* Project object */; +} diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/AppDelegate.swift b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/AppDelegate.swift new file mode 100644 index 0000000..3332466 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// SaveJourneyDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/Contents.json b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/LaunchScreen.storyboard b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/Main.storyboard b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Info.plist b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/SceneDelegate.swift b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/SceneDelegate.swift new file mode 100644 index 0000000..defe329 --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// SaveJourneyDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/ViewController.swift b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/ViewController.swift new file mode 100644 index 0000000..aa71b3c --- /dev/null +++ b/iOS/Features/SaveJourney/SaveJourneyDemo/SaveJourneyDemo/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// SaveJourneyDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.pbxproj b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1c39d31 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.pbxproj @@ -0,0 +1,396 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + DDAA4DEC2B17359E002F0748 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DEB2B17359E002F0748 /* AppDelegate.swift */; }; + DDAA4DEE2B17359E002F0748 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DED2B17359E002F0748 /* SceneDelegate.swift */; }; + DDAA4DF02B17359E002F0748 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4DEF2B17359E002F0748 /* ViewController.swift */; }; + DDAA4DF32B17359E002F0748 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DF12B17359E002F0748 /* Main.storyboard */; }; + DDAA4DF52B1735A0002F0748 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DF42B1735A0002F0748 /* Assets.xcassets */; }; + DDAA4DF82B1735A0002F0748 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4DF62B1735A0002F0748 /* LaunchScreen.storyboard */; }; + DDAA4E012B1735B6002F0748 /* SelectSong in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4E002B1735B6002F0748 /* SelectSong */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DDAA4DE82B17359E002F0748 /* SelectSongDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SelectSongDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAA4DEB2B17359E002F0748 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DDAA4DED2B17359E002F0748 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DDAA4DEF2B17359E002F0748 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DDAA4DF22B17359E002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + DDAA4DF42B1735A0002F0748 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DDAA4DF72B1735A0002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + DDAA4DF92B1735A0002F0748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DDAA4DE52B17359E002F0748 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4E012B1735B6002F0748 /* SelectSong in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DDAA4DDF2B17359E002F0748 = { + isa = PBXGroup; + children = ( + DDAA4DEA2B17359E002F0748 /* SelectSongDemo */, + DDAA4DE92B17359E002F0748 /* Products */, + ); + sourceTree = ""; + }; + DDAA4DE92B17359E002F0748 /* Products */ = { + isa = PBXGroup; + children = ( + DDAA4DE82B17359E002F0748 /* SelectSongDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DDAA4DEA2B17359E002F0748 /* SelectSongDemo */ = { + isa = PBXGroup; + children = ( + DDAA4DEB2B17359E002F0748 /* AppDelegate.swift */, + DDAA4DED2B17359E002F0748 /* SceneDelegate.swift */, + DDAA4DEF2B17359E002F0748 /* ViewController.swift */, + DDAA4DF12B17359E002F0748 /* Main.storyboard */, + DDAA4DF42B1735A0002F0748 /* Assets.xcassets */, + DDAA4DF62B1735A0002F0748 /* LaunchScreen.storyboard */, + DDAA4DF92B1735A0002F0748 /* Info.plist */, + ); + path = SelectSongDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DDAA4DE72B17359E002F0748 /* SelectSongDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDAA4DFC2B1735A0002F0748 /* Build configuration list for PBXNativeTarget "SelectSongDemo" */; + buildPhases = ( + DDAA4DE42B17359E002F0748 /* Sources */, + DDAA4DE52B17359E002F0748 /* Frameworks */, + DDAA4DE62B17359E002F0748 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SelectSongDemo; + packageProductDependencies = ( + DDAA4E002B1735B6002F0748 /* SelectSong */, + ); + productName = SelectSongDemo; + productReference = DDAA4DE82B17359E002F0748 /* SelectSongDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DDAA4DE02B17359E002F0748 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + DDAA4DE72B17359E002F0748 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = DDAA4DE32B17359E002F0748 /* Build configuration list for PBXProject "SelectSongDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DDAA4DDF2B17359E002F0748; + packageReferences = ( + DDAA4DFF2B1735B6002F0748 /* XCLocalSwiftPackageReference ".." */, + ); + productRefGroup = DDAA4DE92B17359E002F0748 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDAA4DE72B17359E002F0748 /* SelectSongDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DDAA4DE62B17359E002F0748 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DF82B1735A0002F0748 /* LaunchScreen.storyboard in Resources */, + DDAA4DF52B1735A0002F0748 /* Assets.xcassets in Resources */, + DDAA4DF32B17359E002F0748 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DDAA4DE42B17359E002F0748 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4DF02B17359E002F0748 /* ViewController.swift in Sources */, + DDAA4DEC2B17359E002F0748 /* AppDelegate.swift in Sources */, + DDAA4DEE2B17359E002F0748 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + DDAA4DF12B17359E002F0748 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4DF22B17359E002F0748 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + DDAA4DF62B1735A0002F0748 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4DF72B1735A0002F0748 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DDAA4DFA2B1735A0002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DDAA4DFB2B1735A0002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DDAA4DFD2B1735A0002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SelectSongDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.SelectSongDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DDAA4DFE2B1735A0002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SelectSongDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.SelectSongDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DDAA4DE32B17359E002F0748 /* Build configuration list for PBXProject "SelectSongDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4DFA2B1735A0002F0748 /* Debug */, + DDAA4DFB2B1735A0002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDAA4DFC2B1735A0002F0748 /* Build configuration list for PBXNativeTarget "SelectSongDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4DFD2B1735A0002F0748 /* Debug */, + DDAA4DFE2B1735A0002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DDAA4DFF2B1735B6002F0748 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DDAA4E002B1735B6002F0748 /* SelectSong */ = { + isa = XCSwiftPackageProductDependency; + productName = SelectSong; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DDAA4DE02B17359E002F0748 /* Project object */; +} diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/AppDelegate.swift b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/AppDelegate.swift new file mode 100644 index 0000000..125bc24 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// SelectSongDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/Contents.json b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/LaunchScreen.storyboard b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/Main.storyboard b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Info.plist b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/SceneDelegate.swift b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/SceneDelegate.swift new file mode 100644 index 0000000..4ad36dd --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// SelectSongDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/ViewController.swift b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/ViewController.swift new file mode 100644 index 0000000..7d1b05b --- /dev/null +++ b/iOS/Features/SelectSong/SelectSongDemo/SelectSongDemo/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// SelectSongDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d7a2250 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj @@ -0,0 +1,396 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + DDAA4E0F2B1735CF002F0748 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4E0E2B1735CF002F0748 /* AppDelegate.swift */; }; + DDAA4E112B1735CF002F0748 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4E102B1735CF002F0748 /* SceneDelegate.swift */; }; + DDAA4E132B1735CF002F0748 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAA4E122B1735CF002F0748 /* ViewController.swift */; }; + DDAA4E162B1735CF002F0748 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4E142B1735CF002F0748 /* Main.storyboard */; }; + DDAA4E182B1735D0002F0748 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4E172B1735D0002F0748 /* Assets.xcassets */; }; + DDAA4E1B2B1735D0002F0748 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DDAA4E192B1735D0002F0748 /* LaunchScreen.storyboard */; }; + DDAA4E242B1735E4002F0748 /* Spot in Frameworks */ = {isa = PBXBuildFile; productRef = DDAA4E232B1735E4002F0748 /* Spot */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DDAA4E0B2B1735CF002F0748 /* SpotDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpotDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAA4E0E2B1735CF002F0748 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DDAA4E102B1735CF002F0748 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + DDAA4E122B1735CF002F0748 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DDAA4E152B1735CF002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + DDAA4E172B1735D0002F0748 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DDAA4E1A2B1735D0002F0748 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + DDAA4E1C2B1735D0002F0748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DDAA4E082B1735CF002F0748 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4E242B1735E4002F0748 /* Spot in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DDAA4E022B1735CF002F0748 = { + isa = PBXGroup; + children = ( + DDAA4E0D2B1735CF002F0748 /* SpotDemo */, + DDAA4E0C2B1735CF002F0748 /* Products */, + ); + sourceTree = ""; + }; + DDAA4E0C2B1735CF002F0748 /* Products */ = { + isa = PBXGroup; + children = ( + DDAA4E0B2B1735CF002F0748 /* SpotDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + DDAA4E0D2B1735CF002F0748 /* SpotDemo */ = { + isa = PBXGroup; + children = ( + DDAA4E0E2B1735CF002F0748 /* AppDelegate.swift */, + DDAA4E102B1735CF002F0748 /* SceneDelegate.swift */, + DDAA4E122B1735CF002F0748 /* ViewController.swift */, + DDAA4E142B1735CF002F0748 /* Main.storyboard */, + DDAA4E172B1735D0002F0748 /* Assets.xcassets */, + DDAA4E192B1735D0002F0748 /* LaunchScreen.storyboard */, + DDAA4E1C2B1735D0002F0748 /* Info.plist */, + ); + path = SpotDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DDAA4E0A2B1735CF002F0748 /* SpotDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDAA4E1F2B1735D0002F0748 /* Build configuration list for PBXNativeTarget "SpotDemo" */; + buildPhases = ( + DDAA4E072B1735CF002F0748 /* Sources */, + DDAA4E082B1735CF002F0748 /* Frameworks */, + DDAA4E092B1735CF002F0748 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SpotDemo; + packageProductDependencies = ( + DDAA4E232B1735E4002F0748 /* Spot */, + ); + productName = SpotDemo; + productReference = DDAA4E0B2B1735CF002F0748 /* SpotDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DDAA4E032B1735CF002F0748 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; + TargetAttributes = { + DDAA4E0A2B1735CF002F0748 = { + CreatedOnToolsVersion = 15.0.1; + }; + }; + }; + buildConfigurationList = DDAA4E062B1735CF002F0748 /* Build configuration list for PBXProject "SpotDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DDAA4E022B1735CF002F0748; + packageReferences = ( + DDAA4E222B1735E4002F0748 /* XCLocalSwiftPackageReference ".." */, + ); + productRefGroup = DDAA4E0C2B1735CF002F0748 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDAA4E0A2B1735CF002F0748 /* SpotDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DDAA4E092B1735CF002F0748 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4E1B2B1735D0002F0748 /* LaunchScreen.storyboard in Resources */, + DDAA4E182B1735D0002F0748 /* Assets.xcassets in Resources */, + DDAA4E162B1735CF002F0748 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DDAA4E072B1735CF002F0748 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDAA4E132B1735CF002F0748 /* ViewController.swift in Sources */, + DDAA4E0F2B1735CF002F0748 /* AppDelegate.swift in Sources */, + DDAA4E112B1735CF002F0748 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + DDAA4E142B1735CF002F0748 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4E152B1735CF002F0748 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + DDAA4E192B1735D0002F0748 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DDAA4E1A2B1735D0002F0748 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DDAA4E1D2B1735D0002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DDAA4E1E2B1735D0002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DDAA4E202B1735D0002F0748 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SpotDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.SpotDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DDAA4E212B1735D0002F0748 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = SpotDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = kr.codesquad.boostcamp8.SpotDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DDAA4E062B1735CF002F0748 /* Build configuration list for PBXProject "SpotDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4E1D2B1735D0002F0748 /* Debug */, + DDAA4E1E2B1735D0002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDAA4E1F2B1735D0002F0748 /* Build configuration list for PBXNativeTarget "SpotDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAA4E202B1735D0002F0748 /* Debug */, + DDAA4E212B1735D0002F0748 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + DDAA4E222B1735E4002F0748 /* XCLocalSwiftPackageReference ".." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = ..; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DDAA4E232B1735E4002F0748 /* Spot */ = { + isa = XCSwiftPackageProductDependency; + productName = Spot; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DDAA4E032B1735CF002F0748 /* Project object */; +} diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift b/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift new file mode 100644 index 0000000..b2afe12 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// SpotDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/Contents.json b/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/LaunchScreen.storyboard b/iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/Main.storyboard b/iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist b/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift b/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift new file mode 100644 index 0000000..0a7c806 --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// SpotDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +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/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift b/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift new file mode 100644 index 0000000..2edaf0c --- /dev/null +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// SpotDemo +// +// Created by 이창쀀 on 2023.11.29. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + From bfbdfec01ab6a095e6f68c932752f9a991d648a9 Mon Sep 17 00:00:00 2001 From: mingun Date: Wed, 29 Nov 2023 22:05:28 +0900 Subject: [PATCH 16/40] =?UTF-8?q?:sparkles:=20=EC=B9=B4=EB=A9=94=EB=9D=BC?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 7 + iOS/Features/Spot/Package.swift | 13 +- .../Spot/Sources/CameraView/CameraView.swift | 45 ++++ .../CameraView/CameraViewController.swift | 249 ++++++++++++++++++ .../Sources/CameraView/CameraViewModel.swift | 145 ++++++++++ .../CameraView/Protocol/Positionable.swift | 21 ++ .../CameraViewModel/CameraViewModel.swift | 23 ++ .../Sources/SpotView/SpotViewController.swift | 3 +- .../Sources/MSLogger/MSLogCategory.swift | 1 + 9 files changed, 504 insertions(+), 3 deletions(-) create mode 100644 iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 iOS/Features/Spot/Sources/CameraView/CameraView.swift create mode 100644 iOS/Features/Spot/Sources/CameraView/CameraViewController.swift create mode 100644 iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift create mode 100644 iOS/Features/Spot/Sources/CameraView/Protocol/Positionable.swift create mode 100644 iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift diff --git a/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift index a209d7a..79e614b 100644 --- a/iOS/Features/Spot/Package.swift +++ b/iOS/Features/Spot/Package.swift @@ -8,6 +8,7 @@ import PackageDescription extension String { static let package = "Spot" static let spotView = "SpotView" + static let cameraView = "CameraView" static let msUIKit = "MSUIKit" static let msFoundation = "MSFoundation" static let msDesignsystem = "MSDesignSystem" @@ -33,7 +34,10 @@ let package = Package( products: [ .library( name: .spotView, - targets: [.spotView]) + targets: [.spotView]), + .library( + name: .cameraView, + targets: [.cameraView]) ], dependencies: [ .package(path: .msUIKit.path), @@ -43,11 +47,16 @@ let package = Package( // Codes .target( name: .spotView, + dependencies: [ + .product(name: .msUIKit, package: .msUIKit), + .product(name: .msDesignsystem, package: .msUIKit), + .product(name: .msLogger, package: .msFoundation)]), + .target( + name: .cameraView, dependencies: [ .product(name: .msUIKit, package: .msUIKit), .product(name: .msDesignsystem, package: .msUIKit), .product(name: .msLogger, package: .msFoundation)]) - // Tests ] ) diff --git a/iOS/Features/Spot/Sources/CameraView/CameraView.swift b/iOS/Features/Spot/Sources/CameraView/CameraView.swift new file mode 100644 index 0000000..e44a76b --- /dev/null +++ b/iOS/Features/Spot/Sources/CameraView/CameraView.swift @@ -0,0 +1,45 @@ +// +// CameraView.swift +// Spot +// +// Created by 전민건 on 11/28/23. +// + +import AVFoundation +import UIKit + +import MSLogger + +final class CameraView: UIView { + + private enum Metric { + static let cornerRadius: CGFloat = 15.0 + } + + // MARK: - Initializer + + override init(frame: CGRect) { + super.init(frame: frame) + self.configureLayer() + self.configureStyle() + } + + required init?(coder: NSCoder) { + fatalError("MusicSpot은 code-based둜만 μž‘μ—… μ€‘μž…λ‹ˆλ‹€.") + } + +} + +// MARK: UI Configuration + +private extension CameraView { + + func configureLayer() { + + } + + func configureStyle() { + self.layer.cornerRadius = Metric.cornerRadius + self.clipsToBounds = true + } +} diff --git a/iOS/Features/Spot/Sources/CameraView/CameraViewController.swift b/iOS/Features/Spot/Sources/CameraView/CameraViewController.swift new file mode 100644 index 0000000..e1fd6c9 --- /dev/null +++ b/iOS/Features/Spot/Sources/CameraView/CameraViewController.swift @@ -0,0 +1,249 @@ +// +// SpotViewController.swift +// Spot +// +// Created by 전민건 on 11/22/23. +// + +import UIKit + +import MSDesignSystem +import MSLogger +import MSUIKit + +public final class CameraViewController: UIViewController { + + // MARK: - Constants + + private enum Metric { + + // camera view + enum CameraView { + static let bottomInset: CGFloat = 50.0 + } + + // shot button + enum ShotButton { + static let height: CGFloat = 70.0 + static let width: CGFloat = 70.0 + static let bottomInset: CGFloat = 60.0 + static let radius = width / 2 + static let borderWidth: CGFloat = 5.0 + } + + // gallery button + enum GalleryButton { + static let height: CGFloat = 35.0 + static let width: CGFloat = 35.0 + static let bottomInset: CGFloat = 0.0 + static let leadingInset: CGFloat = 30.0 + static let radius: CGFloat = 6.0 + } + + // gallery button + enum SwapButton { + static let height: CGFloat = 35.0 + static let width: CGFloat = 35.0 + static let bottomInset: CGFloat = 0.0 + static let trailingInset: CGFloat = 30.0 + static let radius: CGFloat = width / 2 + } + } + + // MARK: - Properties + + private let cameraViewModel = CameraViewModel() + + // MARK: - UI Components + + private let cameraView = CameraView() + private let shotButton = UIButton() + private let galleryButton = UIButton() + private let swapButton = UIButton() + + // MARK: - Life Cycle + + public override func viewDidLoad() { + super.viewDidLoad() + self.configure() + } + + // MARK: - Configure + + func configure() { + self.configureLayout() + self.configureStyles() + self.configureAction() + self.configureShotDelegate() + } + + // MARK: - Actions + + private func configureAction() { + self.configureCameraSetting() + self.configureShotButtonAction() + self.configureSwapButtonAction() + self.configureGalleryButtonAction() + } + + private func configureShotButtonAction() { + let shotButtonAction = UIAction(handler: { _ in + self.shotButtonTapped() + }) + self.shotButton.addAction(shotButtonAction, for: .touchUpInside) + } + + private func shotButtonTapped() { + self.cameraViewModel.shot() + } + + private func configureSwapButtonAction() { + let swapButtonAction = UIAction(handler: { _ in + self.swapButtonTapped() + }) + self.swapButton.addAction(swapButtonAction, for: .touchUpInside) + } + + private func swapButtonTapped() { + self.cameraViewModel.swap() + } + + private func configureGalleryButtonAction() { + let galleryButtonAction = UIAction(handler: { _ in + self.galleryButtonTapped() + }) + self.galleryButton.addAction(galleryButtonAction, for: .touchUpInside) + } + + private func galleryButtonTapped() { + let picker = UIImagePickerController() + picker.sourceType = .photoLibrary + picker.allowsEditing = true + self.present(picker, animated: false) + } + + private func configureCameraSetting() { + self.cameraViewModel.preset(screen: cameraView) + } + +} + +// MARK: UI Configuration - Layout + +private extension CameraViewController { + + func configureLayout() { + [ self.cameraView, + self.shotButton, + self.galleryButton, + self.swapButton ].forEach { uiComponent in + self.view.addSubview(uiComponent) + uiComponent.translatesAutoresizingMaskIntoConstraints = false + } + + self.configureCameraViewLayout() + self.configureShotButtonLayout() + self.configureGalleryButtonLayout() + self.configureSwapButtonLayout() + } + + func configureCameraViewLayout() { + NSLayoutConstraint.activate([ + self.cameraView.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor), + self.cameraView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, + constant: -Metric.CameraView.bottomInset), + self.cameraView.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor), + self.cameraView.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor) + ]) + } + + func configureShotButtonLayout() { + NSLayoutConstraint.activate([ + self.shotButton.heightAnchor.constraint(equalToConstant: Metric.ShotButton.height), + self.shotButton.widthAnchor.constraint(equalToConstant: Metric.ShotButton.width), + + self.shotButton.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor), + self.shotButton.centerYAnchor.constraint(equalTo: self.cameraView.safeAreaLayoutGuide.bottomAnchor, + constant: -Metric.ShotButton.bottomInset), + ]) + } + + func configureGalleryButtonLayout() { + NSLayoutConstraint.activate([ + self.galleryButton.heightAnchor.constraint(equalToConstant: Metric.GalleryButton.height), + self.galleryButton.widthAnchor.constraint(equalToConstant: Metric.GalleryButton.width), + + self.galleryButton.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, + constant: Metric.GalleryButton.leadingInset), + self.galleryButton.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, + constant: -Metric.GalleryButton.bottomInset), + ]) + } + + func configureSwapButtonLayout() { + NSLayoutConstraint.activate([ + self.swapButton.heightAnchor.constraint(equalToConstant: Metric.SwapButton.height), + self.swapButton.widthAnchor.constraint(equalToConstant: Metric.SwapButton.width), + + self.swapButton.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, + constant: -Metric.SwapButton.trailingInset), + self.swapButton.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, + constant: -Metric.SwapButton.bottomInset), + ]) + } + + // MARK: UI Configuration - Style + + func configureStyles() { + self.view.backgroundColor = .black + + self.shotButton.backgroundColor = .white + self.shotButton.layer.cornerRadius = Metric.ShotButton.radius + self.shotButton.layer.borderColor = UIColor.msColor(.musicSpot).cgColor + self.shotButton.layer.borderWidth = Metric.ShotButton.borderWidth + + self.galleryButton.backgroundColor = .msColor(.musicSpot) + self.galleryButton.layer.cornerRadius = Metric.GalleryButton.radius + self.galleryButton.setImage(UIImage(systemName: "photo.fill"), for: .normal) + self.galleryButton.tintColor = .white + + self.swapButton.backgroundColor = .darkGray + self.swapButton.layer.cornerRadius = Metric.SwapButton.radius + self.swapButton.setImage(UIImage(systemName: "arrow.triangle.2.circlepath"), for: .normal) + self.swapButton.tintColor = .white + } + +} + +// MARK: ConfigureDelegate + +private extension CameraViewController { + + func configureShotDelegate() { + self.cameraViewModel.delegate = self + } + +} + +// MARK: ShotDelegate + +extension CameraViewController: ShotDelegate { + + func update(imageData: Data?) { + guard let imageData else { + MSLogger.make(category: .camera).debug("촬영된 imageκ°€ μ €μž₯λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.") + return + } + self.cameraView.layer.contents = UIImage(data: imageData) + } + +} + +// MARK: - Preview + +@available(iOS 17, *) +#Preview { + MSFont.registerFonts() + let viewController = CameraViewController() + return viewController +} diff --git a/iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift b/iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift new file mode 100644 index 0000000..1f6d204 --- /dev/null +++ b/iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift @@ -0,0 +1,145 @@ +// +// CameraViewModel.swift +// Spot +// +// Created by 전민건 on 11/22/23. +// + +import AVFoundation + +import MSLogger + +protocol ShotDelegate: AnyObject { + + func update(imageData: Data?) + +} + +final class CameraViewModel: NSObject { + + // MARK: SwapMode + + enum SwapMode { + case front + case back + + var device: AVCaptureDevice? { + guard let device = AVCaptureDevice.default(.builtInWideAngleCamera, + for: .video, + position: self == .front ? .front : .back) else { + MSLogger.make(category: .camera).error("ν•΄λ‹Ή μœ„μΉ˜μ˜ camera deviceκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.") + return nil + } + return device + } + + var input: AVCaptureDeviceInput? { + guard let device = self.device, + let input = try? AVCaptureDeviceInput(device: device) else { + MSLogger.make(category: .camera).debug("ν•΄λ‹Ή device둜 input을 생성할 수 μ—†μŠ΅λ‹ˆλ‹€.") + return nil + } + return input + } + + } + + // MARK: Properties + + weak var delegate: ShotDelegate? + var swapMode: SwapMode = .back { + didSet { + self.configureSwapMode() + } + } + let frontCamera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front) + let backCamera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) + let session = AVCaptureSession() + var input: AVCaptureDeviceInput? + let output = AVCapturePhotoOutput() + let settings = AVCapturePhotoSettings() + +} + +// MARK: Interface + +internal extension CameraViewModel { + + func preset(screen: Positionable) { + self.presetCamera(screen: screen) + } + + func shot() { + self.output.capturePhoto(with: settings, delegate: self) + } + + func swap() { + self.swapMode = self.swapMode == .back ? .front : .back + } + + func gallery() { + guard let input = self.swapMode.input else { + return + } + self.session.beginConfiguration() + self.session.inputs.forEach { input in + self.session.removeInput(input) + } + self.session.addInput(input) + self.session.commitConfiguration() + } + +} + +// MARK: Setting Camera + +private extension CameraViewModel { + + func presetCamera(screen: Positionable) { + guard let input = self.swapMode.input else { return } + self.session.sessionPreset = .photo + self.session.addInput(input) + self.session.addOutput(self.output) + + let previewLayer = AVCaptureVideoPreviewLayer(session: self.session) + + DispatchQueue.global(qos: .background).async { + self.session.startRunning() + } + + DispatchQueue.main.async { + previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill + previewLayer.frame = screen.bounds + screen.layer.addSublayer(previewLayer) + } + } + + func configureSwapMode() { + guard let input = self.swapMode.input else { + return + } + self.session.beginConfiguration() + self.session.inputs.forEach { + self.session.removeInput($0) + } + self.session.addInput(input) + self.session.commitConfiguration() + } + +} + +// MARK: - AVCapturePhotoCaptureDelegate + +extension CameraViewModel: AVCapturePhotoCaptureDelegate { + func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) { + guard let imageData = photo.fileDataRepresentation() else { + MSLogger.make(category: .camera).debug("image Dataκ°€ μ—†μŠ΅λ‹ˆλ‹€.") + return + } + self.delegate?.update(imageData: imageData) + DispatchQueue.global(qos: .background).async { + self.session.stopRunning() + } + } +} + diff --git a/iOS/Features/Spot/Sources/CameraView/Protocol/Positionable.swift b/iOS/Features/Spot/Sources/CameraView/Protocol/Positionable.swift new file mode 100644 index 0000000..de86e2e --- /dev/null +++ b/iOS/Features/Spot/Sources/CameraView/Protocol/Positionable.swift @@ -0,0 +1,21 @@ +// +// Positionable.swift +// Spot +// +// Created by 전민건 on 11/29/23. +// + +import Foundation +import QuartzCore +import UIKit + +public protocol Positionable: AnyObject { + + var bounds: CGRect { get set } + var layer: CALayer { get } + +} + +extension UIView: Positionable { + +} diff --git a/iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift b/iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift new file mode 100644 index 0000000..4614899 --- /dev/null +++ b/iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift @@ -0,0 +1,23 @@ +// +// CameraViewModel.swift +// Spot +// +// Created by 전민건 on 11/22/23. +// + +import AVFoundation + +import MSLogger + +final class CameraViewModel { + + + +} + +// MARK: Preset Camera + +private extension CameraViewModel { + + +} diff --git a/iOS/Features/Spot/Sources/SpotView/SpotViewController.swift b/iOS/Features/Spot/Sources/SpotView/SpotViewController.swift index 60a49b5..d7bc80f 100644 --- a/iOS/Features/Spot/Sources/SpotView/SpotViewController.swift +++ b/iOS/Features/Spot/Sources/SpotView/SpotViewController.swift @@ -150,6 +150,8 @@ public final class SpotViewController: UIViewController { // MARK: - UI Components: Style private func configureStyle() { + + MSFont.registerFonts() self.view.backgroundColor = .msColor(.primaryBackground) self.configureImageViewStyle() self.configureLabelsStyle() @@ -234,7 +236,6 @@ public final class SpotViewController: UIViewController { @available(iOS 17, *) #Preview { - MSFont.registerFonts() let viewController = SpotViewController() return viewController } diff --git a/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift b/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift index 013c81d..17a1032 100644 --- a/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift +++ b/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift @@ -15,4 +15,5 @@ public enum MSLogCategory: String { case checkJourney case login case setting + case camera } From fc2024f29badcf690907ed143f7d0c79842fee2e Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:14:56 +0900 Subject: [PATCH 17/40] =?UTF-8?q?:memo:=20CameraView=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/Spot/Package.swift | 18 ++--- .../CameraViewModel/CameraViewModel.swift | 23 ------- .../{CameraView => Spot}/CameraView.swift | 7 +- .../Protocol/Positionable.swift | 0 .../SpotSaveViewController.swift} | 28 ++++---- .../SpotViewController.swift} | 65 ++++++++++++++----- .../SpotViewModel.swift} | 18 +++-- 7 files changed, 80 insertions(+), 79 deletions(-) delete mode 100644 iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift rename iOS/Features/Spot/Sources/{CameraView => Spot}/CameraView.swift (86%) rename iOS/Features/Spot/Sources/{CameraView => Spot}/Protocol/Positionable.swift (100%) rename iOS/Features/Spot/Sources/{SpotView/SpotViewController.swift => Spot/SpotSaveViewController.swift} (96%) rename iOS/Features/Spot/Sources/{CameraView/CameraViewController.swift => Spot/SpotViewController.swift} (80%) rename iOS/Features/Spot/Sources/{CameraView/CameraViewModel.swift => Spot/SpotViewModel.swift} (94%) diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift index 79e614b..1cbdb8d 100644 --- a/iOS/Features/Spot/Package.swift +++ b/iOS/Features/Spot/Package.swift @@ -7,8 +7,7 @@ import PackageDescription extension String { static let package = "Spot" - static let spotView = "SpotView" - static let cameraView = "CameraView" + static let spot = "Spot" static let msUIKit = "MSUIKit" static let msFoundation = "MSFoundation" static let msDesignsystem = "MSDesignSystem" @@ -33,11 +32,8 @@ let package = Package( ], products: [ .library( - name: .spotView, - targets: [.spotView]), - .library( - name: .cameraView, - targets: [.cameraView]) + name: .spot, + targets: [.spot]) ], dependencies: [ .package(path: .msUIKit.path), @@ -46,13 +42,7 @@ let package = Package( targets: [ // Codes .target( - name: .spotView, - dependencies: [ - .product(name: .msUIKit, package: .msUIKit), - .product(name: .msDesignsystem, package: .msUIKit), - .product(name: .msLogger, package: .msFoundation)]), - .target( - name: .cameraView, + name: .spot, dependencies: [ .product(name: .msUIKit, package: .msUIKit), .product(name: .msDesignsystem, package: .msUIKit), diff --git a/iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift b/iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift deleted file mode 100644 index 4614899..0000000 --- a/iOS/Features/Spot/Sources/CameraViewModel/CameraViewModel.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// CameraViewModel.swift -// Spot -// -// Created by 전민건 on 11/22/23. -// - -import AVFoundation - -import MSLogger - -final class CameraViewModel { - - - -} - -// MARK: Preset Camera - -private extension CameraViewModel { - - -} diff --git a/iOS/Features/Spot/Sources/CameraView/CameraView.swift b/iOS/Features/Spot/Sources/Spot/CameraView.swift similarity index 86% rename from iOS/Features/Spot/Sources/CameraView/CameraView.swift rename to iOS/Features/Spot/Sources/Spot/CameraView.swift index e44a76b..c5d85de 100644 --- a/iOS/Features/Spot/Sources/CameraView/CameraView.swift +++ b/iOS/Features/Spot/Sources/Spot/CameraView.swift @@ -20,7 +20,6 @@ final class CameraView: UIView { override init(frame: CGRect) { super.init(frame: frame) - self.configureLayer() self.configureStyle() } @@ -30,14 +29,10 @@ final class CameraView: UIView { } -// MARK: UI Configuration +// MARK: - UI Configuration: Style private extension CameraView { - func configureLayer() { - - } - func configureStyle() { self.layer.cornerRadius = Metric.cornerRadius self.clipsToBounds = true diff --git a/iOS/Features/Spot/Sources/CameraView/Protocol/Positionable.swift b/iOS/Features/Spot/Sources/Spot/Protocol/Positionable.swift similarity index 100% rename from iOS/Features/Spot/Sources/CameraView/Protocol/Positionable.swift rename to iOS/Features/Spot/Sources/Spot/Protocol/Positionable.swift diff --git a/iOS/Features/Spot/Sources/SpotView/SpotViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift similarity index 96% rename from iOS/Features/Spot/Sources/SpotView/SpotViewController.swift rename to iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift index d7bc80f..dafc954 100644 --- a/iOS/Features/Spot/Sources/SpotView/SpotViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift @@ -11,7 +11,7 @@ import MSDesignSystem import MSLogger import MSUIKit -public final class SpotViewController: UIViewController { +public final class SpotSaveViewController: UIViewController { // MARK: - Constants @@ -65,6 +65,13 @@ public final class SpotViewController: UIViewController { } } + // MARK: - Life Cycle + + public override func viewDidLoad() { + super.viewDidLoad() + self.configure() + } + // MARK: - Configure func configure() { @@ -112,7 +119,7 @@ public final class SpotViewController: UIViewController { self.view.addSubview(label) label.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ - label.centerXAnchor.constraint(equalTo: self.view.centerXAnchor) + label.centerXAnchor.constraint(equalTo: self.view.centerXAnchor) ]) } NSLayoutConstraint.activate([ @@ -213,13 +220,6 @@ public final class SpotViewController: UIViewController { self.subTextLabel.numberOfLines = multiLineConstant } - // MARK: - Life Cycle - - public override func viewDidLoad() { - super.viewDidLoad() - self.configure() - } - // MARK: Actions private func cancelButtonTapped() { @@ -234,8 +234,8 @@ public final class SpotViewController: UIViewController { // MARK: - Preview -@available(iOS 17, *) -#Preview { - let viewController = SpotViewController() - return viewController -} +//@available(iOS 17, *) +//#Preview { +//// let view = SpotSaveView() +//// return view +//} diff --git a/iOS/Features/Spot/Sources/CameraView/CameraViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift similarity index 80% rename from iOS/Features/Spot/Sources/CameraView/CameraViewController.swift rename to iOS/Features/Spot/Sources/Spot/SpotViewController.swift index e1fd6c9..8a05d07 100644 --- a/iOS/Features/Spot/Sources/CameraView/CameraViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift @@ -11,7 +11,7 @@ import MSDesignSystem import MSLogger import MSUIKit -public final class CameraViewController: UIViewController { +public final class SpotViewController: UIViewController, UINavigationControllerDelegate { // MARK: - Constants @@ -52,7 +52,8 @@ public final class CameraViewController: UIViewController { // MARK: - Properties - private let cameraViewModel = CameraViewModel() + private let spotViewModel = SpotViewModel() + private let picker = UIImagePickerController() // MARK: - UI Components @@ -74,9 +75,27 @@ public final class CameraViewController: UIViewController { self.configureLayout() self.configureStyles() self.configureAction() - self.configureShotDelegate() + self.configureState() + self.configureDelegate() + } + + // MARK: - Configure Delegate + + private func configureDelegate() { + self.picker.delegate = self + } + + // MARK: - Configure State + + private func configureState() { + self.configurePickerState() } + private func configurePickerState() { + self.picker.sourceType = .photoLibrary + self.picker.allowsEditing = true + } + // MARK: - Actions private func configureAction() { @@ -94,7 +113,7 @@ public final class CameraViewController: UIViewController { } private func shotButtonTapped() { - self.cameraViewModel.shot() + self.spotViewModel.shot() } private func configureSwapButtonAction() { @@ -105,7 +124,7 @@ public final class CameraViewController: UIViewController { } private func swapButtonTapped() { - self.cameraViewModel.swap() + self.spotViewModel.swap() } private func configureGalleryButtonAction() { @@ -116,21 +135,18 @@ public final class CameraViewController: UIViewController { } private func galleryButtonTapped() { - let picker = UIImagePickerController() - picker.sourceType = .photoLibrary - picker.allowsEditing = true - self.present(picker, animated: false) + self.present(self.picker, animated: false) } private func configureCameraSetting() { - self.cameraViewModel.preset(screen: cameraView) + self.spotViewModel.preset(screen: cameraView) } } // MARK: UI Configuration - Layout -private extension CameraViewController { +private extension SpotViewController { func configureLayout() { [ self.cameraView, @@ -217,17 +233,17 @@ private extension CameraViewController { // MARK: ConfigureDelegate -private extension CameraViewController { +private extension SpotViewController { func configureShotDelegate() { - self.cameraViewModel.delegate = self + self.spotViewModel.delegate = self } } // MARK: ShotDelegate -extension CameraViewController: ShotDelegate { +extension SpotViewController: ShotDelegate { func update(imageData: Data?) { guard let imageData else { @@ -239,11 +255,30 @@ extension CameraViewController: ShotDelegate { } +// MARK: ImagePickerDelegate + +extension SpotViewController: UIImagePickerControllerDelegate { + + public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + guard let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage else { + return + } + self.spotViewModel.stopCamera() + let spotSaveViewController = SpotSaveViewController() + spotSaveViewController.image = image + spotSaveViewController.modalPresentationStyle = .fullScreen + picker.dismiss(animated: true) + self.presentedViewController?.dismiss(animated: true) + self.present(spotSaveViewController, animated: false) + } + +} + // MARK: - Preview @available(iOS 17, *) #Preview { MSFont.registerFonts() - let viewController = CameraViewController() + let viewController = SpotViewController() return viewController } diff --git a/iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift similarity index 94% rename from iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift rename to iOS/Features/Spot/Sources/Spot/SpotViewModel.swift index 1f6d204..350dbda 100644 --- a/iOS/Features/Spot/Sources/CameraView/CameraViewModel.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift @@ -15,7 +15,7 @@ protocol ShotDelegate: AnyObject { } -final class CameraViewModel: NSObject { +final class SpotViewModel: NSObject { // MARK: SwapMode @@ -63,7 +63,7 @@ final class CameraViewModel: NSObject { // MARK: Interface -internal extension CameraViewModel { +internal extension SpotViewModel { func preset(screen: Positionable) { self.presetCamera(screen: screen) @@ -89,11 +89,17 @@ internal extension CameraViewModel { self.session.commitConfiguration() } + func stopCamera() { + DispatchQueue.global(qos: .background).async { + self.session.stopRunning() + } + } + } // MARK: Setting Camera -private extension CameraViewModel { +private extension SpotViewModel { func presetCamera(screen: Positionable) { guard let input = self.swapMode.input else { return } @@ -130,16 +136,14 @@ private extension CameraViewModel { // MARK: - AVCapturePhotoCaptureDelegate -extension CameraViewModel: AVCapturePhotoCaptureDelegate { +extension SpotViewModel: AVCapturePhotoCaptureDelegate { func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) { guard let imageData = photo.fileDataRepresentation() else { MSLogger.make(category: .camera).debug("image Dataκ°€ μ—†μŠ΅λ‹ˆλ‹€.") return } self.delegate?.update(imageData: imageData) - DispatchQueue.global(qos: .background).async { - self.session.stopRunning() - } + self.stopCamera() } } From f1354721f858239829ba45b575dab12821e6e567 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:18:23 +0900 Subject: [PATCH 18/40] =?UTF-8?q?:sparkles:=20=EC=B9=B4=EB=A9=94=EB=9D=BC?= =?UTF-8?q?=20UI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Spot/SpotViewController.swift | 196 ++++++++++-------- 1 file changed, 112 insertions(+), 84 deletions(-) diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift index 8a05d07..eb320c4 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift @@ -12,9 +12,9 @@ import MSLogger import MSUIKit public final class SpotViewController: UIViewController, UINavigationControllerDelegate { - + // MARK: - Constants - + private enum Metric { // camera view @@ -49,10 +49,11 @@ public final class SpotViewController: UIViewController, UINavigationControllerD static let radius: CGFloat = width / 2 } } - + // MARK: - Properties private let spotViewModel = SpotViewModel() + private let spotSaveViewController = SpotSaveViewController() private let picker = UIImagePickerController() // MARK: - UI Components @@ -61,14 +62,19 @@ public final class SpotViewController: UIViewController, UINavigationControllerD private let shotButton = UIButton() private let galleryButton = UIButton() private let swapButton = UIButton() - + // MARK: - Life Cycle - + public override func viewDidLoad() { super.viewDidLoad() self.configure() } + public override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + self.spotViewModel.startCamera() + } + // MARK: - Configure func configure() { @@ -79,72 +85,9 @@ public final class SpotViewController: UIViewController, UINavigationControllerD self.configureDelegate() } - // MARK: - Configure Delegate - - private func configureDelegate() { - self.picker.delegate = self - } - - // MARK: - Configure State - - private func configureState() { - self.configurePickerState() - } - - private func configurePickerState() { - self.picker.sourceType = .photoLibrary - self.picker.allowsEditing = true - } - - // MARK: - Actions - - private func configureAction() { - self.configureCameraSetting() - self.configureShotButtonAction() - self.configureSwapButtonAction() - self.configureGalleryButtonAction() - } - - private func configureShotButtonAction() { - let shotButtonAction = UIAction(handler: { _ in - self.shotButtonTapped() - }) - self.shotButton.addAction(shotButtonAction, for: .touchUpInside) - } - - private func shotButtonTapped() { - self.spotViewModel.shot() - } - - private func configureSwapButtonAction() { - let swapButtonAction = UIAction(handler: { _ in - self.swapButtonTapped() - }) - self.swapButton.addAction(swapButtonAction, for: .touchUpInside) - } - - private func swapButtonTapped() { - self.spotViewModel.swap() - } - - private func configureGalleryButtonAction() { - let galleryButtonAction = UIAction(handler: { _ in - self.galleryButtonTapped() - }) - self.galleryButton.addAction(galleryButtonAction, for: .touchUpInside) - } - - private func galleryButtonTapped() { - self.present(self.picker, animated: false) - } - - private func configureCameraSetting() { - self.spotViewModel.preset(screen: cameraView) - } - } -// MARK: UI Configuration - Layout +// MARK: - UI Configuration: Layout private extension SpotViewController { @@ -202,13 +145,17 @@ private extension SpotViewController { self.swapButton.widthAnchor.constraint(equalToConstant: Metric.SwapButton.width), self.swapButton.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, - constant: -Metric.SwapButton.trailingInset), + constant: -Metric.SwapButton.trailingInset), self.swapButton.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, - constant: -Metric.SwapButton.bottomInset), + constant: -Metric.SwapButton.bottomInset), ]) } - // MARK: UI Configuration - Style +} + + // MARK: UI Configuration: Style + +private extension SpotViewController { func configureStyles() { self.view.backgroundColor = .black @@ -227,35 +174,109 @@ private extension SpotViewController { self.swapButton.layer.cornerRadius = Metric.SwapButton.radius self.swapButton.setImage(UIImage(systemName: "arrow.triangle.2.circlepath"), for: .normal) self.swapButton.tintColor = .white + + self.spotSaveViewController.modalPresentationStyle = .fullScreen } } -// MARK: ConfigureDelegate +// MARK: - Configure: Actions private extension SpotViewController { - func configureShotDelegate() { + func configureAction() { + self.configureCameraSetting() + self.configureShotButtonAction() + self.configureSwapButtonAction() + self.configureGalleryButtonAction() + } + + func configureShotButtonAction() { + let shotButtonAction = UIAction(handler: { _ in + self.shotButtonTapped() + }) + self.shotButton.addAction(shotButtonAction, for: .touchUpInside) + } + + func configureSwapButtonAction() { + let swapButtonAction = UIAction(handler: { _ in + self.swapButtonTapped() + }) + self.swapButton.addAction(swapButtonAction, for: .touchUpInside) + } + + func configureGalleryButtonAction() { + let galleryButtonAction = UIAction(handler: { _ in + self.galleryButtonTapped() + }) + self.galleryButton.addAction(galleryButtonAction, for: .touchUpInside) + } + + private func configureCameraSetting() { + self.spotViewModel.preset(screen: cameraView) + } + +} + +// MARK: - Configure: State + +private extension SpotViewController { + + func configureState() { + self.configurePickerState() + } + + func configurePickerState() { + self.picker.sourceType = .photoLibrary + self.picker.allowsEditing = true + } + +} + +// MARK: - Button Actions + +private extension SpotViewController { + + func shotButtonTapped() { + self.spotViewModel.shot() + } + + func swapButtonTapped() { + self.spotViewModel.swap() + } + + func galleryButtonTapped() { + self.present(self.picker, animated: false) + } +} + +// MARK: - Delegate + +private extension SpotViewController { + + func configureDelegate() { + self.picker.delegate = self self.spotViewModel.delegate = self } } -// MARK: ShotDelegate +// MARK: - Delegate: ShotDelegate extension SpotViewController: ShotDelegate { func update(imageData: Data?) { - guard let imageData else { + guard let imageData, let image = UIImage(data: imageData) else { MSLogger.make(category: .camera).debug("촬영된 imageκ°€ μ €μž₯λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.") return } - self.cameraView.layer.contents = UIImage(data: imageData) + self.cameraView.layer.contents = imageData + self.presentSpotSaveViewController(with: image) } } -// MARK: ImagePickerDelegate +// MARK: - Delegate: ImagePickerDelegate extension SpotViewController: UIImagePickerControllerDelegate { @@ -263,13 +284,20 @@ extension SpotViewController: UIImagePickerControllerDelegate { guard let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage else { return } + self.presentSpotSaveViewController(with: image) + } + +} + +// MARK: - Functions + +private extension SpotViewController { + + func presentSpotSaveViewController(with image: UIImage) { self.spotViewModel.stopCamera() - let spotSaveViewController = SpotSaveViewController() - spotSaveViewController.image = image - spotSaveViewController.modalPresentationStyle = .fullScreen - picker.dismiss(animated: true) - self.presentedViewController?.dismiss(animated: true) - self.present(spotSaveViewController, animated: false) + self.spotSaveViewController.image = image + self.presentingViewController?.dismiss(animated: true) + self.present(self.spotSaveViewController, animated: true) } } From 6d15c87d9aaa6bb4a0cdebb3fc87b1a5a045ceab Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:19:13 +0900 Subject: [PATCH 19/40] =?UTF-8?q?:sparkles:=20=EC=B9=B4=EB=A9=94=EB=9D=BC?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spot/Sources/Spot/SpotViewModel.swift | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift index 350dbda..d259bec 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift @@ -17,7 +17,7 @@ protocol ShotDelegate: AnyObject { final class SpotViewModel: NSObject { - // MARK: SwapMode + // MARK: - Type: SwapMode enum SwapMode { case front @@ -44,7 +44,7 @@ final class SpotViewModel: NSObject { } - // MARK: Properties + // MARK: - Properties weak var delegate: ShotDelegate? var swapMode: SwapMode = .back { @@ -57,11 +57,10 @@ final class SpotViewModel: NSObject { let session = AVCaptureSession() var input: AVCaptureDeviceInput? let output = AVCapturePhotoOutput() - let settings = AVCapturePhotoSettings() } -// MARK: Interface +// MARK: - Interface internal extension SpotViewModel { @@ -70,6 +69,7 @@ internal extension SpotViewModel { } func shot() { + let settings = AVCapturePhotoSettings() self.output.capturePhoto(with: settings, delegate: self) } @@ -95,9 +95,15 @@ internal extension SpotViewModel { } } + func startCamera() { + DispatchQueue.global(qos: .background).async { + self.session.startRunning() + } + } + } -// MARK: Setting Camera +// MARK: - Actions: Camera private extension SpotViewModel { @@ -109,10 +115,7 @@ private extension SpotViewModel { let previewLayer = AVCaptureVideoPreviewLayer(session: self.session) - DispatchQueue.global(qos: .background).async { - self.session.startRunning() - } - + self.startCamera() DispatchQueue.main.async { previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill previewLayer.frame = screen.bounds @@ -134,16 +137,18 @@ private extension SpotViewModel { } -// MARK: - AVCapturePhotoCaptureDelegate +// MARK: - Delegate: Camera extension SpotViewModel: AVCapturePhotoCaptureDelegate { + func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) { guard let imageData = photo.fileDataRepresentation() else { MSLogger.make(category: .camera).debug("image Dataκ°€ μ—†μŠ΅λ‹ˆλ‹€.") return } - self.delegate?.update(imageData: imageData) self.stopCamera() + self.delegate?.update(imageData: imageData) } + } From d812937bbc460723540c2d0504fcec51e907d7cc Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:20:04 +0900 Subject: [PATCH 20/40] =?UTF-8?q?:recycle:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC=20=EB=B0=8F=20=EA=B5=AC=EC=A1=B0=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Spot/SpotSaveViewController.swift | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift index dafc954..07447c2 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift @@ -32,7 +32,7 @@ public final class SpotSaveViewController: UIViewController { enum SubTextLabel { static let height: CGFloat = 42.0 - static let topInset: CGFloat = 12.0 + static let topInset: CGFloat = 2.0 } // buttons @@ -53,17 +53,21 @@ public final class SpotSaveViewController: UIViewController { // MARK: - Properties + public var image: UIImage? { + didSet { + self.configureImageViewState() + } + } + private let spotSaveViewModel = SpotSaveViewModel() + + // MARK: - UI Components + private let imageView = UIImageView() private let textView = UIView() private let textLabel = UILabel() private let subTextLabel = UILabel() private let cancelButton = MSRectButton.large(isBrandColored: false) private let completeButton = MSRectButton.large() - public var image: UIImage? { - didSet { - self.configureImageViewValue() - } - } // MARK: - Life Cycle @@ -78,7 +82,7 @@ public final class SpotSaveViewController: UIViewController { self.configureLayout() self.configureStyle() self.configureAction() - self.configureValue() + self.configureState() } // MARK: - UI Components: Layout @@ -201,18 +205,18 @@ public final class SpotSaveViewController: UIViewController { self.completeButton.addAction(completeButtonAction, for: .touchUpInside) } - // MARK: - Configure: Value + // MARK: - Configure: State - private func configureValue() { - self.configureImageViewValue() - self.configureLabelsValue() + private func configureState() { + self.configureImageViewState() + self.configureLabelsState() } - private func configureImageViewValue() { + private func configureImageViewState() { self.imageView.image = self.image } - private func configureLabelsValue() { + private func configureLabelsState() { self.textLabel.text = Default.text self.subTextLabel.text = Default.subText @@ -220,22 +224,26 @@ public final class SpotSaveViewController: UIViewController { self.subTextLabel.numberOfLines = multiLineConstant } - // MARK: Actions + // MARK: - Button Actions private func cancelButtonTapped() { - + self.presentingViewController?.dismiss(animated: true) } private func completeButtonTapped() { - + guard let data = self.image?.pngData() else { + MSLogger.make(category: .recordingJourney).debug("ν˜„μž¬ 이미지λ₯Ό Data둜 λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.") + return + } + self.spotSaveViewModel.upload(data: data) } } // MARK: - Preview -//@available(iOS 17, *) -//#Preview { -//// let view = SpotSaveView() -//// return view -//} +@available(iOS 17, *) +#Preview { + let spotView = SpotSaveViewController() + return spotView +} From 2315684977eaed1eed6cc5195236bcb0565f8d05 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:20:48 +0900 Subject: [PATCH 21/40] =?UTF-8?q?:memo:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=86=A1=EC=B6=9C=ED=95=B4=EC=A3=BC=EB=8A=94=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=EC=9D=84=20=EB=8B=A4=EB=A3=B0=20viewModel=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spot/Sources/Spot/SpotSaveViewModel.swift | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift diff --git a/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift b/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift new file mode 100644 index 0000000..b3bdc44 --- /dev/null +++ b/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift @@ -0,0 +1,24 @@ +// +// SpotSaveViewModel.swift +// Spot +// +// Created by 전민건 on 11/29/23. +// + +import Foundation + +final class SpotSaveViewModel { + + // MARK: - Properties + +} + +// MARK: - Interface + +internal extension SpotSaveViewModel { + + func upload(data: Data) { + // Networking.. + } + +} From ee0d36d51b72bf55dadd2f55d3b6da6d3d57dcff Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:26:23 +0900 Subject: [PATCH 22/40] =?UTF-8?q?:art:=20Lint=20=EC=BB=A8=EB=B0=B4?= =?UTF-8?q?=EC=85=98=EC=97=90=20=EB=A7=9E=EC=B6=98=20=EC=BD=94=EB=93=9C=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 --- iOS/Features/Spot/Sources/Spot/SpotViewController.swift | 9 +++++---- iOS/Features/Spot/Sources/Spot/SpotViewModel.swift | 3 +-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift index eb320c4..e201900 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift @@ -123,7 +123,7 @@ private extension SpotViewController { self.shotButton.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor), self.shotButton.centerYAnchor.constraint(equalTo: self.cameraView.safeAreaLayoutGuide.bottomAnchor, - constant: -Metric.ShotButton.bottomInset), + constant: -Metric.ShotButton.bottomInset) ]) } @@ -135,7 +135,7 @@ private extension SpotViewController { self.galleryButton.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: Metric.GalleryButton.leadingInset), self.galleryButton.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, - constant: -Metric.GalleryButton.bottomInset), + constant: -Metric.GalleryButton.bottomInset) ]) } @@ -147,7 +147,7 @@ private extension SpotViewController { self.swapButton.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -Metric.SwapButton.trailingInset), self.swapButton.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, - constant: -Metric.SwapButton.bottomInset), + constant: -Metric.SwapButton.bottomInset) ]) } @@ -280,7 +280,8 @@ extension SpotViewController: ShotDelegate { extension SpotViewController: UIImagePickerControllerDelegate { - public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo + info: [UIImagePickerController.InfoKey: Any]) { guard let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage else { return } diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift index d259bec..89b3258 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift @@ -24,7 +24,7 @@ final class SpotViewModel: NSObject { case back var device: AVCaptureDevice? { - guard let device = AVCaptureDevice.default(.builtInWideAngleCamera, + guard let device = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: self == .front ? .front : .back) else { MSLogger.make(category: .camera).error("ν•΄λ‹Ή μœ„μΉ˜μ˜ camera deviceκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.") @@ -151,4 +151,3 @@ extension SpotViewModel: AVCapturePhotoCaptureDelegate { } } - From 044732ea2f35c3e8ec3b7a34e1cbecd98d9f18ba Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:37:44 +0900 Subject: [PATCH 23/40] =?UTF-8?q?:art:=20Commit=20=ED=8C=8C=EC=9D=BC=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 --- iOS/commit | 4 ---- 1 file changed, 4 deletions(-) diff --git a/iOS/commit b/iOS/commit index 6d71063..8eac4c3 100755 --- a/iOS/commit +++ b/iOS/commit @@ -1,11 +1,7 @@ #!/bin/sh ​ LINTPATH='.swiftlint.yml' -<<<<<<< HEAD -declare -a PATHS=("MSCoreKit" "MSFoundation" "MSUIKit" "MusicSpot" "MSData" "Features") -======= declare -a PATHS=("MSCoreKit" "MSFoundation" "MSUIKit" "MSData" "MusicSpot" "Features") ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b failures="" ​ for path in "${PATHS[@]}"; do From ff406ae11e2744b70e8e9833c329785a4cd5eeec Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:44:02 +0900 Subject: [PATCH 24/40] =?UTF-8?q?:art:=20Lint=20=EA=B7=9C=EC=B9=99?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EC=B6=94=EC=96=B4=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20+=20Demo=20App=20=EC=85=8B=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpotDemo/SpotDemo/SceneDelegate.swift | 46 +++++-------------- .../SpotDemo/SpotDemo/ViewController.swift | 7 --- 2 files changed, 11 insertions(+), 42 deletions(-) diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift b/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift index 0a7c806..af25008 100644 --- a/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/SceneDelegate.swift @@ -7,46 +7,22 @@ import UIKit +import Spot + 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 scene(_ scene: UIScene, + willConnectTo session: UISceneSession, + options connectionOptions: UIScene.ConnectionOptions) { + guard let windowScene = (scene as? UIWindowScene) else { return } + + window = UIWindow(windowScene: windowScene) + let spotVc = SpotViewController() + window?.rootViewController = spotVc + window?.makeKeyAndVisible() } - 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/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift b/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift index 2edaf0c..82c12bf 100644 --- a/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/ViewController.swift @@ -9,11 +9,4 @@ import UIKit class ViewController: UIViewController { - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - } - From 2e3fc79640ed2475f0195db284f660b7351360b8 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 14:49:10 +0900 Subject: [PATCH 25/40] =?UTF-8?q?:art:=20Lint=20=EC=BB=A8=EB=B0=B4?= =?UTF-8?q?=EC=85=98=20=EB=A7=9E=EC=B6=94=EC=96=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spot/SpotDemo/SpotDemo/AppDelegate.swift | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift b/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift index b2afe12..ca0696e 100644 --- a/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/AppDelegate.swift @@ -9,14 +9,7 @@ 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 { @@ -25,12 +18,4 @@ class AppDelegate: UIResponder, UIApplicationDelegate { 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. - } - - } - From 2956530f808f03657149d8c2d047e9dd79242d16 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 15:04:22 +0900 Subject: [PATCH 26/40] =?UTF-8?q?:memo:=20Demo=20App=20=EC=B9=B4=EB=A9=94?= =?UTF-8?q?=EB=9D=BC=20=ED=99=98=EA=B2=BD=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj | 2 ++ iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj index d7a2250..002a0cd 100644 --- a/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj +++ b/iOS/Features/Spot/SpotDemo/SpotDemo.xcodeproj/project.pbxproj @@ -300,6 +300,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = B3PWYBKFUK; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SpotDemo/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -331,6 +332,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = B3PWYBKFUK; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SpotDemo/Info.plist; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; diff --git a/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist b/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist index dd3c9af..c52b344 100644 --- a/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist +++ b/iOS/Features/Spot/SpotDemo/SpotDemo/Info.plist @@ -2,6 +2,10 @@ + NSAppleMusicUsageDescription + using photos in album + NSCameraUsageDescription + take photo UIApplicationSceneManifest UIApplicationSupportsMultipleScenes From 50096b91f8f1fa62b645cfd9e0d1af10aac20530 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 15:05:06 +0900 Subject: [PATCH 27/40] =?UTF-8?q?:bug:=20=EC=A0=84=EC=97=90=20=EB=9D=84?= =?UTF-8?q?=EC=9B=A0=EB=8D=98=20=ED=99=94=EB=A9=B4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=B2=97=EC=96=B4=EB=82=98=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=ED=98=84=EC=83=81=20=EB=B2=84=EA=B7=B8=20=ED=94=BD?= =?UTF-8?q?=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/Spot/Sources/Spot/SpotViewController.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift index e201900..a37baf9 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift @@ -297,7 +297,8 @@ private extension SpotViewController { func presentSpotSaveViewController(with image: UIImage) { self.spotViewModel.stopCamera() self.spotSaveViewController.image = image - self.presentingViewController?.dismiss(animated: true) + self.presentedViewController?.dismiss(animated: false) + self.presentingViewController?.dismiss(animated: false) self.present(self.spotSaveViewController, animated: true) } From e6ababa97a70f10ad0695304e529249cccf70c21 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 15:47:42 +0900 Subject: [PATCH 28/40] =?UTF-8?q?:memo:=20Package=20MSNetworking,=20MSData?= =?UTF-8?q?=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EA=B4=80=EB=A6=AC=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=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 --- iOS/Features/Spot/Package.swift | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift index 0bc07b7..3fcbb9c 100644 --- a/iOS/Features/Spot/Package.swift +++ b/iOS/Features/Spot/Package.swift @@ -27,10 +27,18 @@ private enum Target { private enum Dependency { + // package static let msUIKit = "MSUIKit" static let msFoundation = "MSFoundation" + static let msCoreKit = "MSCoreKit" + + // library static let msDesignsystem = "MSDesignSystem" static let msLogger = "MSLogger" + static let msNetworking = "MSNetworking" + + // package = library + static let msData = "MSData" } @@ -49,7 +57,9 @@ let package = Package( .package(name: Dependency.msUIKit, path: Dependency.msUIKit.fromRootPath), .package(name: Dependency.msFoundation, - path: Dependency.msFoundation.fromRootPath) + path: Dependency.msFoundation.fromRootPath), + .package(name: Dependency.msCoreKit, + path: Dependency.msCoreKit.fromRootPath) ], targets: [ .target(name: Target.spot, @@ -59,7 +69,11 @@ let package = Package( .product(name: Dependency.msDesignsystem, package: Dependency.msUIKit), .product(name: Dependency.msLogger, - package: Dependency.msFoundation) + package: Dependency.msFoundation), + .product(name: Dependency.msNetworking, + package: Dependency.msCoreKit), + .product(name: Dependency.msData, + package: Dependency.msData) ]) ] ) From 62dcb4471f6f7839dbcc8ffe831bc6066f4b3bb3 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 17:19:11 +0900 Subject: [PATCH 29/40] =?UTF-8?q?:memo:=20MSNetworking=20=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=EC=9D=98=EC=A1=B4=EC=84=B1=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 --- iOS/Features/Spot/Package.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iOS/Features/Spot/Package.swift b/iOS/Features/Spot/Package.swift index 3fcbb9c..616cce9 100644 --- a/iOS/Features/Spot/Package.swift +++ b/iOS/Features/Spot/Package.swift @@ -59,7 +59,9 @@ let package = Package( .package(name: Dependency.msFoundation, path: Dependency.msFoundation.fromRootPath), .package(name: Dependency.msCoreKit, - path: Dependency.msCoreKit.fromRootPath) + path: Dependency.msCoreKit.fromRootPath), + .package(name: Dependency.msData, + path: Dependency.msData.fromRootPath) ], targets: [ .target(name: Target.spot, From 4b841ce9d45c3aa6f5489a65c3797b9f3bc3b2f4 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 17:19:55 +0900 Subject: [PATCH 30/40] =?UTF-8?q?:art:=20SpotDTO,=20=EB=B3=B4=EB=82=B4?= =?UTF-8?q?=EB=8A=94=20=EC=9A=A9=EA=B3=BC=20=EB=B0=9B=EB=8A=94=20=EC=9A=A9?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=ED=83=80=EC=9E=85=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift index 3e00aa6..b8177d4 100644 --- a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift +++ b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift @@ -7,7 +7,15 @@ import Foundation -public struct SpotDTO: Codable, Identifiable { +public struct RequestableSpotDTO: Encodable, Identifiable { + + public let id: UUID + public let coordinate: [Double] + public let photoData: Data + +} + +public struct ResponsibleSpotDTO: Decodable, Identifiable { public let id: UUID public let coordinate: [Double] From 189a3b08ee862d39178c59064bc1942411b07e14 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 17:20:34 +0900 Subject: [PATCH 31/40] =?UTF-8?q?:art:=20Spot=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20router=20case=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/MSData/Router/Journey/JourneyRouter+Body.swift | 5 ++++- .../Sources/MSData/Router/Journey/JourneyRouter+Header.swift | 1 + .../Sources/MSData/Router/Journey/JourneyRouter+Method.swift | 1 + .../Sources/MSData/Router/Journey/JourneyRouter+URL.swift | 1 + iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter.swift | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Body.swift b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Body.swift index e855e5e..c0e3bae 100644 --- a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Body.swift +++ b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Body.swift @@ -11,7 +11,10 @@ extension JourneyRouter { public var body: HTTPBody? { switch self { - case .journeyList: return nil + case .journeyList: + return nil + case .spot: + return nil } } diff --git a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Header.swift b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Header.swift index 99da37c..9324d47 100644 --- a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Header.swift +++ b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Header.swift @@ -12,6 +12,7 @@ extension JourneyRouter { public var headers: HTTPHeaders? { switch self { case .journeyList: return nil + case .spot: return nil } } diff --git a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Method.swift b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Method.swift index 5a3f632..c810438 100644 --- a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Method.swift +++ b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+Method.swift @@ -12,6 +12,7 @@ extension JourneyRouter { public var method: HTTPMethod { switch self { case .journeyList: return .get + case .spot: return .post } } diff --git a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+URL.swift b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+URL.swift index 01fc237..9a76056 100644 --- a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+URL.swift +++ b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter+URL.swift @@ -25,6 +25,7 @@ extension JourneyRouter { public var pathURL: String { switch self { case .journeyList: return "" + case .spot: return "/spot" } } diff --git a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter.swift b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter.swift index 51f6462..bd2f441 100644 --- a/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter.swift +++ b/iOS/MSData/Sources/MSData/Router/Journey/JourneyRouter.swift @@ -10,5 +10,6 @@ import MSNetworking public enum JourneyRouter: Router { case journeyList + case spot } From 3e43c97d5d2cbbf463f731376daf808a992ed6b7 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 17:26:08 +0900 Subject: [PATCH 32/40] =?UTF-8?q?:art:=20SpotDTO=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9E=90=20=EC=A0=91=EA=B7=BC=20=EC=A0=9C=ED=95=9C=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 --- iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift index b8177d4..e3eba17 100644 --- a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift +++ b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift @@ -13,6 +13,12 @@ public struct RequestableSpotDTO: Encodable, Identifiable { public let coordinate: [Double] public let photoData: Data + public init(id: UUID, coordinate: [Double], photoData: Data) { + self.id = id + self.coordinate = coordinate + self.photoData = photoData + } + } public struct ResponsibleSpotDTO: Decodable, Identifiable { @@ -21,4 +27,10 @@ public struct ResponsibleSpotDTO: Decodable, Identifiable { public let coordinate: [Double] public let photoURLs: [String] + public init(id: UUID, coordinate: [Double], photoURLs: [String]) { + self.id = id + self.coordinate = coordinate + self.photoURLs = photoURLs + } + } From 5186f9ac787e1c971c7f2d67b004066d03ac62b1 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 18:02:07 +0900 Subject: [PATCH 33/40] =?UTF-8?q?:art:=20SpotDTO=EC=97=90=20=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift index e3eba17..f7a6382 100644 --- a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift +++ b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift @@ -11,10 +11,12 @@ public struct RequestableSpotDTO: Encodable, Identifiable { public let id: UUID public let coordinate: [Double] + public let timestamp: String public let photoData: Data - public init(id: UUID, coordinate: [Double], photoData: Data) { + public init(id: UUID, timestamp: String, coordinate: [Double], photoData: Data) { self.id = id + self.timestamp = timestamp self.coordinate = coordinate self.photoData = photoData } @@ -26,11 +28,6 @@ public struct ResponsibleSpotDTO: Decodable, Identifiable { public let id: UUID public let coordinate: [Double] public let photoURLs: [String] - - public init(id: UUID, coordinate: [Double], photoURLs: [String]) { - self.id = id - self.coordinate = coordinate - self.photoURLs = photoURLs - } + public let w3w: String } From 1300cbab66f7c27c83d4d7fa9bc4bed78e3110ce Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 18:38:56 +0900 Subject: [PATCH 34/40] =?UTF-8?q?:art:=20ResponsibleDTO=20=EC=9E=84?= =?UTF-8?q?=EC=8B=9C=EB=A1=9C=20Codable=20=EC=B2=98=EB=A6=AC(=ED=9A=8C?= =?UTF-8?q?=EC=9D=98=20=ED=95=84=EC=9A=94)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE.md | 10 -- ...0-\355\205\234\355\224\214\353\246\277.md" | 18 --- .github/PULL_REQUEST_TEMPLATE.md | 18 --- .github/workflows/Xcode_build_test.yml | 124 ------------------ .gitignore | 37 ------ .gitmojirc.json | 8 -- BE/.githooks/pre-commit | 3 - BE/README.md | 6 - README.md | 42 ------ .../contents.xcworkspacedata | 7 - .../Sources/Spot/SpotSaveViewController.swift | 18 ++- .../Spot/Sources/Spot/SpotSaveViewModel.swift | 34 ++++- .../Sources/Spot/SpotViewController.swift | 20 +++ .../Spot/Sources/Spot/SpotViewModel.swift | 1 + iOS/MSData/Package.swift | 4 - .../Sources/MSData/DTO/Fragment/SpotDTO.swift | 3 +- .../Sources/MSData/DTO/JourneyDTO.swift | 2 +- .../Sources/MSLogger/MSLogCategory.swift | 1 + setup | 22 ---- 19 files changed, 73 insertions(+), 305 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md delete mode 100644 ".github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/Xcode_build_test.yml delete mode 100644 .gitignore delete mode 100644 .gitmojirc.json delete mode 100644 BE/.githooks/pre-commit delete mode 100644 BE/README.md delete mode 100644 README.md delete mode 100644 iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata delete mode 100755 setup diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index e226a1e..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,10 +0,0 @@ - -## πŸ“‹ μ„€λͺ… - -- μ΄μŠˆμ—μ„œ κ΅¬ν˜„ν•  λ‚΄μš© μž‘μ„± - -## βœ… 체크리슀트 - -> κ΅¬ν˜„ν•΄μ•Όν•˜λŠ” 이슈 체크리슀트 -- [ ] κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λ‚΄μš© -- [x] κ΅¬ν˜„ μ™„λ£Œλœ λ‚΄μš© diff --git "a/.github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" "b/.github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" deleted file mode 100644 index 9ee2ecf..0000000 --- "a/.github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: 이슈 ν…œν”Œλ¦Ώ -about: κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 이슈 ν…œν”Œλ¦Ώ -title: '' -labels: '' -assignees: '' - ---- - -## πŸ“‹ μ„€λͺ… - -- μ΄μŠˆμ—μ„œ κ΅¬ν˜„ν•  λ‚΄μš© μž‘μ„± - -## βœ… 체크리슀트 - -> κ΅¬ν˜„ν•΄μ•Όν•˜λŠ” 이슈 체크리슀트 -- [ ] κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λ‚΄μš© -- [x] κ΅¬ν˜„ μ™„λ£Œλœ λ‚΄μš© diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 3616c6d..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,18 +0,0 @@ - -## ❗ λ°°κ²½ -> μž‘μ—… 배경에 λŒ€ν•œ μ„€λͺ…을 μž‘μ„±ν•©λ‹ˆλ‹€. -> Issue에 λŒ€ν•œ 링크λ₯Ό μ²¨λΆ€ν•©λ‹ˆλ‹€. - -## πŸ”§ μž‘μ—… λ‚΄μ—­ -> μž‘μ—…ν•œ λ‚΄μš©λ“€μ„ λ‚˜μ—΄ν•©λ‹ˆλ‹€. -> κ°„κ²°ν•˜κ²Œ 리슀트 μ—…ν•˜κ³ , μžμ„Έν•œ μ„€λͺ…은 μ•„λž˜ 리뷰 λ…ΈνŠΈμ—μ„œ ν•©λ‹ˆλ‹€. - -## πŸ§ͺ ν…ŒμŠ€νŠΈ 방법 -> λ™μž‘μ„ ν…ŒμŠ€νŠΈν•  수 μžˆλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. -> μ•± μ‹€ν–‰ 방법일 수 있고, μœ λ‹› ν…ŒμŠ€νŠΈ μ‹€ν–‰ 방법일 수 μžˆμŠ΅λ‹ˆλ‹€. - -## πŸ“ 리뷰 λ…ΈνŠΈ -> μž‘μ—… 내역에 λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…을 μž‘μ„±ν•©λ‹ˆλ‹€. - -## πŸ“Έ μŠ€ν¬λ¦°μƒ· -> μž‘μ—…ν•œ λ‚΄μš©μ— λŒ€ν•œ μŠ€ν¬λ¦°μƒ·, μ˜μƒ 등을 μ²¨λΆ€ν•©λ‹ˆλ‹€. diff --git a/.github/workflows/Xcode_build_test.yml b/.github/workflows/Xcode_build_test.yml deleted file mode 100644 index 116eb3d..0000000 --- a/.github/workflows/Xcode_build_test.yml +++ /dev/null @@ -1,124 +0,0 @@ -name: Xcode_build_test - -env: - WORKSPACE: iOS/MusicSpot.xcworkspace - -on: - pull_request: - branches: - - 'iOS/release' - - 'iOS/epic/**' - types: [assigned, labeled, opened, synchronize, reopened] - -jobs: - prepare-matrix: - runs-on: macos-13 - outputs: - matrix: ${{ steps.generate-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@v4 - - - name: Setup Xcode - if: ${{ !env.ACT }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '15.0.1' - - - name: Generate matrix - id: generate-matrix - run: | - matrix="{\"include\":[" - first_entry=true - for scheme in $(xcodebuild -workspace ${{ env.WORKSPACE }} -list | grep -A 100 "Schemes:" | grep -v "Schemes:" | sed '/^$/d' | sed 's/^[ \t]*//'); do - if [[ $scheme != *"-Package" ]] && [[ $scheme != *"Tests" ]]; then - if [ "$first_entry" = true ]; then - first_entry=false - else - matrix+="," - fi - matrix+="{\"scheme\":\"$scheme\"}" - fi - done - matrix+="]}" - echo "matrix=$matrix" >> $GITHUB_OUTPUT - - xcode-build: - needs: prepare-matrix - runs-on: macos-13 - strategy: - fail-fast: false - matrix: ${{fromJson(needs.prepare-matrix.outputs.matrix)}} - steps: - - uses: actions/checkout@v4 - - - name: Setup Xcode - if: ${{ !env.ACT }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '15.0.1' - - - name: πŸ› οΈ Build ${{ matrix.scheme }} - run: | - echo "πŸ› οΈ Building ${{ matrix.scheme }}" - xcodebuild \ - -workspace ${{ env.WORKSPACE }} \ - -scheme ${{ matrix.scheme }} \ - -sdk 'iphonesimulator' \ - -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ - clean build - - prepare-test-matrix: - runs-on: macos-13 - outputs: - matrix: ${{ steps.generate-test-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@v4 - - - name: Setup Xcode - if: ${{ !env.ACT }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '15.0.1' - - - name: Generate test matrix - id: generate-test-matrix - run: | - matrix="{\"include\":[" - first_entry=true - for scheme in $(xcodebuild -workspace ${{ env.WORKSPACE }} -list | grep -A 100 "Schemes:" | grep -v "Schemes:" | sed '/^$/d' | sed 's/^[ \t]*//'); do - if [[ $scheme == *"Tests" ]]; then - if [ "$first_entry" = true ]; then - first_entry=false - else - matrix+="," - fi - matrix+="{\"scheme\":\"$scheme\"}" - fi - done - matrix+="]}" - echo "matrix=$matrix" >> $GITHUB_OUTPUT - - xcode-test: - needs: prepare-test-matrix - runs-on: macos-13 - strategy: - fail-fast: false - matrix: ${{fromJson(needs.prepare-test-matrix.outputs.matrix)}} - steps: - - uses: actions/checkout@v4 - - - name: Setup Xcode - if: ${{ !env.ACT }} - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '15.0.1' - - - name: πŸ§ͺ Test ${{ matrix.scheme }} - run: | - echo "πŸ§ͺ Testing ${{ matrix.scheme }}" - xcodebuild \ - -workspace ${{ env.WORKSPACE }} \ - -scheme ${{ matrix.scheme }} \ - -sdk 'iphonesimulator' \ - -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ - test diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 314044f..0000000 --- a/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -# Created by https://www.toptal.com/developers/gitignore/api/macos -# Edit at https://www.toptal.com/developers/gitignore?templates=macos - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### macOS Patch ### -# iCloud generated files -*.icloud - -# End of https://www.toptal.com/developers/gitignore/api/macos \ No newline at end of file diff --git a/.gitmojirc.json b/.gitmojirc.json deleted file mode 100644 index bba7d02..0000000 --- a/.gitmojirc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "autoAdd": false, - "emojiFormat": "code" , - "scopePrompt": false, - "messagePrompt": false, - "capitalizeTitle": false, - "gitmojisUrl": "https://gist.github.com/SwiftyJunnos/7a0b1b143e5bf30ef6307b5353c8a2f3/raw/gitmoji.json" -} \ No newline at end of file diff --git a/BE/.githooks/pre-commit b/BE/.githooks/pre-commit deleted file mode 100644 index c640339..0000000 --- a/BE/.githooks/pre-commit +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -echo "Backend" \ No newline at end of file diff --git a/BE/README.md b/BE/README.md deleted file mode 100644 index 183e91a..0000000 --- a/BE/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# πŸ’Ύ 감성일지도 BE - -|J037 κΉ€νƒœμš°|J131 μž„μ •ν›ˆ| -|:-:|:-:| -||| -[@twoo1999](https://github.com/twoo1999)|[@vvans](https://github.com/vvans)| diff --git a/README.md b/README.md deleted file mode 100644 index 15c61b5..0000000 --- a/README.md +++ /dev/null @@ -1,42 +0,0 @@ -

-
-
- 🎢 MusicSpot -
-

- -
- λ‹Ήμ‹ μ˜ 여정을 μŒμ•…κ³Ό ν•¨κ»˜ κΈ°μ–΅ν•˜λ‹€.
- 넀이버 λΆ€μŠ€νŠΈμΊ ν”„ 웹・λͺ¨λ°”일 8κΈ° κ·Έλ£Ή ν”„λ‘œμ νŠΈ
- 2023.11.06 ~ 2023.12.15
-
- -
- -

-
- ⭐️ ν”„λ‘œμ νŠΈ μ†Œκ°œ -
-

- -
- Team.과열은 지도에 관심을 κ°–κ³ μžˆλŠ” μ‚¬λžŒλ“€λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
- 지도λ₯Ό ν™œμš©ν•΄μ„œ μŒμ•…κ³Ό ν•¨κ»˜ 여정을 κΈ°λ‘ν•˜λŠ” μ•±, MusicSpotλ₯Ό μ†Œκ°œν•©λ‹ˆλ‹€. -
- -
- -## πŸ”₯ Team. κ³Όμ—΄ πŸ”₯ - -|S023 μœ€λ™μ£Ό|S034 전민건|S045 이창쀀|J037 κΉ€νƒœμš°|J131 μž„μ •ν›ˆ| -|:-:|:-:|:-:|:-:|:-:| -|||||| -|[@yoondj98](https://github.com/yoondj98)|[@PushedGun](https://github.com/PushedGun)|[@SwiftyJunnos](https://github.com/SwiftyJunnos)|[@twoo1999](https://github.com/twoo1999)|[@vvans](https://github.com/vvans)| - -
- -## πŸ“” λ¬Έμ„œ - -| κ·ΈλΌμš΄λ“œ λ£° | 기획/λ””μžμΈ | ν…œν”Œλ¦Ώ | 회의둝 | -| :-: | :-: | :-: | :-: | -| πŸ“š [κ·ΈλΌμš΄λ“œ λ£°](https://github.com/boostcampwm2023/iOS01-Maybe-Gamsung/wiki/%F0%9F%93%9A-%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%EB%A3%B0) | 🎨 [기획/λ””μžμΈ](https://www.figma.com/file/m3iCljtg84XAmVyy2RNdDj/UI-%EB%94%94%EC%9E%90%EC%9D%B8?type=design&node-id=789%3A1274&mode=design&t=5DxLFumMFIkZllqT-1)| πŸ“ƒ [ν…œν”Œλ¦Ώ](https://github.com/boostcampwm2023/iOS01-Maybe-Gamsung/wiki/%F0%9F%93%83-%ED%83%AC%ED%94%8C%EB%A6%BF)| πŸ“ [회의둝](https://musicspot.notion.site/0618a86927b342c0927d57826c4d685e?v=e0e955f12f0b41cab1c709ff6db06293&pvs=4) | diff --git a/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/iOS/Features/RewindJourney/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift index 07447c2..fee0088 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotSaveViewController.swift @@ -9,7 +9,9 @@ import UIKit import MSDesignSystem import MSLogger +import MSNetworking import MSUIKit +import MSData public final class SpotSaveViewController: UIViewController { @@ -60,6 +62,20 @@ public final class SpotSaveViewController: UIViewController { } private let spotSaveViewModel = SpotSaveViewModel() + // MARK: - Properties: Networking + + internal var spotRouter: Router? + internal var journeyID: UUID? { + didSet { + self.spotSaveViewModel.journeyID = self.journeyID + } + } + internal var coordinate: [Double]? { + didSet { + self.spotSaveViewModel.coordinate = self.coordinate + } + } + // MARK: - UI Components private let imageView = UIImageView() @@ -235,7 +251,7 @@ public final class SpotSaveViewController: UIViewController { MSLogger.make(category: .recordingJourney).debug("ν˜„μž¬ 이미지λ₯Ό Data둜 λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.") return } - self.spotSaveViewModel.upload(data: data) + self.spotSaveViewModel.upload(data: data, using: self.spotRouter) } } diff --git a/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift b/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift index b3bdc44..55585bf 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotSaveViewModel.swift @@ -6,10 +6,19 @@ // import Foundation +import Combine + +import MSData +import MSNetworking +import MSLogger final class SpotSaveViewModel { // MARK: - Properties + private let msNetworking = MSNetworking(session: URLSession.shared) + private var subscriber: Set = [] + internal var journeyID: UUID? + internal var coordinate: [Double]? } @@ -17,8 +26,29 @@ final class SpotSaveViewModel { internal extension SpotSaveViewModel { - func upload(data: Data) { - // Networking.. + func upload(data: Data, using router: Router?) { + guard let router, let journeyID, let coordinate else { + MSLogger.make(category: .spot).debug("journeyID와 coordinate IDκ°€ view model에 μ „λ‹¬λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.") + return + } + let timestamp = Data().base64EncodedString() + print(timestamp) + let spotDTO = RequestableSpotDTO(id: journeyID, + timestamp: timestamp, + coordinate: coordinate, + photoData: data) + self.msNetworking.request(ResponsibleSpotDTO.self, router: router) + .sink { response in + switch response { + case .failure(let error): + MSLogger.make(category: .network).debug("\(error): μ •μƒμ μœΌλ‘œ Spot을 μ„œλ²„μ— 보내지 λͺ»ν•˜μ˜€μŠ΅λ‹ˆλ‹€.") + default: + return + } + } receiveValue: { spot in + // 받은 데이터 처리 + } + .store(in: &subscriber) } } diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift index a37baf9..70c3d2f 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewController.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewController.swift @@ -7,8 +7,10 @@ import UIKit +import MSData import MSDesignSystem import MSLogger +import MSNetworking import MSUIKit public final class SpotViewController: UIViewController, UINavigationControllerDelegate { @@ -56,6 +58,24 @@ public final class SpotViewController: UIViewController, UINavigationControllerD private let spotSaveViewController = SpotSaveViewController() private let picker = UIImagePickerController() + // MARK: - Properties: Networking + + internal var spotRouter: Router? { + didSet { + self.spotSaveViewController.spotRouter = self.spotRouter + } + } + private var journeyID: UUID? { + didSet { + self.spotSaveViewController.journeyID = self.journeyID + } + } + private var coordinate: [Double]? { + didSet { + self.spotSaveViewController.coordinate = self.coordinate + } + } + // MARK: - UI Components private let cameraView = CameraView() diff --git a/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift index 89b3258..11c65bf 100644 --- a/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift +++ b/iOS/Features/Spot/Sources/Spot/SpotViewModel.swift @@ -20,6 +20,7 @@ final class SpotViewModel: NSObject { // MARK: - Type: SwapMode enum SwapMode { + case front case back diff --git a/iOS/MSData/Package.swift b/iOS/MSData/Package.swift index e9294c5..bffa772 100644 --- a/iOS/MSData/Package.swift +++ b/iOS/MSData/Package.swift @@ -1,9 +1,5 @@ // swift-tools-version: 5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. -<<<<<<< HEAD - -======= ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b import PackageDescription let package = Package( diff --git a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift index f7a6382..a630f1a 100644 --- a/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift +++ b/iOS/MSData/Sources/MSData/DTO/Fragment/SpotDTO.swift @@ -23,11 +23,10 @@ public struct RequestableSpotDTO: Encodable, Identifiable { } -public struct ResponsibleSpotDTO: Decodable, Identifiable { +public struct ResponsibleSpotDTO: Codable, Identifiable { public let id: UUID public let coordinate: [Double] public let photoURLs: [String] - public let w3w: String } diff --git a/iOS/MSData/Sources/MSData/DTO/JourneyDTO.swift b/iOS/MSData/Sources/MSData/DTO/JourneyDTO.swift index a52949a..8fc7337 100644 --- a/iOS/MSData/Sources/MSData/DTO/JourneyDTO.swift +++ b/iOS/MSData/Sources/MSData/DTO/JourneyDTO.swift @@ -12,7 +12,7 @@ public struct JourneyDTO: Codable, Identifiable { public let id: UUID public let location: String public let metaData: JourneyMetadataDTO - public let spots: [SpotDTO] + public let spots: [ResponsibleSpotDTO] public let coordinates: [CoordinateDTO] public let song: SongDTO public let lineColor: String diff --git a/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift b/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift index 17a1032..848022b 100644 --- a/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift +++ b/iOS/MSFoundation/Sources/MSLogger/MSLogCategory.swift @@ -16,4 +16,5 @@ public enum MSLogCategory: String { case login case setting case camera + case spot } diff --git a/setup b/setup deleted file mode 100755 index f3fbda1..0000000 --- a/setup +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# Define the function to set the git hooks path -set_git_hooks_path() { - git config core.hooksPath "$1" -} - -# Check the argument and call the function with the appropriate path -case "$1" in - "ios") - echo "🍎 iOS μ„ΈνŒ…μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€." - set_git_hooks_path "./iOS/.githooks/" - ;; - "be") - echo "πŸ’½ BE μ„ΈνŒ…μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€." - set_git_hooks_path "./BE/.githooks/" - ;; - *) - echo "Invalid argument. Use 'ios' for iOS setup or 'be' for Backend setup." - exit 1 - ;; -esac \ No newline at end of file From 9906fba99c0d19a91cc4aeac2da29825cb279b17 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 20:49:18 +0900 Subject: [PATCH 35/40] =?UTF-8?q?:truck:=20=EB=88=84=EB=9D=BD=EB=90=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE.md | 10 ++ ...0-\355\205\234\355\224\214\353\246\277.md" | 18 +++ .github/PULL_REQUEST_TEMPLATE.md | 18 +++ .github/workflows/Xcode_build_test.yml | 124 ++++++++++++++++++ .gitignore | 37 ++++++ .gitmojirc.json | 8 ++ BE/.githooks/pre-commit | 3 + BE/README.md | 6 + README.md | 42 ++++++ setup | 22 ++++ 10 files changed, 288 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 ".github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/Xcode_build_test.yml create mode 100644 .gitignore create mode 100644 .gitmojirc.json create mode 100644 BE/.githooks/pre-commit create mode 100644 BE/README.md create mode 100644 README.md create mode 100755 setup diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..e226a1e --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,10 @@ + +## πŸ“‹ μ„€λͺ… + +- μ΄μŠˆμ—μ„œ κ΅¬ν˜„ν•  λ‚΄μš© μž‘μ„± + +## βœ… 체크리슀트 + +> κ΅¬ν˜„ν•΄μ•Όν•˜λŠ” 이슈 체크리슀트 +- [ ] κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λ‚΄μš© +- [x] κ΅¬ν˜„ μ™„λ£Œλœ λ‚΄μš© diff --git "a/.github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" "b/.github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" new file mode 100644 index 0000000..9ee2ecf --- /dev/null +++ "b/.github/ISSUE_TEMPLATE/\354\235\264\354\212\210-\355\205\234\355\224\214\353\246\277.md" @@ -0,0 +1,18 @@ +--- +name: 이슈 ν…œν”Œλ¦Ώ +about: κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 이슈 ν…œν”Œλ¦Ώ +title: '' +labels: '' +assignees: '' + +--- + +## πŸ“‹ μ„€λͺ… + +- μ΄μŠˆμ—μ„œ κ΅¬ν˜„ν•  λ‚΄μš© μž‘μ„± + +## βœ… 체크리슀트 + +> κ΅¬ν˜„ν•΄μ•Όν•˜λŠ” 이슈 체크리슀트 +- [ ] κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λ‚΄μš© +- [x] κ΅¬ν˜„ μ™„λ£Œλœ λ‚΄μš© diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..3616c6d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ + +## ❗ λ°°κ²½ +> μž‘μ—… 배경에 λŒ€ν•œ μ„€λͺ…을 μž‘μ„±ν•©λ‹ˆλ‹€. +> Issue에 λŒ€ν•œ 링크λ₯Ό μ²¨λΆ€ν•©λ‹ˆλ‹€. + +## πŸ”§ μž‘μ—… λ‚΄μ—­ +> μž‘μ—…ν•œ λ‚΄μš©λ“€μ„ λ‚˜μ—΄ν•©λ‹ˆλ‹€. +> κ°„κ²°ν•˜κ²Œ 리슀트 μ—…ν•˜κ³ , μžμ„Έν•œ μ„€λͺ…은 μ•„λž˜ 리뷰 λ…ΈνŠΈμ—μ„œ ν•©λ‹ˆλ‹€. + +## πŸ§ͺ ν…ŒμŠ€νŠΈ 방법 +> λ™μž‘μ„ ν…ŒμŠ€νŠΈν•  수 μžˆλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. +> μ•± μ‹€ν–‰ 방법일 수 있고, μœ λ‹› ν…ŒμŠ€νŠΈ μ‹€ν–‰ 방법일 수 μžˆμŠ΅λ‹ˆλ‹€. + +## πŸ“ 리뷰 λ…ΈνŠΈ +> μž‘μ—… 내역에 λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…을 μž‘μ„±ν•©λ‹ˆλ‹€. + +## πŸ“Έ μŠ€ν¬λ¦°μƒ· +> μž‘μ—…ν•œ λ‚΄μš©μ— λŒ€ν•œ μŠ€ν¬λ¦°μƒ·, μ˜μƒ 등을 μ²¨λΆ€ν•©λ‹ˆλ‹€. diff --git a/.github/workflows/Xcode_build_test.yml b/.github/workflows/Xcode_build_test.yml new file mode 100644 index 0000000..116eb3d --- /dev/null +++ b/.github/workflows/Xcode_build_test.yml @@ -0,0 +1,124 @@ +name: Xcode_build_test + +env: + WORKSPACE: iOS/MusicSpot.xcworkspace + +on: + pull_request: + branches: + - 'iOS/release' + - 'iOS/epic/**' + types: [assigned, labeled, opened, synchronize, reopened] + +jobs: + prepare-matrix: + runs-on: macos-13 + outputs: + matrix: ${{ steps.generate-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v4 + + - name: Setup Xcode + if: ${{ !env.ACT }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + + - name: Generate matrix + id: generate-matrix + run: | + matrix="{\"include\":[" + first_entry=true + for scheme in $(xcodebuild -workspace ${{ env.WORKSPACE }} -list | grep -A 100 "Schemes:" | grep -v "Schemes:" | sed '/^$/d' | sed 's/^[ \t]*//'); do + if [[ $scheme != *"-Package" ]] && [[ $scheme != *"Tests" ]]; then + if [ "$first_entry" = true ]; then + first_entry=false + else + matrix+="," + fi + matrix+="{\"scheme\":\"$scheme\"}" + fi + done + matrix+="]}" + echo "matrix=$matrix" >> $GITHUB_OUTPUT + + xcode-build: + needs: prepare-matrix + runs-on: macos-13 + strategy: + fail-fast: false + matrix: ${{fromJson(needs.prepare-matrix.outputs.matrix)}} + steps: + - uses: actions/checkout@v4 + + - name: Setup Xcode + if: ${{ !env.ACT }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + + - name: πŸ› οΈ Build ${{ matrix.scheme }} + run: | + echo "πŸ› οΈ Building ${{ matrix.scheme }}" + xcodebuild \ + -workspace ${{ env.WORKSPACE }} \ + -scheme ${{ matrix.scheme }} \ + -sdk 'iphonesimulator' \ + -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ + clean build + + prepare-test-matrix: + runs-on: macos-13 + outputs: + matrix: ${{ steps.generate-test-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v4 + + - name: Setup Xcode + if: ${{ !env.ACT }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + + - name: Generate test matrix + id: generate-test-matrix + run: | + matrix="{\"include\":[" + first_entry=true + for scheme in $(xcodebuild -workspace ${{ env.WORKSPACE }} -list | grep -A 100 "Schemes:" | grep -v "Schemes:" | sed '/^$/d' | sed 's/^[ \t]*//'); do + if [[ $scheme == *"Tests" ]]; then + if [ "$first_entry" = true ]; then + first_entry=false + else + matrix+="," + fi + matrix+="{\"scheme\":\"$scheme\"}" + fi + done + matrix+="]}" + echo "matrix=$matrix" >> $GITHUB_OUTPUT + + xcode-test: + needs: prepare-test-matrix + runs-on: macos-13 + strategy: + fail-fast: false + matrix: ${{fromJson(needs.prepare-test-matrix.outputs.matrix)}} + steps: + - uses: actions/checkout@v4 + + - name: Setup Xcode + if: ${{ !env.ACT }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.0.1' + + - name: πŸ§ͺ Test ${{ matrix.scheme }} + run: | + echo "πŸ§ͺ Testing ${{ matrix.scheme }}" + xcodebuild \ + -workspace ${{ env.WORKSPACE }} \ + -scheme ${{ matrix.scheme }} \ + -sdk 'iphonesimulator' \ + -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 15 Pro' \ + test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..314044f --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# Created by https://www.toptal.com/developers/gitignore/api/macos +# Edit at https://www.toptal.com/developers/gitignore?templates=macos + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +# End of https://www.toptal.com/developers/gitignore/api/macos \ No newline at end of file diff --git a/.gitmojirc.json b/.gitmojirc.json new file mode 100644 index 0000000..bba7d02 --- /dev/null +++ b/.gitmojirc.json @@ -0,0 +1,8 @@ +{ + "autoAdd": false, + "emojiFormat": "code" , + "scopePrompt": false, + "messagePrompt": false, + "capitalizeTitle": false, + "gitmojisUrl": "https://gist.github.com/SwiftyJunnos/7a0b1b143e5bf30ef6307b5353c8a2f3/raw/gitmoji.json" +} \ No newline at end of file diff --git a/BE/.githooks/pre-commit b/BE/.githooks/pre-commit new file mode 100644 index 0000000..c640339 --- /dev/null +++ b/BE/.githooks/pre-commit @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Backend" \ No newline at end of file diff --git a/BE/README.md b/BE/README.md new file mode 100644 index 0000000..183e91a --- /dev/null +++ b/BE/README.md @@ -0,0 +1,6 @@ +# πŸ’Ύ 감성일지도 BE + +|J037 κΉ€νƒœμš°|J131 μž„μ •ν›ˆ| +|:-:|:-:| +||| +[@twoo1999](https://github.com/twoo1999)|[@vvans](https://github.com/vvans)| diff --git a/README.md b/README.md new file mode 100644 index 0000000..15c61b5 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +

+
+
+ 🎢 MusicSpot +
+

+ +
+ λ‹Ήμ‹ μ˜ 여정을 μŒμ•…κ³Ό ν•¨κ»˜ κΈ°μ–΅ν•˜λ‹€.
+ 넀이버 λΆ€μŠ€νŠΈμΊ ν”„ 웹・λͺ¨λ°”일 8κΈ° κ·Έλ£Ή ν”„λ‘œμ νŠΈ
+ 2023.11.06 ~ 2023.12.15
+
+ +
+ +

+
+ ⭐️ ν”„λ‘œμ νŠΈ μ†Œκ°œ +
+

+ +
+ Team.과열은 지도에 관심을 κ°–κ³ μžˆλŠ” μ‚¬λžŒλ“€λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
+ 지도λ₯Ό ν™œμš©ν•΄μ„œ μŒμ•…κ³Ό ν•¨κ»˜ 여정을 κΈ°λ‘ν•˜λŠ” μ•±, MusicSpotλ₯Ό μ†Œκ°œν•©λ‹ˆλ‹€. +
+ +
+ +## πŸ”₯ Team. κ³Όμ—΄ πŸ”₯ + +|S023 μœ€λ™μ£Ό|S034 전민건|S045 이창쀀|J037 κΉ€νƒœμš°|J131 μž„μ •ν›ˆ| +|:-:|:-:|:-:|:-:|:-:| +|||||| +|[@yoondj98](https://github.com/yoondj98)|[@PushedGun](https://github.com/PushedGun)|[@SwiftyJunnos](https://github.com/SwiftyJunnos)|[@twoo1999](https://github.com/twoo1999)|[@vvans](https://github.com/vvans)| + +
+ +## πŸ“” λ¬Έμ„œ + +| κ·ΈλΌμš΄λ“œ λ£° | 기획/λ””μžμΈ | ν…œν”Œλ¦Ώ | 회의둝 | +| :-: | :-: | :-: | :-: | +| πŸ“š [κ·ΈλΌμš΄λ“œ λ£°](https://github.com/boostcampwm2023/iOS01-Maybe-Gamsung/wiki/%F0%9F%93%9A-%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%EB%A3%B0) | 🎨 [기획/λ””μžμΈ](https://www.figma.com/file/m3iCljtg84XAmVyy2RNdDj/UI-%EB%94%94%EC%9E%90%EC%9D%B8?type=design&node-id=789%3A1274&mode=design&t=5DxLFumMFIkZllqT-1)| πŸ“ƒ [ν…œν”Œλ¦Ώ](https://github.com/boostcampwm2023/iOS01-Maybe-Gamsung/wiki/%F0%9F%93%83-%ED%83%AC%ED%94%8C%EB%A6%BF)| πŸ“ [회의둝](https://musicspot.notion.site/0618a86927b342c0927d57826c4d685e?v=e0e955f12f0b41cab1c709ff6db06293&pvs=4) | diff --git a/setup b/setup new file mode 100755 index 0000000..f3fbda1 --- /dev/null +++ b/setup @@ -0,0 +1,22 @@ +#!/bin/sh + +# Define the function to set the git hooks path +set_git_hooks_path() { + git config core.hooksPath "$1" +} + +# Check the argument and call the function with the appropriate path +case "$1" in + "ios") + echo "🍎 iOS μ„ΈνŒ…μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€." + set_git_hooks_path "./iOS/.githooks/" + ;; + "be") + echo "πŸ’½ BE μ„ΈνŒ…μœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€." + set_git_hooks_path "./BE/.githooks/" + ;; + *) + echo "Invalid argument. Use 'ios' for iOS setup or 'be' for Backend setup." + exit 1 + ;; +esac \ No newline at end of file From 85fca4efb69e075c5675ba360bebeb5433d7abd9 Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 21:02:27 +0900 Subject: [PATCH 36/40] =?UTF-8?q?:memo:=20Workspace=20=EB=AC=B8=EC=84=9C?= =?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 --- .../contents.xcworkspacedata | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata index 318da93..17b1b2b 100644 --- a/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata +++ b/iOS/MusicSpot.xcworkspace/contents.xcworkspacedata @@ -2,23 +2,7 @@ - - - - - - - - -======= location = "group:MusicSpot/MusicSpot.xcodeproj"> ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b
-======= location = "group:MusicSpot/../MSFoundation"> ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b
From bff86cd206b4234e4e677fc007c5124d0e4ab80f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Thu, 30 Nov 2023 21:11:32 +0900 Subject: [PATCH 37/40] =?UTF-8?q?:bug:=20JourneyList=EC=9D=98=20DTO=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Features/JourneyList/Package.swift | 31 ++++++++++++++++++- .../JourneyList/Model/DTOConvertor.swift | 2 +- iOS/Features/SaveJourney/Package.swift | 13 -------- iOS/MusicSpot/MusicSpot/SceneDelegate.swift | 6 +--- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/iOS/Features/JourneyList/Package.swift b/iOS/Features/JourneyList/Package.swift index 0b44822..3b4aba7 100644 --- a/iOS/Features/JourneyList/Package.swift +++ b/iOS/Features/JourneyList/Package.swift @@ -9,6 +9,10 @@ private extension String { static let package = "FeatureJourneyList" + var fromRootPath: String { + return "../../" + self + } + } private enum Target { @@ -17,6 +21,15 @@ private enum Target { } +private enum Dependency { + + static let msUIKit = "MSUIKit" + static let msCacheStorage = "MSCacheStorage" + static let msCoreKit = "MSCoreKit" + static let msData = "MSData" + +} + // MARK: - Package let package = Package( @@ -28,7 +41,23 @@ let package = Package( .library(name: Target.journeyList, targets: [Target.journeyList]) ], + dependencies: [ + .package(name: Dependency.msUIKit, + path: Dependency.msUIKit.fromRootPath), + .package(name: Dependency.msCoreKit, + path: Dependency.msCoreKit.fromRootPath), + .package(name: Dependency.msData, + path: Dependency.msData.fromRootPath) + ], targets: [ - .target(name: Target.journeyList) + .target(name: Target.journeyList, + dependencies: [ + .product(name: Dependency.msUIKit, + package: Dependency.msUIKit), + .product(name: Dependency.msCacheStorage, + package: Dependency.msCoreKit), + .product(name: Dependency.msData, + package: Dependency.msData) + ]) ] ) diff --git a/iOS/Features/JourneyList/Sources/JourneyList/Model/DTOConvertor.swift b/iOS/Features/JourneyList/Sources/JourneyList/Model/DTOConvertor.swift index 7b411a9..e5d9304 100644 --- a/iOS/Features/JourneyList/Sources/JourneyList/Model/DTOConvertor.swift +++ b/iOS/Features/JourneyList/Sources/JourneyList/Model/DTOConvertor.swift @@ -21,7 +21,7 @@ extension Journey { extension Spot { - init(dto: SpotDTO) { + init(dto: ResponsibleSpotDTO) { self.photoURLs = dto.photoURLs } diff --git a/iOS/Features/SaveJourney/Package.swift b/iOS/Features/SaveJourney/Package.swift index ff6d0e2..f9dec09 100644 --- a/iOS/Features/SaveJourney/Package.swift +++ b/iOS/Features/SaveJourney/Package.swift @@ -42,18 +42,6 @@ let package = Package( .iOS(.v15) ], products: [ -<<<<<<< HEAD - .library(name: "SaveJourney", - targets: ["SaveJourney"]) - ], - dependencies: [ - .package(name: "MSUIKit", - path: "../../MSUIKit") - ], - targets: [ - .target(name: "SaveJourney", - dependencies: ["MSUIKit"]) -======= .library(name: Target.saveJourney, targets: [Target.saveJourney]) ], @@ -67,6 +55,5 @@ let package = Package( .product(name: Dependency.msUIKit, package: Dependency.msUIKit) ]) ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b ] ) diff --git a/iOS/MusicSpot/MusicSpot/SceneDelegate.swift b/iOS/MusicSpot/MusicSpot/SceneDelegate.swift index 2d228e1..f0ed3b8 100644 --- a/iOS/MusicSpot/MusicSpot/SceneDelegate.swift +++ b/iOS/MusicSpot/MusicSpot/SceneDelegate.swift @@ -7,8 +7,6 @@ import UIKit -import JourneyList -import MSData import MSDesignSystem class SceneDelegate: UIResponder, UIWindowSceneDelegate { @@ -28,9 +26,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { MSFont.registerFonts() - let journeyRepository = JourneyRepositoryImplementation() - let testViewModel = JourneyListViewModel(repository: journeyRepository) - let testViewController = JourneyListViewController(viewModel: testViewModel) + let testViewController = UIViewController() window.rootViewController = testViewController window.makeKeyAndVisible() } From 5ce8bc48eb80d5c47101c96842cb6c8a5cdfc5ce Mon Sep 17 00:00:00 2001 From: mingun Date: Thu, 30 Nov 2023 21:17:01 +0900 Subject: [PATCH 38/40] :art: Resolve conflict --- .../xcschemes/JourneyList.xcscheme | 66 ------------------- iOS/Features/SaveJourney/Package.swift | 13 ---- 2 files changed, 79 deletions(-) delete mode 100644 iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme diff --git a/iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme b/iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme deleted file mode 100644 index e56683b..0000000 --- a/iOS/Features/JourneyList/.swiftpm/xcode/xcshareddata/xcschemes/JourneyList.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Features/SaveJourney/Package.swift b/iOS/Features/SaveJourney/Package.swift index ff6d0e2..f9dec09 100644 --- a/iOS/Features/SaveJourney/Package.swift +++ b/iOS/Features/SaveJourney/Package.swift @@ -42,18 +42,6 @@ let package = Package( .iOS(.v15) ], products: [ -<<<<<<< HEAD - .library(name: "SaveJourney", - targets: ["SaveJourney"]) - ], - dependencies: [ - .package(name: "MSUIKit", - path: "../../MSUIKit") - ], - targets: [ - .target(name: "SaveJourney", - dependencies: ["MSUIKit"]) -======= .library(name: Target.saveJourney, targets: [Target.saveJourney]) ], @@ -67,6 +55,5 @@ let package = Package( .product(name: Dependency.msUIKit, package: Dependency.msUIKit) ]) ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b ] ) From 16de33e44e6e4e599fba07e5cc1af9c40fff7f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Thu, 30 Nov 2023 22:02:36 +0900 Subject: [PATCH 39/40] =?UTF-8?q?:truck:=20Workspace=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcschemes/NavigateMap.xcscheme | 66 --------------- .../xcschemes/RecordJourney.xcscheme | 66 --------------- .../xcschemes/RewindJourney.xcscheme | 66 --------------- .../xcschemes/SaveJourney.xcscheme | 66 --------------- .../xcshareddata/xcschemes/Spot.xcscheme | 66 --------------- .../xcshareddata/xcschemes/MSData.xcscheme | 3 - .../xcschemes/FoundationExt.xcscheme | 66 --------------- .../xcschemes/MSUserDefaults.xcscheme | 3 - .../xcschemes/MSDesignSystem.xcscheme | 66 --------------- .../Calendar.imageset/Calender.pdf | Bin 4018 -> 0 bytes .../xcshareddata/xcschemes/MusicSpot.xcscheme | 77 ------------------ iOS/commit | 4 +- 12 files changed, 2 insertions(+), 547 deletions(-) delete mode 100644 iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme delete mode 100644 iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme delete mode 100644 iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme delete mode 100644 iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme delete mode 100644 iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme delete mode 100644 iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/FoundationExt.xcscheme delete mode 100644 iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystem.xcscheme delete mode 100644 iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Calender.pdf delete mode 100644 iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme diff --git a/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme b/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme deleted file mode 100644 index f4a8537..0000000 --- a/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/NavigateMap.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme b/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme deleted file mode 100644 index c01b3e3..0000000 --- a/iOS/Features/Home/.swiftpm/xcode/xcshareddata/xcschemes/RecordJourney.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme b/iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme deleted file mode 100644 index b502766..0000000 --- a/iOS/Features/RewindJourney/.swiftpm/xcode/xcshareddata/xcschemes/RewindJourney.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme b/iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme deleted file mode 100644 index 3b465cc..0000000 --- a/iOS/Features/SaveJourney/.swiftpm/xcode/xcshareddata/xcschemes/SaveJourney.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme b/iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme deleted file mode 100644 index bfdca86..0000000 --- a/iOS/Features/Spot/.swiftpm/xcode/xcshareddata/xcschemes/Spot.xcscheme +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme index e0ec558..fdac714 100644 --- a/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme +++ b/iOS/MSData/.swiftpm/xcode/xcshareddata/xcschemes/MSData.xcscheme @@ -28,8 +28,6 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> -<<<<<<< HEAD -======= @@ -42,7 +40,6 @@ ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaults.xcscheme b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaults.xcscheme index ae47497..043e74f 100644 --- a/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaults.xcscheme +++ b/iOS/MSFoundation/.swiftpm/xcode/xcshareddata/xcschemes/MSUserDefaults.xcscheme @@ -28,8 +28,6 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> -<<<<<<< HEAD -======= @@ -42,7 +40,6 @@ ->>>>>>> 48567b56ec07f40e5003caf774569cbdae8f356b - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Calender.pdf b/iOS/MSUIKit/Sources/MSDesignSystem/Resources/MSIcon.xcassets/Calendar.imageset/Calender.pdf deleted file mode 100644 index 88304860eadd0b5156d61d69bf15113f536951ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4018 zcmbtXTaOzx6n>vy;g?D+QXJdISE;H*w-g~jlr3)+4AH90t zj+=*J{bKy?lCr)#0?= z4^EqCP4dd>;DgCQJphZv$6^(JG{I9)q1mJ76VxQxdFic4h6O%cgXs z%r*$kb|^X!M6lP5&%#0q#n1)ReiV({0dzCReAq2O@xa=vU|0@1f8BG)b64T8G)wN% z1X={7(@Caa3R2~*w;6u4gxa9V1TqY@tOF{Pi;KNDU`j;7k#7UgQH(h$K#5NUCg=8B z(uT_^0z$#C46r60P4N^Js+TBbA_Xja;{q_N$r?(5u|hsZuU1Z{8c1*>^f3@K3%CPl zLrET#!VS^Igt$~ zQ^HkiV#x?G+()URDWx~i@7d#n;Zi6>#U&1ZLlECtS!Y~%>Q+3=Jc~25+y*vdvq;WNh6cqShXs%DM7nnT+9ndx~@}k+htUY zrv)AN6Uu~=U>I1i4o;R*v5cG-Ho2ilKNQXAMRy_kl(07;tmHVsuvSh^Sw`PCPQMyQs6i;3MWhuG_XIgxPFY9OfX(8FnEC!A~FkXQ4t;G zHY^Tvy+f_MPE|XiF7q_K#6BwF9a={wJqi?|;BI&r0&*J? zMnwl}slY*QYwRTKAgm2kPlKekmta9=VgcPOjYnHm(X|SM!19=z1PY44Vu)MsFcuKl z#ty6vAz0J2Twr3(1={RhNEDxe&AJ8Sm3IYl%-(+WW%CA`5c3lA{L}NM5Be201MUM< zJQ4%gMrR{BgpbK5v^EIPRS}z+L2p7p70-^NN*P2`A`>;nh@3@ZvD^SQ!rI_)5;~%S z&g9J1goZ&6Ii@6C42GU%0l3p(+XjZY(9s`QHxOkbtOSVN2Lmu5c`Z?}l@e7QQ>5BH z5p4>7`$W*D*%3~KW zwjKP23$h%mXD%mGH)dO+92hbd0aJ)vTepiW{Evl$0o``zCvSnUaU!Mp@PKk`7!n@Q z5?;lrH+;YRNy*C9Z`<2hFzHf}B#7u^zGg03Vlrm8#E@N{5z^kW>%;~@xRq)bFLtDO z!y~UsS|Cjy^L-qL+JRrzfS(cnxql39+RXyApUfSJ8=y9xB)Hrc_3K$d(cuEfGj(xK z=M^}GwM!F7v{u&ZJalFWUsoY<@1_U@d1A7FfSQwC+5(bnbULxGr-PqY?d>!_wD?Um zJ-~3eO!EFh74&!6`s@Ava6YLwzv7*SZ~enkI{pR`MZ}q0%lf-oA z=VID@Y?M_>xqt_m$4iwwyla{c}N9ZXg1 z!L6G0+#EiD*IwCw0-SL~vd9ypbyJY?QIKCZ>O2brH{8wSl;)(;f zeHg#>r1k<~-d#et#Nz?SpHPu6A2Z_8jm%wAC0zAp=zQGV@5bYRSM~b47YN7W)8S!! sq8{JhJ(+^CzC9eyiXE;2UcbKocZBuzb-g*Bt2?+O#o^JTZ+?3DAM-LHR{#J2 diff --git a/iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme b/iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme deleted file mode 100644 index 7eb04dc..0000000 --- a/iOS/MusicSpot/MusicSpot.xcodeproj/xcshareddata/xcschemes/MusicSpot.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/commit b/iOS/commit index 8eac4c3..e43386d 100755 --- a/iOS/commit +++ b/iOS/commit @@ -1,9 +1,9 @@ #!/bin/sh -​ + LINTPATH='.swiftlint.yml' declare -a PATHS=("MSCoreKit" "MSFoundation" "MSUIKit" "MSData" "MusicSpot" "Features") failures="" -​ + for path in "${PATHS[@]}"; do if [ -d "$path" ]; then echo "πŸ‘€ Running SwiftLint for $path" From 99f606474739fced7040c8ce7ac85a89fcc10c4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Junnos=20=EF=A3=BF?= Date: Thu, 30 Nov 2023 22:09:21 +0900 Subject: [PATCH 40/40] =?UTF-8?q?:truck:=20MSDesignSystemTests=20=ED=83=80?= =?UTF-8?q?=EA=B2=9F=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcschemes/MSDesignSystemTests.xcscheme | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100644 iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystemTests.xcscheme diff --git a/iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystemTests.xcscheme b/iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystemTests.xcscheme deleted file mode 100644 index fea2408..0000000 --- a/iOS/MSUIKit/.swiftpm/xcode/xcshareddata/xcschemes/MSDesignSystemTests.xcscheme +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -