캐릭터 상세 - 언어 설정에 따라 번역 데이터를 표시하도록 수정
This commit is contained in:
@@ -22,6 +22,7 @@ struct CharacterDetailResponse: Decodable {
|
||||
let others: [OtherCharacter]
|
||||
let latestComment: CharacterCommentResponse?
|
||||
let totalComments: Int
|
||||
let translated: TranslatedAiCharacterDetail?
|
||||
}
|
||||
|
||||
enum CharacterType: String, Decodable {
|
||||
@@ -44,3 +45,22 @@ struct CharacterBackgroundResponse: Decodable {
|
||||
let topic: String
|
||||
let description: String
|
||||
}
|
||||
|
||||
struct TranslatedAiCharacterDetail: Decodable {
|
||||
let name: String?
|
||||
let description: String?
|
||||
let gender: String?
|
||||
let personality: TranslatedAiCharacterPersonality?
|
||||
let background: TranslatedAiCharacterBackground?
|
||||
let tags: String?
|
||||
}
|
||||
|
||||
struct TranslatedAiCharacterPersonality: Decodable {
|
||||
let trait: String?
|
||||
let description: String?
|
||||
}
|
||||
|
||||
struct TranslatedAiCharacterBackground: Decodable {
|
||||
let topic: String?
|
||||
let description: String?
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ struct CharacterDetailView: View {
|
||||
|
||||
// 세계관 및 작품 소개
|
||||
if let backgrounds = viewModel.characterDetail?.backgrounds {
|
||||
worldViewSection(backgrounds: backgrounds)
|
||||
worldViewSection(backgrounds: viewModel.characterDetail?.translated?.background?.description ?? backgrounds.description)
|
||||
}
|
||||
|
||||
// 원작 섹션
|
||||
@@ -70,7 +70,7 @@ struct CharacterDetailView: View {
|
||||
|
||||
// 성격 및 특징 섹션
|
||||
if let personalities = viewModel.characterDetail?.personalities {
|
||||
personalitySection(personalities: personalities)
|
||||
personalitySection(personalities: viewModel.characterDetail?.translated?.personality?.description ?? personalities.description)
|
||||
}
|
||||
|
||||
// 장르의 다른 캐릭터 섹션
|
||||
@@ -204,7 +204,7 @@ extension CharacterDetailView {
|
||||
{
|
||||
HStack(spacing: 4) {
|
||||
if let gender = viewModel.characterDetail?.gender {
|
||||
Text(gender)
|
||||
Text(viewModel.characterDetail?.translated?.gender ?? gender)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.foregroundColor(
|
||||
gender == "남성" ?
|
||||
@@ -262,7 +262,7 @@ extension CharacterDetailView {
|
||||
|
||||
// 이름과 상태
|
||||
HStack(spacing: 8) {
|
||||
Text(viewModel.characterDetail?.name ?? "")
|
||||
Text(viewModel.characterDetail?.translated?.name ?? viewModel.characterDetail?.name ?? "")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
@@ -282,11 +282,11 @@ extension CharacterDetailView {
|
||||
}
|
||||
|
||||
// 설명
|
||||
Text(viewModel.characterDetail?.description ?? "")
|
||||
Text(viewModel.characterDetail?.translated?.description ?? viewModel.characterDetail?.description ?? "")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 18))
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
Text(viewModel.characterDetail?.tags ?? "")
|
||||
Text(viewModel.characterDetail?.translated?.tags ?? viewModel.characterDetail?.tags ?? "")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.foregroundColor(Color(hex: "3BB9F1"))
|
||||
.multilineTextAlignment(.leading)
|
||||
@@ -297,7 +297,7 @@ extension CharacterDetailView {
|
||||
|
||||
// MARK: - World View Section
|
||||
extension CharacterDetailView {
|
||||
private func worldViewSection(backgrounds: CharacterBackgroundResponse) -> some View {
|
||||
private func worldViewSection(backgrounds: String) -> some View {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack {
|
||||
Text("[세계관 및 작품 소개]")
|
||||
@@ -307,7 +307,7 @@ extension CharacterDetailView {
|
||||
Spacer()
|
||||
}
|
||||
|
||||
CharacterExpandableTextView(text: backgrounds.description)
|
||||
CharacterExpandableTextView(text: backgrounds)
|
||||
}
|
||||
.padding(.horizontal, 24)
|
||||
}
|
||||
@@ -357,7 +357,7 @@ extension CharacterDetailView {
|
||||
|
||||
// MARK: - Personality Section
|
||||
extension CharacterDetailView {
|
||||
private func personalitySection(personalities: CharacterPersonalityResponse) -> some View {
|
||||
private func personalitySection(personalities: String) -> some View {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack {
|
||||
Text("[성격 및 특징]")
|
||||
@@ -367,7 +367,7 @@ extension CharacterDetailView {
|
||||
Spacer()
|
||||
}
|
||||
|
||||
CharacterExpandableTextView(text: personalities.description)
|
||||
CharacterExpandableTextView(text: personalities)
|
||||
|
||||
// 캐릭터톡 대화 가이드
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
|
||||
Reference in New Issue
Block a user