fix(profile): 프로필 소셜 URL 필드를 신규 명세로 정리한다
This commit is contained in:
@@ -1149,8 +1149,9 @@ If you block this user, the following features will be restricted.
|
||||
// 라벨
|
||||
static var instagram: String { pick(ko: "인스타그램", en: "Instagram", ja: "Instagram") }
|
||||
static var youtube: String { pick(ko: "유튜브", en: "YouTube", ja: "YouTube") }
|
||||
static var website: String { pick(ko: "웹사이트", en: "Website", ja: "ウェブサイト") }
|
||||
static var blog: String { pick(ko: "블로그", en: "Blog", ja: "ブログ") }
|
||||
static var kakaoOpenChat: String { pick(ko: "오픈채팅", en: "Open Chat", ja: "オープンチャット") }
|
||||
static var fancimm: String { pick(ko: "팬심M", en: "Fancimm", ja: "Fancimm") }
|
||||
static var x: String { pick(ko: "X", en: "X", ja: "X") }
|
||||
|
||||
// 플레이스홀더
|
||||
static var instagramUrlPlaceholder: String {
|
||||
@@ -1159,11 +1160,14 @@ If you block this user, the following features will be restricted.
|
||||
static var youtubeUrlPlaceholder: String {
|
||||
pick(ko: "유튜브 URL", en: "YouTube URL", ja: "YouTubeのURL")
|
||||
}
|
||||
static var websiteUrlPlaceholder: String {
|
||||
pick(ko: "웹사이트 URL", en: "Website URL", ja: "ウェブサイト URL")
|
||||
static var kakaoOpenChatUrlPlaceholder: String {
|
||||
pick(ko: "오픈채팅 URL", en: "Open Chat URL", ja: "オープンチャット URL")
|
||||
}
|
||||
static var blogUrlPlaceholder: String {
|
||||
pick(ko: "블로그 URL", en: "Blog URL", ja: "ブログ URL")
|
||||
static var fancimmUrlPlaceholder: String {
|
||||
pick(ko: "팬심M URL", en: "Fancimm URL", ja: "Fancimm URL")
|
||||
}
|
||||
static var xUrlPlaceholder: String {
|
||||
pick(ko: "X URL", en: "X URL", ja: "X URL")
|
||||
}
|
||||
|
||||
// 소개글 입력 플레이스홀더
|
||||
|
||||
@@ -17,8 +17,10 @@ struct GetProfileResponse: Decodable {
|
||||
let rewardCan: Int
|
||||
let youtubeUrl: String?
|
||||
let instagramUrl: String?
|
||||
let blogUrl: String?
|
||||
let websiteUrl: String?
|
||||
let fancimmUrl: String?
|
||||
let xUrl: String?
|
||||
let xurl: String?
|
||||
let kakaoOpenChatUrl: String?
|
||||
let introduce: String
|
||||
let tags: [String]
|
||||
}
|
||||
|
||||
@@ -16,8 +16,9 @@ struct ProfileUpdateRequest: Encodable {
|
||||
var introduce: String? = nil
|
||||
var youtubeUrl: String? = nil
|
||||
var instagramUrl: String? = nil
|
||||
var websiteUrl: String? = nil
|
||||
var blogUrl: String? = nil
|
||||
var fancimmUrl: String? = nil
|
||||
var xUrl: String? = nil
|
||||
var kakaoOpenChatUrl: String? = nil
|
||||
var isVisibleDonationRank: Bool? = nil
|
||||
var donationRankingPeriod: DonationRankingPeriod? = nil
|
||||
let container: String = "ios"
|
||||
|
||||
@@ -168,7 +168,7 @@ struct ProfileUpdateView: View {
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
func InstagramAndYoutubeAccountView() -> some View {
|
||||
func SocialAccountUrlView() -> some View {
|
||||
VStack(spacing: 16.7) {
|
||||
UserTextField(
|
||||
title: I18n.ProfileUpdate.instagram,
|
||||
@@ -185,17 +185,24 @@ struct ProfileUpdateView: View {
|
||||
)
|
||||
|
||||
UserTextField(
|
||||
title: I18n.ProfileUpdate.website,
|
||||
hint: I18n.ProfileUpdate.websiteUrlPlaceholder,
|
||||
title: I18n.ProfileUpdate.kakaoOpenChat,
|
||||
hint: I18n.ProfileUpdate.kakaoOpenChatUrlPlaceholder,
|
||||
isSecure: false,
|
||||
variable: $viewModel.websiteUrl
|
||||
variable: $viewModel.kakaoOpenChatUrl
|
||||
)
|
||||
|
||||
UserTextField(
|
||||
title: I18n.ProfileUpdate.blog,
|
||||
hint: I18n.ProfileUpdate.blogUrlPlaceholder,
|
||||
title: I18n.ProfileUpdate.fancimm,
|
||||
hint: I18n.ProfileUpdate.fancimmUrlPlaceholder,
|
||||
isSecure: false,
|
||||
variable: $viewModel.blogUrl
|
||||
variable: $viewModel.fancimmUrl
|
||||
)
|
||||
|
||||
UserTextField(
|
||||
title: I18n.ProfileUpdate.x,
|
||||
hint: I18n.ProfileUpdate.xUrlPlaceholder,
|
||||
isSecure: false,
|
||||
variable: $viewModel.xUrl
|
||||
)
|
||||
}
|
||||
.padding(.vertical, 20)
|
||||
@@ -331,7 +338,7 @@ struct ProfileUpdateView: View {
|
||||
.padding(.top, 13.3)
|
||||
|
||||
if UserDefaults.string(forKey: .role) == MemberRole.CREATOR.rawValue {
|
||||
InstagramAndYoutubeAccountView()
|
||||
SocialAccountUrlView()
|
||||
.padding(.top, 13.3)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,9 @@ final class ProfileUpdateViewModel: ObservableObject {
|
||||
@Published var nickname = ""
|
||||
@Published var youtubeUrl = ""
|
||||
@Published var instagramUrl = ""
|
||||
@Published var websiteUrl = ""
|
||||
@Published var blogUrl = ""
|
||||
@Published var kakaoOpenChatUrl = ""
|
||||
@Published var fancimmUrl = ""
|
||||
@Published var xUrl = ""
|
||||
@Published var gender: Gender = .NONE
|
||||
@Published var introduce = ""
|
||||
|
||||
@@ -75,8 +76,9 @@ final class ProfileUpdateViewModel: ObservableObject {
|
||||
self.nickname = data.nickname
|
||||
self.youtubeUrl = data.youtubeUrl ?? ""
|
||||
self.instagramUrl = data.instagramUrl ?? ""
|
||||
self.blogUrl = data.blogUrl ?? ""
|
||||
self.websiteUrl = data.websiteUrl ?? ""
|
||||
self.kakaoOpenChatUrl = data.kakaoOpenChatUrl ?? ""
|
||||
self.fancimmUrl = data.fancimmUrl ?? ""
|
||||
self.xUrl = preferredXUrl(xUrl: data.xUrl, xurl: data.xurl)
|
||||
self.introduce = data.introduce
|
||||
self.gender = data.gender
|
||||
self.tags.append(contentsOf: data.tags)
|
||||
@@ -100,11 +102,18 @@ final class ProfileUpdateViewModel: ObservableObject {
|
||||
}
|
||||
|
||||
func updateProfile() {
|
||||
let originalYouTubeUrl = profileResponse!.youtubeUrl ?? ""
|
||||
let originalInstagramUrl = profileResponse!.instagramUrl ?? ""
|
||||
let originalKakaoOpenChatUrl = profileResponse!.kakaoOpenChatUrl ?? ""
|
||||
let originalFancimmUrl = profileResponse!.fancimmUrl ?? ""
|
||||
let originalXUrl = preferredXUrl(xUrl: profileResponse!.xUrl, xurl: profileResponse!.xurl)
|
||||
|
||||
if profileResponse!.nickname != nickname ||
|
||||
profileResponse!.youtubeUrl != youtubeUrl ||
|
||||
profileResponse!.instagramUrl != instagramUrl ||
|
||||
profileResponse!.blogUrl != blogUrl ||
|
||||
profileResponse!.websiteUrl != websiteUrl ||
|
||||
originalYouTubeUrl != youtubeUrl ||
|
||||
originalInstagramUrl != instagramUrl ||
|
||||
originalKakaoOpenChatUrl != kakaoOpenChatUrl ||
|
||||
originalFancimmUrl != fancimmUrl ||
|
||||
originalXUrl != xUrl ||
|
||||
profileResponse!.gender != gender ||
|
||||
profileResponse!.introduce != introduce ||
|
||||
!insertTags.isEmpty ||
|
||||
@@ -115,10 +124,11 @@ final class ProfileUpdateViewModel: ObservableObject {
|
||||
nickname: profileResponse!.nickname != nickname ? nickname : nil,
|
||||
gender: profileResponse!.gender != gender ? gender : nil,
|
||||
introduce: profileResponse!.introduce != introduce && introduce.trimmingCharacters(in: .whitespacesAndNewlines) != placeholder ? introduce : nil,
|
||||
youtubeUrl: profileResponse!.youtubeUrl != youtubeUrl ? youtubeUrl : nil,
|
||||
instagramUrl: profileResponse!.instagramUrl != instagramUrl ? instagramUrl : nil,
|
||||
websiteUrl: profileResponse!.websiteUrl != websiteUrl ? websiteUrl : nil,
|
||||
blogUrl: profileResponse!.blogUrl != blogUrl ? blogUrl : nil,
|
||||
youtubeUrl: originalYouTubeUrl != youtubeUrl ? youtubeUrl : nil,
|
||||
instagramUrl: originalInstagramUrl != instagramUrl ? instagramUrl : nil,
|
||||
fancimmUrl: originalFancimmUrl != fancimmUrl ? fancimmUrl : nil,
|
||||
xUrl: originalXUrl != xUrl ? xUrl : nil,
|
||||
kakaoOpenChatUrl: originalKakaoOpenChatUrl != kakaoOpenChatUrl ? kakaoOpenChatUrl : nil,
|
||||
insertTags: !insertTags.isEmpty ? insertTags : nil,
|
||||
removeTags: !removeTags.isEmpty ? removeTags : nil
|
||||
)
|
||||
@@ -327,4 +337,18 @@ final class ProfileUpdateViewModel: ObservableObject {
|
||||
let predicate = NSPredicate(format:"SELF MATCHES %@", passwordRegEx)
|
||||
return predicate.evaluate(with: newPassword)
|
||||
}
|
||||
|
||||
private func preferredXUrl(xUrl: String?, xurl: String?) -> String {
|
||||
if let xUrl,
|
||||
!xUrl.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
||||
return xUrl
|
||||
}
|
||||
|
||||
if let xurl,
|
||||
!xurl.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
||||
return xurl
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user