diff --git a/RunLog/Project.swift b/RunLog/Project.swift
deleted file mode 100644
index c56bbec..0000000
--- a/RunLog/Project.swift
+++ /dev/null
@@ -1,41 +0,0 @@
-import ProjectDescription
-
-let project = Project(
- name: "RunLog",
- organizationName: "ESTSOFTiOSTEAM1",
- targets: [
- .target(
- name: "RunLog",
- destinations: [.iPhone],
- product: .app,
- bundleId: "com.ESTSOFTiOSTEAM1.IEEE.RunLog",
- deploymentTargets: .iOS("17.0"),
- infoPlist: .file(path: "RunLog/InfoPlists/RunLog-info.plist"),
- sources: ["RunLog/Sources/**"],
- resources: ["RunLog/Resources/**"],
- dependencies: [
- .external(name: "SnapKit"),
- .external(name: "Then"),
- .external(name: "Moya"),
- .external(name: "CombineMoya"),
- .external(name: "NVActivityIndicatorView"),
- .external(name: "NVActivityIndicatorViewExtended"),
- ],
- coreDataModels: [
- .coreDataModel("RunLog/Sources/Data/DTO/DTOs.xcdatamodeld")
- ]
- ),
- .target(
- name: "RpTest",
- destinations: [.iPhone],
- product: .unitTests,
- bundleId: "com.ESTSOFTiOSTEAM1.IEEE.RpTest",
- deploymentTargets: .iOS("17.0"),
- infoPlist: .file(path: "RpTest/InfoPlists/RpTest-info.plist"),
- sources: ["RpTest/Sources/**"],
- dependencies: [
- .target(name: "RunLog")
- ]
- )
- ]
-)
diff --git a/RunLog/RunLog/InfoPlists/RunLog-Info.plist b/RunLog/Projects/App/InfoPlists/Info.plist
similarity index 80%
rename from RunLog/RunLog/InfoPlists/RunLog-Info.plist
rename to RunLog/Projects/App/InfoPlists/Info.plist
index af15092..0bc8451 100644
--- a/RunLog/RunLog/InfoPlists/RunLog-Info.plist
+++ b/RunLog/Projects/App/InfoPlists/Info.plist
@@ -6,6 +6,8 @@
$(API_KEY)
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ RunLog
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -41,20 +43,6 @@
Dark
UIApplicationSupportsIndirectInputEvents
- UIAppFonts
-
- NanumMyeongjo-Regular.ttf
- RacingSansOne-Regular.ttf
- Pretendard-Black.otf
- Pretendard-Bold.otf
- Pretendard-ExtraBold.otf
- Pretendard-ExtraLight.otf
- Pretendard-Light.otf
- Pretendard-Medium.otf
- Pretendard-Regular.otf
- Pretendard-SemiBold.otf
- Pretendard-Thin.otf
-
UIApplicationSceneManifest
UIApplicationSupportsMultipleScenes
@@ -92,12 +80,7 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- UILaunchScreen
-
- UIColorName
-
- UIImageName
-
-
+ UILaunchStoryboardName
+ LaunchScreen
\ No newline at end of file
diff --git a/RunLog/Projects/App/Project.swift b/RunLog/Projects/App/Project.swift
new file mode 100644
index 0000000..8e2b1c2
--- /dev/null
+++ b/RunLog/Projects/App/Project.swift
@@ -0,0 +1,16 @@
+import ProjectDescription
+import ProjectDescriptionHelpers
+
+let project = Project.app(
+ name: Module.app.name,
+ organizationName: Module.organizationName,
+ infoPlist: .file(path: "InfoPlists/info.plist"),
+ dependencies: [
+ Module.inject,
+ Module.domain,
+ Module.data,
+ Module.presentation,
+ Module.util,
+ ].map(\.project),
+ resources: .default
+)
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/RunLog/Projects/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
rename to RunLog/Projects/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/1024.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/1024.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/1024.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/1024.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/114.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/114.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/114.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/114.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/120.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/120.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/120.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/120.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/180.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/180.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/180.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/180.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/29.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/29.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/29.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/29.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/40.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/40.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/40.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/40.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/57.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/57.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/57.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/57.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/58.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/58.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/58.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/58.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/60.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/60.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/60.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/60.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/80.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/80.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/80.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/80.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/87.png b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/87.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/87.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/87.png
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to RunLog/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/Contents.json b/RunLog/Projects/App/Resources/Assets.xcassets/Contents.json
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/Contents.json
rename to RunLog/Projects/App/Resources/Assets.xcassets/Contents.json
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/Splash/Contents.json b/RunLog/Projects/App/Resources/Assets.xcassets/Splash/Contents.json
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/Splash/Contents.json
rename to RunLog/Projects/App/Resources/Assets.xcassets/Splash/Contents.json
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/Splash/ScreenBackground.colorset/Contents.json b/RunLog/Projects/App/Resources/Assets.xcassets/Splash/ScreenBackground.colorset/Contents.json
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/Splash/ScreenBackground.colorset/Contents.json
rename to RunLog/Projects/App/Resources/Assets.xcassets/Splash/ScreenBackground.colorset/Contents.json
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/Splash/splashImage.imageset/Contents.json b/RunLog/Projects/App/Resources/Assets.xcassets/Splash/splashImage.imageset/Contents.json
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/Splash/splashImage.imageset/Contents.json
rename to RunLog/Projects/App/Resources/Assets.xcassets/Splash/splashImage.imageset/Contents.json
diff --git a/RunLog/RunLog/Resources/Assets.xcassets/Splash/splashImage.imageset/splashImage.png b/RunLog/Projects/App/Resources/Assets.xcassets/Splash/splashImage.imageset/splashImage.png
similarity index 100%
rename from RunLog/RunLog/Resources/Assets.xcassets/Splash/splashImage.imageset/splashImage.png
rename to RunLog/Projects/App/Resources/Assets.xcassets/Splash/splashImage.imageset/splashImage.png
diff --git a/RunLog/RunLog/Sources/App/Launch Screen.storyboard b/RunLog/Projects/App/Resources/LaunchScreen.storyboard
similarity index 100%
rename from RunLog/RunLog/Sources/App/Launch Screen.storyboard
rename to RunLog/Projects/App/Resources/LaunchScreen.storyboard
diff --git a/RunLog/RunLog/Sources/App/AppDelegate.swift b/RunLog/Projects/App/Sources/AppDelegate.swift
similarity index 96%
rename from RunLog/RunLog/Sources/App/AppDelegate.swift
rename to RunLog/Projects/App/Sources/AppDelegate.swift
index dd4e6b7..baf048f 100644
--- a/RunLog/RunLog/Sources/App/AppDelegate.swift
+++ b/RunLog/Projects/App/Sources/AppDelegate.swift
@@ -4,6 +4,9 @@
//
// Created by 김도연 on 3/13/25.
//
+import RLDomain
+import RLData
+import RLInject
import UIKit
@@ -13,7 +16,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
registerDependencies()
-
+ UIFont.registerFonts()
return true
}
diff --git a/RunLog/RunLog/Sources/App/SceneDelegate.swift b/RunLog/Projects/App/Sources/SceneDelegate.swift
similarity index 98%
rename from RunLog/RunLog/Sources/App/SceneDelegate.swift
rename to RunLog/Projects/App/Sources/SceneDelegate.swift
index dda3825..6ff1393 100644
--- a/RunLog/RunLog/Sources/App/SceneDelegate.swift
+++ b/RunLog/Projects/App/Sources/SceneDelegate.swift
@@ -4,6 +4,8 @@
//
// Created by 김도연 on 3/13/25.
//
+import RLPresentation
+import RLUtil
import UIKit
diff --git a/RunLog/RpTest/InfoPlists/RpTest-Info.plist b/RunLog/Projects/App/Tests/InfoPlists/RpTest-Info.plist
similarity index 100%
rename from RunLog/RpTest/InfoPlists/RpTest-Info.plist
rename to RunLog/Projects/App/Tests/InfoPlists/RpTest-Info.plist
diff --git a/RunLog/RpTest/Sources/DayLogUseCaseTest.swift b/RunLog/Projects/App/Tests/Sources/DayLogUseCaseTest.swift
similarity index 100%
rename from RunLog/RpTest/Sources/DayLogUseCaseTest.swift
rename to RunLog/Projects/App/Tests/Sources/DayLogUseCaseTest.swift
diff --git a/RunLog/RpTest/Sources/DoubleTest.swift b/RunLog/Projects/App/Tests/Sources/DoubleTest.swift
similarity index 100%
rename from RunLog/RpTest/Sources/DoubleTest.swift
rename to RunLog/Projects/App/Tests/Sources/DoubleTest.swift
diff --git a/RunLog/RpTest/Sources/MediaUseCaseTests.swift b/RunLog/Projects/App/Tests/Sources/MediaUseCaseTests.swift
similarity index 100%
rename from RunLog/RpTest/Sources/MediaUseCaseTests.swift
rename to RunLog/Projects/App/Tests/Sources/MediaUseCaseTests.swift
diff --git a/RunLog/RpTest/Sources/RpTest.swift b/RunLog/Projects/App/Tests/Sources/RpTest.swift
similarity index 100%
rename from RunLog/RpTest/Sources/RpTest.swift
rename to RunLog/Projects/App/Tests/Sources/RpTest.swift
diff --git a/RunLog/RpTest/Sources/TestCoreDataContainer.swift b/RunLog/Projects/App/Tests/Sources/TestCoreDataContainer.swift
similarity index 100%
rename from RunLog/RpTest/Sources/TestCoreDataContainer.swift
rename to RunLog/Projects/App/Tests/Sources/TestCoreDataContainer.swift
diff --git a/RunLog/Projects/Data/Project.swift b/RunLog/Projects/Data/Project.swift
new file mode 100644
index 0000000..0268789
--- /dev/null
+++ b/RunLog/Projects/Data/Project.swift
@@ -0,0 +1,18 @@
+import ProjectDescription
+import ProjectDescriptionHelpers
+
+let project = Project.framework(
+ name: Module.data.name,
+ organizationName: Module.organizationName,
+ infoPlist: .default,
+ dependencies: [
+ Module.inject.project,
+ Module.domain.project,
+ Module.util.project,
+ .external(name: "Moya"),
+ .external(name: "CombineMoya"),
+ ],
+ coreDataModels: [
+ .coreDataModel("Sources/DTOs/DTOs.xcdatamodeld")
+ ]
+)
diff --git a/RunLog/RunLog/Sources/Data/DTO/DTOs.xcdatamodeld/DTOs.xcdatamodel/contents b/RunLog/Projects/Data/Sources/DTOs/DTOs.xcdatamodeld/DTOs.xcdatamodel/contents
similarity index 100%
rename from RunLog/RunLog/Sources/Data/DTO/DTOs.xcdatamodeld/DTOs.xcdatamodel/contents
rename to RunLog/Projects/Data/Sources/DTOs/DTOs.xcdatamodeld/DTOs.xcdatamodel/contents
diff --git a/RunLog/RunLog/Sources/Data/DTO/DataMapper.swift b/RunLog/Projects/Data/Sources/DTOs/DataMapper.swift
similarity index 99%
rename from RunLog/RunLog/Sources/Data/DTO/DataMapper.swift
rename to RunLog/Projects/Data/Sources/DTOs/DataMapper.swift
index 989d1d3..74e8677 100644
--- a/RunLog/RunLog/Sources/Data/DTO/DataMapper.swift
+++ b/RunLog/Projects/Data/Sources/DTOs/DataMapper.swift
@@ -4,6 +4,7 @@
//
// Created by 신승재 on 3/18/25.
//
+import RLDomain
import Foundation
import CoreData
diff --git a/RunLog/Projects/Data/Sources/DataContainer/CoreDataContainer.swift b/RunLog/Projects/Data/Sources/DataContainer/CoreDataContainer.swift
new file mode 100644
index 0000000..8e9686b
--- /dev/null
+++ b/RunLog/Projects/Data/Sources/DataContainer/CoreDataContainer.swift
@@ -0,0 +1,33 @@
+//
+// CoreDataContainer.swift
+// RunLog
+//
+// Created by 신승재 on 3/20/25.
+//
+
+import CoreData
+
+public final class CoreDataContainer {
+
+ public init() {}
+
+ lazy var persistentContainer: NSPersistentContainer = {
+ guard let modelURL = Bundle.module.url(forResource: "DTOs", withExtension: "momd"),
+ let model = NSManagedObjectModel(contentsOf: modelURL) else {
+ fatalError("Failed to load Core Data model named DTOs")
+ }
+
+ let container = NSPersistentContainer(name: "DTOs", managedObjectModel: model)
+ container.loadPersistentStores { _, error in
+ if let error = error as NSError? {
+ fatalError("Unresolved Core Data error: \(error), \(error.userInfo)")
+ }
+ }
+ return container
+ }()
+
+ public var context: NSManagedObjectContext {
+ return persistentContainer.viewContext
+ }
+
+}
diff --git a/RunLog/RunLog/Sources/Data/Impl/AppConfigRepositoryImpl.swift b/RunLog/Projects/Data/Sources/Impls/AppConfigRepositoryImpl.swift
similarity index 90%
rename from RunLog/RunLog/Sources/Data/Impl/AppConfigRepositoryImpl.swift
rename to RunLog/Projects/Data/Sources/Impls/AppConfigRepositoryImpl.swift
index 7ecf3a8..928c3cc 100644
--- a/RunLog/RunLog/Sources/Data/Impl/AppConfigRepositoryImpl.swift
+++ b/RunLog/Projects/Data/Sources/Impls/AppConfigRepositoryImpl.swift
@@ -4,18 +4,19 @@
//
// Created by 김도연 on 3/19/25.
//
+import RLDomain
import Foundation
import CoreData
-final class AppConfigRepositoryImpl: AppConfigRepository {
+public final class AppConfigRepositoryImpl: AppConfigRepository {
private let context: NSManagedObjectContext
- init(context: NSManagedObjectContext) {
+ public init(context: NSManagedObjectContext) {
self.context = context
}
- func createAppConfig(_ config: AppConfig) async throws {
+ public func createAppConfig(_ config: AppConfig) async throws {
// print("Impl: ", #function)
try await context.perform { [weak self] in
@@ -41,7 +42,7 @@ final class AppConfigRepositoryImpl: AppConfigRepository {
}
}
- func readAppConfig() async throws -> AppConfig {
+ public func readAppConfig() async throws -> AppConfig {
// print("Impl: ", #function)
return try await context.perform { [weak self] in
@@ -65,7 +66,7 @@ final class AppConfigRepositoryImpl: AppConfigRepository {
}
- func updateAppConfig(_ config: AppConfig) async throws {
+ public func updateAppConfig(_ config: AppConfig) async throws {
// print("Impl: ", #function)
return try await context.perform { [weak self] in
@@ -96,7 +97,7 @@ final class AppConfigRepositoryImpl: AppConfigRepository {
}
}
- func deleteAppConfig() async throws {
+ public func deleteAppConfig() async throws {
// print("Impl: ", #function)
return try await context.perform { [weak self] in
diff --git a/RunLog/RunLog/Sources/Data/Impl/DayLogRepositoryImpl.swift b/RunLog/Projects/Data/Sources/Impls/DayLogRepositoryImpl.swift
similarity index 82%
rename from RunLog/RunLog/Sources/Data/Impl/DayLogRepositoryImpl.swift
rename to RunLog/Projects/Data/Sources/Impls/DayLogRepositoryImpl.swift
index f2b554e..2be3803 100644
--- a/RunLog/RunLog/Sources/Data/Impl/DayLogRepositoryImpl.swift
+++ b/RunLog/Projects/Data/Sources/Impls/DayLogRepositoryImpl.swift
@@ -4,20 +4,20 @@
//
// Created by 신승재 on 3/18/25.
//
-
+import RLDomain
import Foundation
import CoreData
-final class DayLogRepositoryImpl: DayLogRepository {
+public final class DayLogRepositoryImpl: DayLogRepository {
private let context: NSManagedObjectContext
- init(context: NSManagedObjectContext) {
+ public init(context: NSManagedObjectContext) {
self.context = context
}
- func createDayLog(_ dayLog: DayLog) async throws {
+ public func createDayLog(_ dayLog: DayLog) async throws {
print("Impl: ", #function)
try await context.perform {
@@ -29,7 +29,7 @@ final class DayLogRepositoryImpl: DayLogRepository {
let existing = try self.context.fetch(fetchRequest)
if !existing.isEmpty {
- throw CoreDataError.modelAlreadyExist
+ throw DataError.modelAlreadyExist
}
let data = DataMapper.toDTO(dayLog, context: self.context)
@@ -38,7 +38,7 @@ final class DayLogRepositoryImpl: DayLogRepository {
}
}
- func readDayLog(date: Date) async throws -> DayLog {
+ public func readDayLog(date: Date) async throws -> DayLog {
print("Impl: ", #function)
return try await context.perform {
@@ -49,17 +49,17 @@ final class DayLogRepositoryImpl: DayLogRepository {
)
guard let data = try self.context.fetch(fetchRequest).first else {
- throw CoreDataError.modelNotFound
+ throw DataError.modelNotFound
}
guard let model = DataMapper.toEntity(data) else {
- throw CoreDataError.conversionError
+ throw DataError.conversionError
}
return model
}
}
- func readAllDayLogs() async throws -> [DayLog] {
+ public func readAllDayLogs() async throws -> [DayLog] {
print("Impl: ", #function)
return try await context.perform {
@@ -72,7 +72,7 @@ final class DayLogRepositoryImpl: DayLogRepository {
}
}
- func updateDayLog(_ dayLog: DayLog) async throws {
+ public func updateDayLog(_ dayLog: DayLog) async throws {
print("Impl: ", #function)
try await context.perform {
@@ -83,7 +83,7 @@ final class DayLogRepositoryImpl: DayLogRepository {
)
guard let data = try self.context.fetch(fetchRequest).first else {
- throw CoreDataError.modelNotFound
+ throw DataError.modelNotFound
}
data.trackImage = dayLog.trackImage
@@ -100,7 +100,7 @@ final class DayLogRepositoryImpl: DayLogRepository {
}
}
- func deleteDayLog(date: Date) async throws {
+ public func deleteDayLog(date: Date) async throws {
print("Impl: ", #function)
try await context.perform {
@@ -111,7 +111,7 @@ final class DayLogRepositoryImpl: DayLogRepository {
)
guard let data = try self.context.fetch(fetchRequest).first else {
- throw CoreDataError.modelNotFound
+ throw DataError.modelNotFound
}
self.context.delete(data)
diff --git a/RunLog/RunLog/Sources/Data/DistanceManager.swift b/RunLog/Projects/Data/Sources/Managers/DistanceManager.swift
similarity index 84%
rename from RunLog/RunLog/Sources/Data/DistanceManager.swift
rename to RunLog/Projects/Data/Sources/Managers/DistanceManager.swift
index 4c5eb4a..9ac447e 100644
--- a/RunLog/RunLog/Sources/Data/DistanceManager.swift
+++ b/RunLog/Projects/Data/Sources/Managers/DistanceManager.swift
@@ -11,26 +11,26 @@ import CoreLocation
/// 사용자가 움직인 거리를 측정하는 매니저
-final class DistanceManager {
+public final class DistanceManager {
// MARK: - Singleton
- static let shared = DistanceManager()
+ public static let shared = DistanceManager()
private init() {
bind()
}
// MARK: - Input
- enum Input {
+ public enum Input {
case requestDistance(previous: CLLocation, current: CLLocation)
}
- let input = PassthroughSubject()
+ public let input = PassthroughSubject()
// MARK: - Output
- enum Output {
+ public enum Output {
case responseDistance(Double)
}
- let output = PassthroughSubject