라이브 공유하기 버튼 다시 추가
This commit is contained in:
		| @@ -4,25 +4,13 @@ | |||||||
| <dict> | <dict> | ||||||
| 	<key>FirebaseAppDelegateProxyEnabled</key> | 	<key>FirebaseAppDelegateProxyEnabled</key> | ||||||
| 	<false/> | 	<false/> | ||||||
|  | 	<key>GADApplicationIdentifier</key> | ||||||
|  | 	<string>ca-app-pub-1299501215847962~8852459715</string> | ||||||
| 	<key>NSAppTransportSecurity</key> | 	<key>NSAppTransportSecurity</key> | ||||||
| 	<dict> | 	<dict> | ||||||
| 		<key>NSAllowsArbitraryLoads</key> | 		<key>NSAllowsArbitraryLoads</key> | ||||||
| 		<true/> | 		<true/> | ||||||
| 	</dict> | 	</dict> | ||||||
| 	<key>UIAppFonts</key> |  | ||||||
| 	<array> |  | ||||||
| 		<string>gmarket_sans_bold.otf</string> |  | ||||||
| 		<string>gmarket_sans_medium.otf</string> |  | ||||||
| 		<string>gmarket_sans_light.otf</string> |  | ||||||
| 	</array> |  | ||||||
| 	<key>UIBackgroundModes</key> |  | ||||||
| 	<array> |  | ||||||
| 		<string>audio</string> |  | ||||||
| 		<string>fetch</string> |  | ||||||
| 		<string>remote-notification</string> |  | ||||||
| 	</array> |  | ||||||
|     <key>GADApplicationIdentifier</key> |  | ||||||
|     <string>ca-app-pub-1299501215847962~8852459715</string> |  | ||||||
| 	<key>SKAdNetworkItems</key> | 	<key>SKAdNetworkItems</key> | ||||||
| 	<array> | 	<array> | ||||||
| 		<dict> | 		<dict> | ||||||
| @@ -222,5 +210,17 @@ | |||||||
| 			<string>3qcr597p9d.skadnetwork</string> | 			<string>3qcr597p9d.skadnetwork</string> | ||||||
| 		</dict> | 		</dict> | ||||||
| 	</array> | 	</array> | ||||||
|  | 	<key>UIAppFonts</key> | ||||||
|  | 	<array> | ||||||
|  | 		<string>gmarket_sans_bold.otf</string> | ||||||
|  | 		<string>gmarket_sans_medium.otf</string> | ||||||
|  | 		<string>gmarket_sans_light.otf</string> | ||||||
|  | 	</array> | ||||||
|  | 	<key>UIBackgroundModes</key> | ||||||
|  | 	<array> | ||||||
|  | 		<string>audio</string> | ||||||
|  | 		<string>fetch</string> | ||||||
|  | 		<string>remote-notification</string> | ||||||
|  | 	</array> | ||||||
| </dict> | </dict> | ||||||
| </plist> | </plist> | ||||||
|   | |||||||
| @@ -814,6 +814,50 @@ final class LiveRoomViewModel: NSObject, ObservableObject { | |||||||
|             .store(in: &subscription) |             .store(in: &subscription) | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  |     func shareRoom() { | ||||||
|  |         guard let link = URL(string: "https://sodalive.net/?room_id=\(AppState.shared.roomId)") else { return } | ||||||
|  |         let dynamicLinksDomainURIPrefix = "https://sodalive.page.link" | ||||||
|  |         guard let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix) else { | ||||||
|  |             self.errorMessage = "공유링크를 생성하지 못했습니다.\n다시 시도해 주세요." | ||||||
|  |             self.isShowErrorPopup = true | ||||||
|  |             return | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "kr.co.vividnext.sodalive") | ||||||
|  |         linkBuilder.iOSParameters?.appStoreID = "6461721697" | ||||||
|  |          | ||||||
|  |         linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "kr.co.vividnext.sodalive") | ||||||
|  |          | ||||||
|  |         guard let longDynamicLink = linkBuilder.url else { | ||||||
|  |             self.errorMessage = "공유링크를 생성하지 못했습니다.\n다시 시도해 주세요." | ||||||
|  |             self.isShowErrorPopup = true | ||||||
|  |             return | ||||||
|  |         } | ||||||
|  |         DEBUG_LOG("The long URL is: \(longDynamicLink)") | ||||||
|  |          | ||||||
|  |         DynamicLinkComponents.shortenURL(longDynamicLink, options: nil) { [unowned self] url, warnings, error in | ||||||
|  |             let shortUrl = url?.absoluteString | ||||||
|  |              | ||||||
|  |             if let liveRoomInfo = self.liveRoomInfo { | ||||||
|  |                 let urlString = shortUrl != nil ? shortUrl! : longDynamicLink.absoluteString | ||||||
|  |                 if liveRoomInfo.isPrivateRoom { | ||||||
|  |                     shareMessage = "\(UserDefaults.string(forKey: .nickname))님이 귀하를 소다라이브 비공개라이브에 초대하였습니다.\n" + | ||||||
|  |                     "※ 라이브 참여: \(urlString)\n" + | ||||||
|  |                     "(입장 비밀번호: \(liveRoomInfo.password!))" | ||||||
|  |                 } else { | ||||||
|  |                     shareMessage = "\(UserDefaults.string(forKey: .nickname))님이 귀하를 소다라이브 공개라이브에 초대하였습니다.\n" + | ||||||
|  |                     "※ 라이브 참여: \(urlString)" | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 isShowShareView = true | ||||||
|  |             } else { | ||||||
|  |                 self.errorMessage = "공유링크를 생성하지 못했습니다.\n다시 시도해 주세요." | ||||||
|  |                 self.isShowErrorPopup = true | ||||||
|  |                 return | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |      | ||||||
|     func kickOut() { |     func kickOut() { | ||||||
|         repository.kickOut(roomId: AppState.shared.roomId, userId: kickOutId) |         repository.kickOut(roomId: AppState.shared.roomId, userId: kickOutId) | ||||||
|             .sink { result in |             .sink { result in | ||||||
|   | |||||||
| @@ -30,6 +30,7 @@ struct LiveRoomInfoGuestView: View { | |||||||
|      |      | ||||||
|     let onClickQuit: () -> Void |     let onClickQuit: () -> Void | ||||||
|     let onClickToggleBg: () -> Void |     let onClickToggleBg: () -> Void | ||||||
|  |     let onClickShare: () -> Void | ||||||
|     let onClickFollow: (Bool) -> Void |     let onClickFollow: (Bool) -> Void | ||||||
|     let onClickProfile: (Int) -> Void |     let onClickProfile: (Int) -> Void | ||||||
|     let onClickNotice: () -> Void |     let onClickNotice: () -> Void | ||||||
| @@ -85,6 +86,13 @@ struct LiveRoomInfoGuestView: View { | |||||||
|                         strokeWidth: 1, |                         strokeWidth: 1, | ||||||
|                         strokeCornerRadius: 5.3 |                         strokeCornerRadius: 5.3 | ||||||
|                     ) { onClickToggleBg() } |                     ) { onClickToggleBg() } | ||||||
|  |                      | ||||||
|  |                     LiveRoomOverlayStrokeImageButton( | ||||||
|  |                         imageName: "ic_share", | ||||||
|  |                         strokeColor: Color.graybb, | ||||||
|  |                         strokeWidth: 1, | ||||||
|  |                         strokeCornerRadius: 5.3 | ||||||
|  |                     ) { onClickShare() } | ||||||
|                 } |                 } | ||||||
|                  |                  | ||||||
|                 HStack(spacing: 8) { |                 HStack(spacing: 8) { | ||||||
| @@ -218,6 +226,7 @@ struct LiveRoomInfoGuestView_Previews: PreviewProvider { | |||||||
|             isAdult: false, |             isAdult: false, | ||||||
|             onClickQuit: {}, |             onClickQuit: {}, | ||||||
|             onClickToggleBg: {}, |             onClickToggleBg: {}, | ||||||
|  |             onClickShare: {}, | ||||||
|             onClickFollow: { _ in }, |             onClickFollow: { _ in }, | ||||||
|             onClickProfile: { _ in }, |             onClickProfile: { _ in }, | ||||||
|             onClickNotice: {}, |             onClickNotice: {}, | ||||||
|   | |||||||
| @@ -31,6 +31,7 @@ struct LiveRoomInfoHostView: View { | |||||||
|      |      | ||||||
|     let onClickQuit: () -> Void |     let onClickQuit: () -> Void | ||||||
|     let onClickToggleBg: () -> Void |     let onClickToggleBg: () -> Void | ||||||
|  |     let onClickShare: () -> Void | ||||||
|     let onClickEdit: () -> Void |     let onClickEdit: () -> Void | ||||||
|     let onClickProfile: (Int) -> Void |     let onClickProfile: (Int) -> Void | ||||||
|     let onClickNotice: () -> Void |     let onClickNotice: () -> Void | ||||||
| @@ -77,6 +78,13 @@ struct LiveRoomInfoHostView: View { | |||||||
|                         strokeCornerRadius: 5.3 |                         strokeCornerRadius: 5.3 | ||||||
|                     ) { onClickToggleBg() } |                     ) { onClickToggleBg() } | ||||||
|                      |                      | ||||||
|  |                     LiveRoomOverlayStrokeImageButton( | ||||||
|  |                         imageName: "ic_share", | ||||||
|  |                         strokeColor: Color.graybb, | ||||||
|  |                         strokeWidth: 1, | ||||||
|  |                         strokeCornerRadius: 5.3 | ||||||
|  |                     ) { onClickShare() } | ||||||
|  |                      | ||||||
|                     LiveRoomOverlayStrokeImageButton( |                     LiveRoomOverlayStrokeImageButton( | ||||||
|                         imageName: "ic_edit", |                         imageName: "ic_edit", | ||||||
|                         strokeColor: Color.graybb, |                         strokeColor: Color.graybb, | ||||||
| @@ -233,6 +241,7 @@ struct LiveRoomInfoHostView_Previews: PreviewProvider { | |||||||
|             isAdult: false, |             isAdult: false, | ||||||
|             onClickQuit: {}, |             onClickQuit: {}, | ||||||
|             onClickToggleBg: {}, |             onClickToggleBg: {}, | ||||||
|  |             onClickShare: {}, | ||||||
|             onClickEdit: {}, |             onClickEdit: {}, | ||||||
|             onClickProfile: { _ in }, |             onClickProfile: { _ in }, | ||||||
|             onClickNotice: {}, |             onClickNotice: {}, | ||||||
|   | |||||||
| @@ -45,6 +45,9 @@ struct LiveRoomViewV2: View { | |||||||
|                             onClickToggleBg: { |                             onClickToggleBg: { | ||||||
|                                 viewModel.isBgOn.toggle() |                                 viewModel.isBgOn.toggle() | ||||||
|                             }, |                             }, | ||||||
|  |                             onClickShare: { | ||||||
|  |                                 viewModel.shareRoom() | ||||||
|  |                             }, | ||||||
|                             onClickEdit: { |                             onClickEdit: { | ||||||
|                                 viewModel.isShowEditRoomInfoDialog = true |                                 viewModel.isShowEditRoomInfoDialog = true | ||||||
|                             }, |                             }, | ||||||
| @@ -92,6 +95,9 @@ struct LiveRoomViewV2: View { | |||||||
|                             onClickToggleBg: { |                             onClickToggleBg: { | ||||||
|                                 viewModel.isBgOn.toggle() |                                 viewModel.isBgOn.toggle() | ||||||
|                             }, |                             }, | ||||||
|  |                             onClickShare: { | ||||||
|  |                                 viewModel.shareRoom() | ||||||
|  |                             }, | ||||||
|                             onClickFollow: { |                             onClickFollow: { | ||||||
|                                 if $0 { |                                 if $0 { | ||||||
|                                     viewModel.creatorUnFollow() |                                     viewModel.creatorUnFollow() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung