fix(profile): 프로필 소셜 URL 필드를 신규 명세로 정리한다

This commit is contained in:
Yu Sung
2026-02-27 13:45:49 +09:00
parent 38fb818f4b
commit 9d6f0c648b
6 changed files with 157 additions and 30 deletions

View File

@@ -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 ""
}
}