fix(live-room): 채팅창 얼림 버튼 위치와 안내 문구를 조정한다

This commit is contained in:
Yu Sung
2026-03-20 14:27:10 +09:00
parent 8eca5df62b
commit af31444f0f
8 changed files with 100 additions and 32 deletions

View File

@@ -2133,9 +2133,16 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
}
private func appendChatFreezeStatusMessage(isChatFrozen: Bool) {
let statusMessage = isChatFrozen
? I18n.LiveRoom.chatFreezeOnStatusMessage
: I18n.LiveRoom.chatFreezeOffStatusMessage
let statusMessage: String
if isChatFrozen {
statusMessage = isCreator
? I18n.LiveRoom.chatFreezeOnStatusMessageForCreator
: I18n.LiveRoom.chatFreezeOnStatusMessageForListener
} else {
statusMessage = I18n.LiveRoom.chatFreezeOffStatusMessage
}
messages.append(LiveRoomJoinChat(nickname: "", statusMessage: statusMessage))
}

View File

@@ -11,17 +11,20 @@ struct LiveRoomRightBottomButton: View {
let imageName: String
let onClick: () -> Void
let backgroundColor: Color?
let onLongPress: (() -> Void)?
let longPressDuration: Double
init(
imageName: String,
onClick: @escaping () -> Void,
backgroundColor: Color? = nil,
onLongPress: (() -> Void)? = nil,
longPressDuration: Double = 2.0
) {
self.imageName = imageName
self.onClick = onClick
self.backgroundColor = backgroundColor
self.onLongPress = onLongPress
self.longPressDuration = longPressDuration
}
@@ -31,7 +34,15 @@ struct LiveRoomRightBottomButton: View {
.resizable()
.frame(width: 24, height: 24)
.padding(10)
.background(Color.gray52.opacity(0.6))
.background(
backgroundColor ?? Color(
.sRGB,
red: 82 / 255,
green: 82 / 255,
blue: 82 / 255,
opacity: 0.6
)
)
.cornerRadius(10)
.onTapGesture { onClick() }
.onLongPressGesture(minimumDuration: longPressDuration) {

View File

@@ -6,7 +6,6 @@
//
import SwiftUI
import Kingfisher
struct LiveRoomInfoHostView: View {
@@ -19,7 +18,6 @@ struct LiveRoomInfoHostView: View {
let isOnNotice: Bool
let isOnMenuPan: Bool
let isOnSignature: Bool
let isOnChatFreeze: Bool
let isShowMenuPanButton: Bool
let creatorId: Int
@@ -41,7 +39,6 @@ struct LiveRoomInfoHostView: View {
let onClickTotalHeart: () -> Void
let onClickTotalDonation: () -> Void
let onClickParticipants: () -> Void
let onClickToggleChatFreeze: () -> Void
let onClickToggleSignature: () -> Void
var body: some View {
@@ -58,18 +55,6 @@ struct LiveRoomInfoHostView: View {
Spacer()
LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnChatFreeze,
onText: I18n.LiveRoom.chatFreezeOn,
onTextColor: Color.button,
onStrokeColor: Color.button,
offText: I18n.LiveRoom.chatFreezeOff,
offTextColor: Color.graybb,
offStrokeColor: Color.graybb,
strokeWidth: 1,
strokeCornerRadius: 5.3
) { onClickToggleChatFreeze() }
LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnSignature,
onText: I18n.LiveRoom.signatureOn,
@@ -254,7 +239,6 @@ struct LiveRoomInfoHostView_Previews: PreviewProvider {
isOnNotice: true,
isOnMenuPan: false,
isOnSignature: false,
isOnChatFreeze: false,
isShowMenuPanButton: false,
creatorId: 1,
creatorNickname: "도화",
@@ -286,7 +270,6 @@ struct LiveRoomInfoHostView_Previews: PreviewProvider {
onClickTotalHeart: {},
onClickTotalDonation: {},
onClickParticipants: {},
onClickToggleChatFreeze: {},
onClickToggleSignature: {}
)
}

View File

@@ -74,7 +74,6 @@ struct LiveRoomViewV2: View {
isOnNotice: viewModel.isShowNotice,
isOnMenuPan: viewModel.isShowMenuPan,
isOnSignature: viewModel.isSignatureOn,
isOnChatFreeze: viewModel.isChatFrozen,
isShowMenuPanButton: !liveRoomInfo.menuPan.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty,
creatorId: liveRoomInfo.creatorId,
creatorNickname: liveRoomInfo.creatorNickname,
@@ -115,9 +114,6 @@ struct LiveRoomViewV2: View {
onClickParticipants: {
viewModel.isShowProfileList = true
},
onClickToggleChatFreeze: {
viewModel.setChatFreeze(isChatFrozen: !viewModel.isChatFrozen)
},
onClickToggleSignature: {
viewModel.isSignatureOn.toggle()
}
@@ -248,11 +244,25 @@ struct LiveRoomViewV2: View {
VStack(alignment: .trailing, spacing: 0) {
Spacer()
LiveRoomRightBottomButton(
imageName: viewModel.isSpeakerMute ? "ic_speaker_off" : "ic_speaker_on",
onClick: { viewModel.toggleSpeakerMute() }
)
VStack(spacing: 13.3) {
if liveRoomInfo.creatorId == UserDefaults.int(forKey: .userId) {
LiveRoomRightBottomButton(
imageName: "ic_ice",
onClick: {
viewModel.setChatFreeze(isChatFrozen: !viewModel.isChatFrozen)
},
backgroundColor: viewModel.isChatFrozen
? Color(hex: "3bb9f1").opacity(0.5)
: nil
)
}
LiveRoomRightBottomButton(
imageName: viewModel.isSpeakerMute ? "ic_speaker_off" : "ic_speaker_on",
onClick: { viewModel.toggleSpeakerMute() }
)
}
.padding(.bottom, 40)
.padding(.trailing, 13.3)