콘텐츠 상세 - 크리에이터 팔로우와 알림설정
- 팔로잉 상태에서 알림 켜기/끄기 상태 추가
This commit is contained in:
		| @@ -12,7 +12,7 @@ struct ContentDetailCreatorProfileView: View { | ||||
|      | ||||
|     let creator: AudioContentCreator | ||||
|     let onClickFollow: (Int) -> Void | ||||
|     let onClickUnFollow: (Int) -> Void | ||||
|     let showCreatorFollowNotifyDialog: (Int) -> Void | ||||
|      | ||||
|     var body: some View { | ||||
|         HStack(spacing: 0) { | ||||
| @@ -29,14 +29,19 @@ struct ContentDetailCreatorProfileView: View { | ||||
|             Spacer() | ||||
|              | ||||
|             if creator.creatorId != UserDefaults.int(forKey: .userId) { | ||||
|                 Image(creator.isFollowing ? "btn_following_big" : "btn_follow_big") | ||||
|                     .onTapGesture { | ||||
|                         if creator.isFollowing { | ||||
|                             onClickUnFollow(creator.creatorId) | ||||
|                         } else { | ||||
|                             onClickFollow(creator.creatorId) | ||||
|                         } | ||||
|                 Image(creator.isFollow ? | ||||
|                       creator.isNotify ?  | ||||
|                       "btn_following_big" :  | ||||
|                         "btn_following_no_alarm_big" : | ||||
|                         "btn_follow_big" | ||||
|                 ) | ||||
|                 .onTapGesture { | ||||
|                     if creator.isFollowing { | ||||
|                         showCreatorFollowNotifyDialog(creator.creatorId) | ||||
|                     } else { | ||||
|                         onClickFollow(creator.creatorId) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -19,6 +19,15 @@ struct ContentDetailView: View { | ||||
|     @State private var isShowOrderView = false | ||||
|     @State private var isShowOrderConfirmView = false | ||||
|     @State private var isShowCommentListView = false | ||||
|     @State private var isShowFollowNotifyDialog: Bool = false { | ||||
|         didSet { | ||||
|             if !isShowFollowNotifyDialog { | ||||
|                 creatorId = 0 | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     @State private var creatorId: Int = 0 | ||||
|      | ||||
|     var body: some View { | ||||
|         GeometryReader { proxy in | ||||
| @@ -55,8 +64,11 @@ struct ContentDetailView: View { | ||||
|                     if let audioContent = viewModel.audioContent { | ||||
|                         ContentDetailCreatorProfileView( | ||||
|                             creator: audioContent.creator, | ||||
|                             onClickFollow: { viewModel.creatorFollow(userId: $0) }, | ||||
|                             onClickUnFollow: { viewModel.creatorUnFollow(userId: $0) } | ||||
|                             onClickFollow: { viewModel.creatorFollow(creatorId: $0) }, | ||||
|                             showCreatorFollowNotifyDialog: { | ||||
|                                 creatorId = $0 | ||||
|                                 isShowFollowNotifyDialog = true | ||||
|                             } | ||||
|                         ) | ||||
|                         .padding(.horizontal, 13.3) | ||||
|                         .padding(.top, 5.3) | ||||
| @@ -347,6 +359,21 @@ struct ContentDetailView: View { | ||||
|                         ) | ||||
|                     } | ||||
|                 } | ||||
|                  | ||||
|                 if isShowFollowNotifyDialog { | ||||
|                     CreatorFollowNotifyDialog( | ||||
|                         isShowing: $isShowFollowNotifyDialog, | ||||
|                         onClickNotifyAll: { | ||||
|                             viewModel.creatorFollow(creatorId: creatorId, follow: true, notify: true) | ||||
|                         }, | ||||
|                         onClickNotifyNone: { | ||||
|                             viewModel.creatorFollow(creatorId: creatorId, follow: true, notify: false) | ||||
|                         }, | ||||
|                         onClickUnFollow: { | ||||
|                             viewModel.creatorFollow(creatorId: creatorId, follow: false, notify: false) | ||||
|                         } | ||||
|                     ) | ||||
|                 } | ||||
|             } | ||||
|             .sheet( | ||||
|                 isPresented: $viewModel.isShowShareView, | ||||
|   | ||||
| @@ -87,10 +87,10 @@ final class ContentDetailViewModel: ObservableObject { | ||||
|             .store(in: &subscription) | ||||
|     } | ||||
|      | ||||
|     func creatorFollow(userId: Int) { | ||||
|     func creatorFollow(creatorId: Int, follow: Bool = true, notify: Bool = true) { | ||||
|         isLoading = true | ||||
|          | ||||
|         userRepository.creatorFollow(creatorId: userId) | ||||
|         userRepository.creatorFollow(creatorId: creatorId, follow: follow, notify: notify) | ||||
|             .sink { result in | ||||
|                 switch result { | ||||
|                 case .finished: | ||||
|   | ||||
| @@ -55,4 +55,6 @@ struct AudioContentCreator: Decodable { | ||||
|     let nickname: String | ||||
|     let profileImageUrl: String | ||||
|     let isFollowing: Bool | ||||
|     let isFollow: Bool | ||||
|     let isNotify: Bool | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung