Skip to content

Commit 810850d

Browse files
authored
Merge pull request #152 from boostcampwm-2022/feature/ProfileView
Feature/profile view
2 parents a93e697 + ee2897c commit 810850d

File tree

17 files changed

+139
-156
lines changed

17 files changed

+139
-156
lines changed

DailyQuest/DailyQuest.xcodeproj/project.pbxproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@
140140
9BED4DE8293FA01400C60631 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BED4DE7293FA01400C60631 /* ProfileViewModel.swift */; };
141141
9BED4DEA293FA92900C60631 /* UIImageView+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BED4DE9293FA92900C60631 /* UIImageView+.swift */; };
142142
9BED4DEC2940EA8900C60631 /* UserImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BED4DEB2940EA8900C60631 /* UserImageView.swift */; };
143-
9BED4DEE2941932200C60631 /* CameraIconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BED4DED2941932200C60631 /* CameraIconView.swift */; };
144143
9BED4DF12941C47D00C60631 /* RxGesture in Frameworks */ = {isa = PBXBuildFile; productRef = 9BED4DF02941C47D00C60631 /* RxGesture */; };
145144
9BED4DF629470D8C00C60631 /* LaunchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BED4DF529470D8C00C60631 /* LaunchViewController.swift */; };
146145
9BED4DFF2947109D00C60631 /* max.lottie.json in Resources */ = {isa = PBXBuildFile; fileRef = 9BED4DFE2947109C00C60631 /* max.lottie.json */; };
@@ -383,7 +382,6 @@
383382
9BED4DE7293FA01400C60631 /* ProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModel.swift; sourceTree = "<group>"; };
384383
9BED4DE9293FA92900C60631 /* UIImageView+.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImageView+.swift"; sourceTree = "<group>"; };
385384
9BED4DEB2940EA8900C60631 /* UserImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserImageView.swift; sourceTree = "<group>"; };
386-
9BED4DED2941932200C60631 /* CameraIconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraIconView.swift; sourceTree = "<group>"; };
387385
9BED4DF529470D8C00C60631 /* LaunchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchViewController.swift; sourceTree = "<group>"; };
388386
9BED4DFE2947109C00C60631 /* max.lottie.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = max.lottie.json; sourceTree = "<group>"; };
389387
A5003AB3293F5FEC00082A9C /* SignUpViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpViewModel.swift; sourceTree = "<group>"; };
@@ -1084,7 +1082,6 @@
10841082
345687F729374D2500CA51E3 /* DayNamePickerView.swift */,
10851083
345687F92937815900CA51E3 /* QuantityView.swift */,
10861084
9BED4DEB2940EA8900C60631 /* UserImageView.swift */,
1087-
9BED4DED2941932200C60631 /* CameraIconView.swift */,
10881085
);
10891086
path = View;
10901087
sourceTree = "<group>";
@@ -1577,7 +1574,6 @@
15771574
349955122923220E007AB99E /* SwiftUIPreview.swift in Sources */,
15781575
9BD8CD022938418500E6EA2F /* LastFollowingCell.swift in Sources */,
15791576
3449AD6029222B3900B87619 /* UserInfoCell.swift in Sources */,
1580-
9BED4DEE2941932200C60631 /* CameraIconView.swift in Sources */,
15811577
34ACC32F291DE9C000741371 /* SceneDelegate.swift in Sources */,
15821578
34A529D829247A87001BAD34 /* HomeCoordinator.swift in Sources */,
15831579
3472E8F7294213BE00BB304F /* DefaultFriendQuestUseCase.swift in Sources */,

DailyQuest/DailyQuest.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

DailyQuest/DailyQuest/Application/SyncManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ final class SyncManager {
6969

7070
do {
7171
let quests = try persistentStorage
72-
.fetchEntities(type: QuestEntity.self, filter: nil)
72+
.readEntities(type: QuestEntity.self, filter: nil)
7373
.compactMap { $0.toDomain() }
7474
single(.success(quests))
7575
} catch let error {

DailyQuest/DailyQuest/Data/PersistentStorages/BrowseQuestsStorage/RealmStorage/RealmBrowseQuestsStorage.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ extension RealmBrowseQuestsStorage: BrowseQuestsStorage {
2424
}
2525

2626
do {
27-
let browseQuests = try realmStorage.fetchEntities(type: BrowseQuestEntity.self)
27+
let browseQuests = try realmStorage.readEntities(type: BrowseQuestEntity.self)
2828
.compactMap { $0.toDomain() }
2929
single(.success(browseQuests))
3030
} catch let error {
@@ -44,7 +44,7 @@ extension RealmBrowseQuestsStorage: BrowseQuestsStorage {
4444
let browseQuestEntity = BrowseQuestEntity(browseQuest: browseQuest)
4545

4646
do {
47-
try realmStorage.saveEntity(entity: browseQuestEntity)
47+
try realmStorage.createEntity(entity: browseQuestEntity)
4848
single(.success(browseQuest))
4949
} catch let error {
5050
single(.failure(RealmStorageError.saveError(error)))

DailyQuest/DailyQuest/Data/PersistentStorages/QuestsStorage/RealmStorage/RealmQuestsStorage.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ extension RealmQuestsStorage: QuestsStorage {
2626
do {
2727
for quest in quests {
2828
let questEntity = QuestEntity(quest: quest)
29-
try realmStorage.saveEntity(entity: questEntity)
29+
try realmStorage.createEntity(entity: questEntity)
3030
}
3131
single(.success(quests))
3232
} catch let error {
@@ -43,7 +43,7 @@ extension RealmQuestsStorage: QuestsStorage {
4343
}
4444
do {
4545
let quests = try realmStorage
46-
.fetchEntities(type: QuestEntity.self, filter: NSPredicate(format: "date == %@", date.toString))
46+
.readEntities(type: QuestEntity.self, filter: NSPredicate(format: "date == %@", date.toString))
4747
.compactMap { $0.toDomain() }
4848
single(.success(quests))
4949
} catch let error {
@@ -75,7 +75,7 @@ extension RealmQuestsStorage: QuestsStorage {
7575
return Disposables.create()
7676
}
7777
do {
78-
guard let entity = try realmStorage.findEntities(type: QuestEntity.self, filter: NSPredicate(format: "uuid == %@", questId as CVarArg)).first else {
78+
guard let entity = try realmStorage.readEntities(type: QuestEntity.self, filter: NSPredicate(format: "uuid == %@", questId as CVarArg)).first else {
7979
throw RealmStorageError.noDataError
8080
}
8181
let quest = entity.toDomain()
@@ -96,7 +96,7 @@ extension RealmQuestsStorage: QuestsStorage {
9696
}
9797

9898
do {
99-
let entities = try realmStorage.findEntities(type: QuestEntity.self, filter: NSPredicate(format: "groupId == %@", groupId as CVarArg))
99+
let entities = try realmStorage.readEntities(type: QuestEntity.self, filter: NSPredicate(format: "groupId == %@", groupId as CVarArg))
100100
let quests = entities.compactMap { $0.toDomain() }
101101
for entity in entities {
102102
try realmStorage.deleteEntity(entity: entity)
@@ -115,7 +115,7 @@ extension RealmQuestsStorage: QuestsStorage {
115115
return Disposables.create()
116116
}
117117
do {
118-
let entities = try realmStorage.fetchEntities(type: QuestEntity.self)
118+
let entities = try realmStorage.readEntities(type: QuestEntity.self)
119119
let quests = entities.compactMap { $0.toDomain() }
120120
for entity in entities {
121121
try realmStorage.deleteEntity(entity: entity)
@@ -137,7 +137,7 @@ extension RealmQuestsStorage: QuestsStorage {
137137

138138
do {
139139
let quests = try realmStorage
140-
.fetchEntities(type: QuestEntity.self, filter: nil)
140+
.readEntities(type: QuestEntity.self, filter: nil)
141141
.compactMap { $0.toDomain() }
142142
single(.success(quests))
143143
} catch let error {

DailyQuest/DailyQuest/Data/PersistentStorages/RealmStorage/RealmStorage.swift

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,19 @@ enum RealmStorageError: Error {
1919

2020
final class RealmStorage {
2121
static let shared = RealmStorage()
22-
22+
private let persistentContainer = try? Realm()
23+
2324
private init() {
2425
// Realm file path
2526
#if DEBUG
26-
print(Realm.Configuration.defaultConfiguration.fileURL!)
27+
print(Realm.Configuration.defaultConfiguration.fileURL!)
2728
#endif
2829
}
30+
}
2931

30-
private let persistentContainer = try? Realm()
31-
32+
extension RealmStorage {
3233
@discardableResult
33-
func saveEntity<O: Object>(entity: O) throws -> O {
34+
func createEntity<O: Object>(entity: O) throws -> O {
3435
guard let persistentContainer = persistentContainer else {
3536
throw RealmStorageError.realmObjectError
3637
}
@@ -39,8 +40,8 @@ final class RealmStorage {
3940
}
4041
return entity
4142
}
42-
43-
func fetchEntities<O: Object>(type: O.Type, filter: NSPredicate? = nil) throws -> [O] {
43+
44+
func readEntities<O: Object>(type: O.Type, filter: NSPredicate? = nil) throws -> [O] {
4445
guard let persistentContainer = persistentContainer else {
4546
throw RealmStorageError.realmObjectError
4647
}
@@ -50,7 +51,7 @@ final class RealmStorage {
5051
return Array(persistentContainer.objects(type))
5152
}
5253
}
53-
54+
5455
@discardableResult
5556
func updateEntity<O: Object>(entity: O) throws -> O {
5657
guard let persistentContainer = persistentContainer else {
@@ -61,7 +62,7 @@ final class RealmStorage {
6162
}
6263
return entity
6364
}
64-
65+
6566
@discardableResult
6667
func deleteEntity<O: Object>(entity: O) throws -> O {
6768
guard let persistentContainer = persistentContainer else {
@@ -70,10 +71,10 @@ final class RealmStorage {
7071
try persistentContainer.write {
7172
persistentContainer.delete(entity)
7273
}
73-
74+
7475
return entity
7576
}
76-
77+
7778
@discardableResult
7879
func deleteAllEntity<O: Object>(type: O.Type) throws -> [O] {
7980
guard let persistentContainer = persistentContainer else {
@@ -86,12 +87,4 @@ final class RealmStorage {
8687
}
8788
return Array(persistentContainer.objects(type))
8889
}
89-
90-
func findEntities<O: Object>(type: O.Type, filter: NSPredicate) throws -> [O] {
91-
guard let persistentContainer = persistentContainer else {
92-
throw RealmStorageError.realmObjectError
93-
}
94-
return Array(persistentContainer.objects(type).filter(filter))
95-
}
96-
9790
}

DailyQuest/DailyQuest/Data/PersistentStorages/UserInfoStorage/RealmStorage/RealmUserInfoStorage.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extension RealmUserInfoStorage: UserInfoStorage {
2121
return Single<User>.create { [weak self] single in
2222
do {
2323
guard let realmStorage = self?.realmStorage else { throw RealmStorageError.realmObjectError }
24-
guard let userInfoEntity = try realmStorage.fetchEntities(type: UserInfoEntity.self)
24+
guard let userInfoEntity = try realmStorage.readEntities(type: UserInfoEntity.self)
2525
.first else {
2626
throw RealmStorageError.noDataError
2727
}

DailyQuest/DailyQuest/Data/Repositories/DefaultBrowseRepository.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@ extension DefaultBrowseRepository: BrowseRepository {
2727
/// Firebase 우선, 실패시 persistentStorage, persistentStorage도 실패시 Error반환
2828
/// - Returns: Observable<[BrowseQuest]>
2929
func fetch() -> Single<[BrowseQuest]> {
30-
let uid = networkService.uid.value
3130
return networkService.getAllowUsers(limit: 10)
3231
.map { $0.toDomain() }
3332
.flatMap(fetchBrowseQuestNetworkService(user:))
34-
.filter { !$0.quests.isEmpty && uid != $0.user.uuid }
33+
.filter { !$0.quests.isEmpty }
3534
.toArray()
3635
.do(afterSuccess: { [weak self] browseQuests in
3736
guard let self = self else { return }

DailyQuest/DailyQuest/Domain/Entities/User.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,13 @@ extension User {
7070
introduce: self.introduce,
7171
allow: self.allow)
7272
}
73+
74+
func setIntroduce(introduce: String) -> User {
75+
return User(uuid: self.uuid,
76+
nickName: self.nickName,
77+
profileURL: self.profileURL,
78+
backgroundImageURL: self.backgroundImageURL,
79+
introduce: introduce,
80+
allow: self.allow)
81+
}
7382
}

DailyQuest/DailyQuest/Domain/UseCases/Home/DefaultUserUseCase.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,12 @@ extension DefaultUserUseCase: UserUseCase {
5353
return userRepository.deleteUser()
5454
.catchAndReturn(false)
5555
}
56+
57+
func updateIntroduce(introduce: String) -> Single<Bool> {
58+
userRepository.readUser()
59+
.map { $0.setIntroduce(introduce: introduce) }
60+
.flatMap(userRepository.updateUser(by:))
61+
.map { _ in true }
62+
.catchAndReturn(false)
63+
}
5664
}
57-

0 commit comments

Comments
 (0)