From d3037d1ba3227fb9b7284b0e8c12a68d306cbd7a Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Tue, 20 Jan 2026 00:17:42 +0900 Subject: [PATCH] =?UTF-8?q?=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=EC=B1=84=EB=84=90=20-=20=ED=8C=94=EB=A1=9C=EC=9A=B0/?= =?UTF-8?q?=ED=8C=94=EB=A1=9C=EC=9E=89=20=EB=B2=84=ED=8A=BC=20=EB=A1=9C?= =?UTF-8?q?=EC=BB=AC=20=EB=9D=BC=EC=9D=B4=EC=A7=95=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../btn_follow_big_en.imageset/Contents.json | 21 ++++++ .../btn_follow_big_en.png | Bin 0 -> 2386 bytes .../btn_follow_big_ja.imageset/Contents.json | 21 ++++++ .../btn_follow_big_ja.png | Bin 0 -> 2119 bytes .../Contents.json | 21 ++++++ .../btn_following_big_en.png | Bin 0 -> 3399 bytes .../Contents.json | 21 ++++++ .../btn_following_big_ja.png | Bin 0 -> 2947 bytes .../Contents.json | 21 ++++++ .../btn_following_no_alarm_big_en.png | Bin 0 -> 3611 bytes .../Contents.json | 21 ++++++ .../btn_following_no_alarm_big_ja.png | Bin 0 -> 3264 bytes .../Common/FollowButtonImageAsset.swift | 66 ++++++++++++++++++ .../ContentDetailCreatorProfileView.swift | 10 +-- .../Series/Detail/SeriesDetailView.swift | 11 ++- .../FollowerList/FollowerListItemView.swift | 10 +-- .../Explorer/Profile/UserProfileView.swift | 11 ++- .../Follow/FollowCreatorItemView.swift | 11 ++- 18 files changed, 217 insertions(+), 28 deletions(-) create mode 100644 SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/Contents.json create mode 100644 SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/btn_follow_big_en.png create mode 100644 SodaLive/Resources/Assets.xcassets/btn_follow_big_ja.imageset/Contents.json create mode 100644 SodaLive/Resources/Assets.xcassets/btn_follow_big_ja.imageset/btn_follow_big_ja.png create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/Contents.json create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/btn_following_big_en.png create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_big_ja.imageset/Contents.json create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_big_ja.imageset/btn_following_big_ja.png create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/Contents.json create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/btn_following_no_alarm_big_en.png create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_ja.imageset/Contents.json create mode 100644 SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_ja.imageset/btn_following_no_alarm_big_ja.png create mode 100644 SodaLive/Sources/Common/FollowButtonImageAsset.swift diff --git a/SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/Contents.json b/SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/Contents.json new file mode 100644 index 0000000..240d3bf --- /dev/null +++ b/SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_follow_big_en.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/btn_follow_big_en.png b/SodaLive/Resources/Assets.xcassets/btn_follow_big_en.imageset/btn_follow_big_en.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdd7e7c743614b5d71fa41c155e0dcc12ded8ea GIT binary patch literal 2386 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 literal 0 HcmV?d00001 diff --git a/SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/Contents.json b/SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/Contents.json new file mode 100644 index 0000000..89de463 --- /dev/null +++ b/SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_following_big_en.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/btn_following_big_en.png b/SodaLive/Resources/Assets.xcassets/btn_following_big_en.imageset/btn_following_big_en.png new file mode 100644 index 0000000000000000000000000000000000000000..291dfa30cbad13e9c41df2989bb0fbd7f06faafb GIT binary patch literal 3399 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 literal 0 HcmV?d00001 diff --git a/SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/Contents.json b/SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/Contents.json new file mode 100644 index 0000000..ddbcd4f --- /dev/null +++ b/SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "btn_following_no_alarm_big_en.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/btn_following_no_alarm_big_en.png b/SodaLive/Resources/Assets.xcassets/btn_following_no_alarm_big_en.imageset/btn_following_no_alarm_big_en.png new file mode 100644 index 0000000000000000000000000000000000000000..d27c4a02dc0ee63580dfd265d1b51336f9e3f64e GIT binary patch literal 3611 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 literal 0 HcmV?d00001 diff --git a/SodaLive/Sources/Common/FollowButtonImageAsset.swift b/SodaLive/Sources/Common/FollowButtonImageAsset.swift new file mode 100644 index 0000000..4c643ba --- /dev/null +++ b/SodaLive/Sources/Common/FollowButtonImageAsset.swift @@ -0,0 +1,66 @@ +// +// FollowButtonImageAsset.swift +// SodaLive +// +// Created by Codex on 2025/03/15. +// + +import SwiftUI + +enum FollowButtonImageType { + case follow + case following + case followingNoAlarm +} + +struct FollowButtonImageAsset { + let type: FollowButtonImageType + + var imageName: String { + let languageCode = LanguageHeaderProvider.current + let suffix: String + switch languageCode { + case "ja": + suffix = "_ja" + case "en": + suffix = "_en" + default: + suffix = "" + } + + switch type { + case .follow: + return "btn_follow_big\(suffix)" + case .following: + return "btn_following_big\(suffix)" + case .followingNoAlarm: + return "btn_following_no_alarm_big\(suffix)" + } + } + + var size: CGSize? { + let languageCode = LanguageHeaderProvider.current + guard languageCode == "ja" || languageCode == "en" else { return nil } + switch type { + case .follow: + return CGSize(width: 80, height: 26.7) + case .following, .followingNoAlarm: + return CGSize(width: 100, height: 26.7) + } + } + + @ViewBuilder + func imageView(defaultSize: CGSize? = nil) -> some View { + if let size = size { + Image(imageName) + .resizable() + .frame(width: size.width, height: size.height) + } else if let defaultSize = defaultSize { + Image(imageName) + .resizable() + .frame(width: defaultSize.width, height: defaultSize.height) + } else { + Image(imageName) + } + } +} diff --git a/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift b/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift index 21a5111..c11bb35 100644 --- a/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift +++ b/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift @@ -36,12 +36,12 @@ struct ContentDetailCreatorProfileView: View { Spacer() if creator.creatorId != UserDefaults.int(forKey: .userId) { - Image(creator.isFollow ? - creator.isNotify ? - "btn_following_big" : - "btn_following_no_alarm_big" : - "btn_follow_big" + let asset = FollowButtonImageAsset( + type: creator.isFollow + ? (creator.isNotify ? .following : .followingNoAlarm) + : .follow ) + asset.imageView() .onTapGesture { if creator.isFollowing { showCreatorFollowNotifyDialog(creator.creatorId) diff --git a/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift b/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift index a60a0fa..e476737 100644 --- a/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift +++ b/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift @@ -152,13 +152,12 @@ struct SeriesDetailView: View { Spacer() if seriesDetail.creator.creatorId != UserDefaults.int(forKey: .userId) { - Image( - viewModel.isFollow ? - viewModel.isNotify ? - "btn_following_big" : - "btn_following_no_alarm_big" : - "btn_follow_big" + let asset = FollowButtonImageAsset( + type: viewModel.isFollow + ? (viewModel.isNotify ? .following : .followingNoAlarm) + : .follow ) + asset.imageView() .onTapGesture { if viewModel.isFollow { creatorId = seriesDetail.creator.creatorId diff --git a/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift b/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift index 410639e..835c41e 100644 --- a/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift +++ b/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift @@ -41,12 +41,12 @@ struct FollowerListItemView: View { Spacer() if let isFollow = item.isFollow, let isNotify = item.isNotify { - Image(isFollow ? - isNotify ? - "btn_following_big" : - "btn_following_no_alarm_big" : - "btn_follow_big" + let asset = FollowButtonImageAsset( + type: isFollow + ? (isNotify ? .following : .followingNoAlarm) + : .follow ) + asset.imageView() .onTapGesture { isFollow ? showCreatorFollowNotifyDialog(item.userId) : diff --git a/SodaLive/Sources/Explorer/Profile/UserProfileView.swift b/SodaLive/Sources/Explorer/Profile/UserProfileView.swift index 506ca27..52e39e7 100644 --- a/SodaLive/Sources/Explorer/Profile/UserProfileView.swift +++ b/SodaLive/Sources/Explorer/Profile/UserProfileView.swift @@ -47,13 +47,12 @@ struct UserProfileView: View { .foregroundColor(.white) if creatorProfile.creator.creatorId != UserDefaults.int(forKey: .userId) { - Image( - creatorProfile.creator.isFollow ? - creatorProfile.creator.isNotify ? "btn_following_big": "btn_following_no_alarm_big" - : "btn_follow_big" + let asset = FollowButtonImageAsset( + type: creatorProfile.creator.isFollow + ? (creatorProfile.creator.isNotify ? .following : .followingNoAlarm) + : .follow ) - .resizable() - .frame(width: 83.3, height: 26.7) + asset.imageView(defaultSize: CGSize(width: 83.3, height: 26.7)) .onTapGesture { if creatorProfile.creator.isFollow { isShowFollowNotifyDialog = true diff --git a/SodaLive/Sources/Follow/FollowCreatorItemView.swift b/SodaLive/Sources/Follow/FollowCreatorItemView.swift index 184e8dd..545106e 100644 --- a/SodaLive/Sources/Follow/FollowCreatorItemView.swift +++ b/SodaLive/Sources/Follow/FollowCreatorItemView.swift @@ -36,13 +36,12 @@ struct FollowCreatorItemView: View { Spacer() - Image( - creator.isFollow ? - creator.isNotify ? - "btn_following_big" : - "btn_following_no_alarm_big" : - "btn_follow_big" + let asset = FollowButtonImageAsset( + type: creator.isFollow + ? (creator.isNotify ? .following : .followingNoAlarm) + : .follow ) + asset.imageView() .onTapGesture { if creator.isFollow { showCreatorFollowNotifyDialog(creator.creatorId)