From 9a461f14ade45576dfc72e3ce23d42acf2ffe236 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Fri, 11 Oct 2024 18:16:24 +0900 Subject: [PATCH] =?UTF-8?q?KFImage=EB=A5=BC=20=EC=9D=B4=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EB=B6=88=EB=9F=AC=EC=98=A4=EB=8A=94=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EB=8B=A4=EC=9A=B4=EC=83=98=ED=94=8C?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Content/All/ContentNewAllItemView.swift | 14 +++++++++++++ .../Content/All/ContentRankingAllView.swift | 7 +++++++ .../Sources/Content/ContentListItemView.swift | 2 ++ .../Create/ContentCreateSelectThemeView.swift | 7 +++++++ .../Content/Create/ContentCreateView.swift | 7 +++++++ .../Comment/AudioContentCommentItemView.swift | 7 +++++++ .../Detail/ContentDetailAnotherItemView.swift | 7 +++++++ .../ContentDetailCreatorProfileView.swift | 7 +++++++ .../Detail/ContentDetailPlayView.swift | 7 +++++++ .../ContentOrderConfirmDialogView.swift | 13 ++++++++++++ .../Main/Banner/ContentMainBannerView.swift | 14 +++++++++++++ .../Content/Main/ContentMainItemView.swift | 14 +++++++++++++ .../Main/Ranking/ContentMainRankingView.swift | 7 +++++++ .../Content/Modify/ContentModifyView.swift | 7 +++++++ .../Content/SeriesContentListItemView.swift | 2 ++ .../Series/Detail/SeriesDetailView.swift | 14 +++++++++++++ .../Sources/Dialog/MemberProfileDialog.swift | 7 +++++++ .../CreatorCommunityCommentItemView.swift | 7 +++++++ .../Comment/CreatorCommunityCommentView.swift | 14 +++++++++++++ .../All/CreatorCommunityAllItemView.swift | 7 +++++++ .../CreatorCommunityItemView.swift | 14 +++++++++++++ .../Modify/CreatorCommunityModifyView.swift | 7 +++++++ .../FollowerList/FollowerListItemView.swift | 7 +++++++ .../Profile/UserProfileCreatorView.swift | 7 +++++++ .../Profile/UserProfileDonationView.swift | 7 +++++++ .../Profile/UserProfileLiveView.swift | 7 +++++++ .../Follow/FollowCreatorItemView.swift | 7 +++++++ .../EventBanner/SectionEventBannerView.swift | 14 +++++++++++++ .../Live/Now/All/LiveNowAllItemView.swift | 14 +++++++++++++ .../Sources/Live/Now/LiveNowItemView.swift | 14 +++++++++++++ .../Recommend/SectionRecommendLiveView.swift | 14 +++++++++++++ .../SectionRecommendChannelView.swift | 7 +++++++ .../All/LiveReservationAllItemView.swift | 7 +++++++ .../Reservation/LiveReservationItemView.swift | 7 +++++++ .../MyLiveReservationItemView.swift | 7 +++++++ .../Live/Room/Chat/LiveRoomChatItemView.swift | 7 +++++++ .../Chat/LiveRoomDonationChatItemView.swift | 7 +++++++ ...LiveRoomRouletteDonationChatItemView.swift | 7 +++++++ .../Live/Room/Create/LiveRoomCreateView.swift | 7 +++++++ .../Create/Tag/LiveRoomCreateTagView.swift | 7 +++++++ .../Live/Room/Detail/LiveDetailView.swift | 21 +++++++++++++++++++ .../Room/Dialog/LiveRoomInfoEditDialog.swift | 7 +++++++ .../Dialog/LiveRoomNoChattingDialogView.swift | 7 +++++++ .../Room/Dialog/LiveRoomProfileDialog.swift | 7 +++++++ .../Dialog/LiveRoomProfileItemTitleView.swift | 14 +++++++++++++ .../Live/Room/LiveRoomTopCreatorView.swift | 7 +++++++ .../View/LiveRoomInfoCreatorView.swift | 7 +++++++ .../View/LiveRoomInfoSpeakerView.swift | 7 +++++++ .../Sources/Main/EventPopupDialogView.swift | 7 +++++++ SodaLive/Sources/Main/Home/HomeView.swift | 7 +++++++ .../Text/Detail/TextMessageDetailView.swift | 7 +++++++ .../SelectRecipient/SelectRecipientView.swift | 7 +++++++ .../Message/Text/TextMessageItemView.swift | 7 +++++++ .../Message/Voice/VoiceMessageItemView.swift | 7 +++++++ .../Block/BlockedMemberListItemView.swift | 7 +++++++ SodaLive/Sources/MyPage/MyInfoCardView.swift | 7 +++++++ .../MyPage/OrderList/OrderListItemView.swift | 7 +++++++ .../MyPage/Profile/ProfileUpdateView.swift | 7 +++++++ .../MyPage/Profile/Tag/MemberTagView.swift | 7 +++++++ .../Cancel/LiveReservationCancelView.swift | 7 +++++++ .../LiveReservationStatusItemView.swift | 7 +++++++ .../Settings/Event/EventListView.swift | 7 +++++++ .../UI/Component/SeriesListBigItemView.swift | 4 ++++ .../UI/Component/SeriesListItemView.swift | 2 ++ 64 files changed, 527 insertions(+) diff --git a/SodaLive/Sources/Content/All/ContentNewAllItemView.swift b/SodaLive/Sources/Content/All/ContentNewAllItemView.swift index f51b894..10f0220 100644 --- a/SodaLive/Sources/Content/All/ContentNewAllItemView.swift +++ b/SodaLive/Sources/Content/All/ContentNewAllItemView.swift @@ -21,6 +21,13 @@ struct ContentNewAllItemView: View { VStack(alignment: .leading, spacing: 8) { ZStack(alignment: .bottom) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: width, + height: width + ) + ) .resizable() .scaledToFill() .frame(width: width, height: width, alignment: .top) @@ -76,6 +83,13 @@ struct ContentNewAllItemView: View { HStack(spacing: 5.3) { KFImage(URL(string: item.creatorProfileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 21.3, + height: 21.3 + ) + ) .resizable() .scaledToFill() .frame(width: 21.3, height: 21.3) diff --git a/SodaLive/Sources/Content/All/ContentRankingAllView.swift b/SodaLive/Sources/Content/All/ContentRankingAllView.swift index d09a09c..eb7f999 100644 --- a/SodaLive/Sources/Content/All/ContentRankingAllView.swift +++ b/SodaLive/Sources/Content/All/ContentRankingAllView.swift @@ -49,6 +49,13 @@ struct ContentRankingAllView: View { } label: { HStack(spacing: 0) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 66.7, + height: 66.7 + ) + ) .resizable() .scaledToFill() .frame(width: 66.7, height: 66.7, alignment: .top) diff --git a/SodaLive/Sources/Content/ContentListItemView.swift b/SodaLive/Sources/Content/ContentListItemView.swift index ed4306f..9f62f61 100644 --- a/SodaLive/Sources/Content/ContentListItemView.swift +++ b/SodaLive/Sources/Content/ContentListItemView.swift @@ -17,6 +17,8 @@ struct ContentListItemView: View { HStack(spacing: 0) { ZStack(alignment: .topLeading) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: 66.7, height: 66.7)) .resizable() .scaledToFill() .frame(width: 66.7, height: 66.7, alignment: .top) diff --git a/SodaLive/Sources/Content/Create/ContentCreateSelectThemeView.swift b/SodaLive/Sources/Content/Create/ContentCreateSelectThemeView.swift index 471a535..ce202e2 100644 --- a/SodaLive/Sources/Content/Create/ContentCreateSelectThemeView.swift +++ b/SodaLive/Sources/Content/Create/ContentCreateSelectThemeView.swift @@ -47,6 +47,13 @@ struct ContentCreateSelectThemeView: View { ForEach(viewModel.themes, id: \.self) { theme in VStack(spacing: 16.7) { KFImage(URL(string: theme.image)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .scaledToFill() .frame(width: 60, height: 60, alignment: .top) diff --git a/SodaLive/Sources/Content/Create/ContentCreateView.swift b/SodaLive/Sources/Content/Create/ContentCreateView.swift index cb2cb6e..80f51b1 100644 --- a/SodaLive/Sources/Content/Create/ContentCreateView.swift +++ b/SodaLive/Sources/Content/Create/ContentCreateView.swift @@ -143,6 +143,13 @@ struct ContentCreateView: View { HStack(spacing: 13.3) { if let theme = viewModel.theme { KFImage(URL(string: theme.image)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 33.3, + height: 33.3 + ) + ) .resizable() .frame(width: 33.3, height: 33.3) .clipShape(Circle()) diff --git a/SodaLive/Sources/Content/Detail/Comment/AudioContentCommentItemView.swift b/SodaLive/Sources/Content/Detail/Comment/AudioContentCommentItemView.swift index 30c8309..2f06823 100644 --- a/SodaLive/Sources/Content/Detail/Comment/AudioContentCommentItemView.swift +++ b/SodaLive/Sources/Content/Detail/Comment/AudioContentCommentItemView.swift @@ -28,6 +28,13 @@ struct AudioContentCommentItemView: View { VStack(alignment: .leading, spacing: 0) { HStack(spacing: 6.7) { KFImage(URL(string: commentItem.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 40, + height: 40 + ) + ) .resizable() .frame(width: 40, height: 40) .clipShape(Circle()) diff --git a/SodaLive/Sources/Content/Detail/ContentDetailAnotherItemView.swift b/SodaLive/Sources/Content/Detail/ContentDetailAnotherItemView.swift index e2f775c..8310eff 100644 --- a/SodaLive/Sources/Content/Detail/ContentDetailAnotherItemView.swift +++ b/SodaLive/Sources/Content/Detail/ContentDetailAnotherItemView.swift @@ -15,6 +15,13 @@ struct ContentDetailAnotherItemView: View { var body: some View { VStack(alignment: .leading, spacing: 8) { KFImage(URL(string: item.coverUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 93.3, + height: 93.3 + ) + ) .resizable() .frame(width: 93.3, height: 93.3, alignment: .center) .clipped() diff --git a/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift b/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift index ff8f30c..21a5111 100644 --- a/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift +++ b/SodaLive/Sources/Content/Detail/ContentDetailCreatorProfileView.swift @@ -17,6 +17,13 @@ struct ContentDetailCreatorProfileView: View { var body: some View { HStack(spacing: 0) { KFImage(URL(string: creator.profileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 26.7, + height: 26.7 + ) + ) .resizable() .frame(width: 26.7, height: 26.7) .clipShape(Circle()) diff --git a/SodaLive/Sources/Content/Detail/ContentDetailPlayView.swift b/SodaLive/Sources/Content/Detail/ContentDetailPlayView.swift index 3c32b5f..089aa03 100644 --- a/SodaLive/Sources/Content/Detail/ContentDetailPlayView.swift +++ b/SodaLive/Sources/Content/Detail/ContentDetailPlayView.swift @@ -26,6 +26,13 @@ struct ContentDetailPlayView: View { VStack(alignment: .leading, spacing: 8) { ZStack { KFImage(URL(string: audioContent.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 26.7, + height: screenSize().width - 26.7 + ) + ) .resizable() .scaledToFill() .frame( diff --git a/SodaLive/Sources/Content/Detail/ContentOrderConfirmDialogView.swift b/SodaLive/Sources/Content/Detail/ContentOrderConfirmDialogView.swift index 2992803..59296be 100644 --- a/SodaLive/Sources/Content/Detail/ContentOrderConfirmDialogView.swift +++ b/SodaLive/Sources/Content/Detail/ContentOrderConfirmDialogView.swift @@ -32,6 +32,13 @@ struct ContentOrderConfirmDialogView: View { HStack(spacing: 11) { ZStack(alignment: .topLeading) { KFImage(URL(string: audioContent.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 88.7, + height: 88.7 + ) + ) .resizable() .frame(width: 88.7, height: 88.7, alignment: .center) .clipped() @@ -54,6 +61,12 @@ struct ContentOrderConfirmDialogView: View { HStack(spacing: 4.3) { KFImage(URL(string: audioContent.creator.profileImageUrl)) .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 13.3, + height: 13.3 + ) + ) .resizable() .frame(width: 13.3, height: 13.3) .clipShape(Circle()) diff --git a/SodaLive/Sources/Content/Main/Banner/ContentMainBannerView.swift b/SodaLive/Sources/Content/Main/Banner/ContentMainBannerView.swift index 98e3052..a3dbbc6 100644 --- a/SodaLive/Sources/Content/Main/Banner/ContentMainBannerView.swift +++ b/SodaLive/Sources/Content/Main/Banner/ContentMainBannerView.swift @@ -21,6 +21,13 @@ struct ContentMainBannerView: View { let item = viewModel.bannerList[index] if let url = item.thumbnailImageUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { KFImage(URL(string: url)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 26.7, + height: (screenSize().width - 26.7) * 0.53 + ) + ) .resizable() .scaledToFill() .frame( @@ -42,6 +49,13 @@ struct ContentMainBannerView: View { .cornerRadius(4.7) } else { KFImage(URL(string: item.thumbnailImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 26.7, + height: (screenSize().width - 26.7) * 0.53 + ) + ) .resizable() .scaledToFill() .frame( diff --git a/SodaLive/Sources/Content/Main/ContentMainItemView.swift b/SodaLive/Sources/Content/Main/ContentMainItemView.swift index 3d90f19..2f51d5e 100644 --- a/SodaLive/Sources/Content/Main/ContentMainItemView.swift +++ b/SodaLive/Sources/Content/Main/ContentMainItemView.swift @@ -16,6 +16,13 @@ struct ContentMainItemView: View { VStack(alignment: .leading, spacing: 8) { ZStack(alignment: .topLeading) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 133.3, + height: 133.3 + ) + ) .resizable() .scaledToFill() .frame(width: 133.3, height: 133.3, alignment: .top) @@ -32,6 +39,13 @@ struct ContentMainItemView: View { HStack(spacing: 5.3) { KFImage(URL(string: item.creatorProfileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 21.3, + height: 21.3 + ) + ) .resizable() .scaledToFill() .frame(width: 21.3, height: 21.3) diff --git a/SodaLive/Sources/Content/Main/Ranking/ContentMainRankingView.swift b/SodaLive/Sources/Content/Main/Ranking/ContentMainRankingView.swift index 31d13d0..1a51995 100644 --- a/SodaLive/Sources/Content/Main/Ranking/ContentMainRankingView.swift +++ b/SodaLive/Sources/Content/Main/Ranking/ContentMainRankingView.swift @@ -60,6 +60,13 @@ struct ContentMainRankingView: View { let content = viewModel.contentRankingItemList[index] HStack(spacing: 0) { KFImage(URL(string: content.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .frame(width: 60, height: 60) .cornerRadius(2.7) diff --git a/SodaLive/Sources/Content/Modify/ContentModifyView.swift b/SodaLive/Sources/Content/Modify/ContentModifyView.swift index 7369d54..a4b653c 100644 --- a/SodaLive/Sources/Content/Modify/ContentModifyView.swift +++ b/SodaLive/Sources/Content/Modify/ContentModifyView.swift @@ -41,6 +41,13 @@ struct ContentModifyView: View { .clipped() } else if let coverImageUrl = viewModel.coverImageUrl { KFImage(URL(string: coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 107, + height: 107 + ) + ) .resizable() .scaledToFill() .frame(width: 107, height: 107) diff --git a/SodaLive/Sources/Content/Series/Content/SeriesContentListItemView.swift b/SodaLive/Sources/Content/Series/Content/SeriesContentListItemView.swift index 8627a80..f3458cd 100644 --- a/SodaLive/Sources/Content/Series/Content/SeriesContentListItemView.swift +++ b/SodaLive/Sources/Content/Series/Content/SeriesContentListItemView.swift @@ -16,6 +16,8 @@ struct SeriesContentListItemView: View { VStack(spacing: 12) { HStack(spacing: 11) { KFImage(URL(string: item.coverImage)) + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: 66.7, height: 66.7)) .resizable() .scaledToFill() .frame(width: 66.7, height: 66.7) diff --git a/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift b/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift index 0ccdc83..3b60efc 100644 --- a/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift +++ b/SodaLive/Sources/Content/Series/Detail/SeriesDetailView.swift @@ -50,6 +50,13 @@ struct SeriesDetailView: View { .padding(.top, 94) KFImage(URL(string: seriesDetail.coverImage)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 400 * screenSize().width / 1080, + height: 564 * screenSize().width / 1080 + ) + ) .resizable() .scaledToFill() .frame( @@ -113,6 +120,13 @@ struct SeriesDetailView: View { HStack(spacing: 5.3) { KFImage(URL(string: seriesDetail.creator.profileImage)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 26.7, + height: 26.7 + ) + ) .resizable() .scaledToFit() .clipShape(Circle()) diff --git a/SodaLive/Sources/Dialog/MemberProfileDialog.swift b/SodaLive/Sources/Dialog/MemberProfileDialog.swift index e1ddba4..74b1b5f 100644 --- a/SodaLive/Sources/Dialog/MemberProfileDialog.swift +++ b/SodaLive/Sources/Dialog/MemberProfileDialog.swift @@ -42,6 +42,13 @@ struct MemberProfileDialog: View { .foregroundColor(Color.grayee) KFImage(URL(string: profile.profileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 66.7, + height: screenSize().width - 66.7 + ) + ) .resizable() .frame(maxWidth: screenSize().width - 66.7, maxHeight: screenSize().width - 66.7) .aspectRatio(CGSize(width: 1, height: 1), contentMode: .fit) diff --git a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentItemView.swift b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentItemView.swift index d76857f..8b4bad8 100644 --- a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentItemView.swift +++ b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentItemView.swift @@ -28,6 +28,13 @@ struct CreatorCommunityCommentItemView: View { VStack(alignment: .leading, spacing: 0) { HStack(spacing: 6.7) { KFImage(URL(string: commentItem.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 40, + height: 40 + ) + ) .resizable() .frame(width: 40, height: 40) .clipShape(Circle()) diff --git a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentView.swift b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentView.swift index c71ae80..50c2f23 100644 --- a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentView.swift +++ b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/Comment/CreatorCommunityCommentView.swift @@ -33,6 +33,13 @@ struct CreatorCommunityCommentView: View { HStack(spacing: 8) { if let comment = commentItem { KFImage(URL(string: comment.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 33.3, + height: 33.3 + ) + ) .resizable() .frame(width: 33.3, height: 33.3) .clipShape(Circle()) @@ -44,6 +51,13 @@ struct CreatorCommunityCommentView: View { .padding(.leading, 3) } else { KFImage(URL(string: UserDefaults.string(forKey: .profileImage))) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 33.3, + height: 33.3 + ) + ) .resizable() .frame(width: 33.3, height: 33.3) .clipShape(Circle()) diff --git a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllItemView.swift b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllItemView.swift index 9a7cfaf..cd6f6bf 100644 --- a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllItemView.swift +++ b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllItemView.swift @@ -47,6 +47,13 @@ struct CreatorCommunityAllItemView: View { VStack(spacing: 13.3) { HStack(spacing: 0) { KFImage(URL(string: item.creatorProfileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 40, + height: 40 + ) + ) .resizable() .frame(width: 40, height: 40) .clipShape(Circle()) diff --git a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift index 9afad2d..1a2dc43 100644 --- a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift +++ b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift @@ -16,6 +16,13 @@ struct CreatorCommunityItemView: View { VStack(alignment: .leading, spacing: 8) { HStack(spacing: 11) { KFImage(URL(string: item.creatorProfileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 40, + height: 40 + ) + ) .resizable() .frame(width: 40, height: 40) .clipShape(Circle()) @@ -42,6 +49,13 @@ struct CreatorCommunityItemView: View { if let imageUrl = item.imageUrl { KFImage(URL(string: imageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 53.3, + height: 53.3 + ) + ) .resizable() .frame(width: 53.3, height: 53.3) .cornerRadius(4.7) diff --git a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/Modify/CreatorCommunityModifyView.swift b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/Modify/CreatorCommunityModifyView.swift index 3db9527..8c698b7 100644 --- a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/Modify/CreatorCommunityModifyView.swift +++ b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/Modify/CreatorCommunityModifyView.swift @@ -43,6 +43,13 @@ struct CreatorCommunityModifyView: View { .clipped() } else if let postImageUrl = viewModel.postImageUrl { KFImage(URL(string: postImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 107, + height: 107 + ) + ) .resizable() .scaledToFill() .frame(width: 107, height: 107) diff --git a/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift b/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift index eee31d3..29b5f60 100644 --- a/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift +++ b/SodaLive/Sources/Explorer/Profile/FollowerList/FollowerListItemView.swift @@ -18,6 +18,13 @@ struct FollowerListItemView: View { VStack(spacing: 13.3) { HStack(spacing: 0) { KFImage(URL(string: item.profileImage)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .frame(width: 60, height: 60) .clipShape(Circle()) diff --git a/SodaLive/Sources/Explorer/Profile/UserProfileCreatorView.swift b/SodaLive/Sources/Explorer/Profile/UserProfileCreatorView.swift index e366135..80c422c 100644 --- a/SodaLive/Sources/Explorer/Profile/UserProfileCreatorView.swift +++ b/SodaLive/Sources/Explorer/Profile/UserProfileCreatorView.swift @@ -20,6 +20,13 @@ struct UserProfileCreatorView: View { VStack(alignment: .leading, spacing: 0) { HStack(spacing: 20) { KFImage(URL(string: creator.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 90, + height: 90 + ) + ) .resizable() .scaledToFill() .frame(width: 90, height: 90) diff --git a/SodaLive/Sources/Explorer/Profile/UserProfileDonationView.swift b/SodaLive/Sources/Explorer/Profile/UserProfileDonationView.swift index 3a48f27..3bcbc6d 100644 --- a/SodaLive/Sources/Explorer/Profile/UserProfileDonationView.swift +++ b/SodaLive/Sources/Explorer/Profile/UserProfileDonationView.swift @@ -44,6 +44,13 @@ struct UserProfileDonationView: View { VStack(spacing: 6.7) { ZStack { KFImage(URL(string: item.profileImage)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .scaledToFill() .frame(width: 60, height: 60, alignment: .top) diff --git a/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift b/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift index 9e97797..ccc7750 100644 --- a/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift +++ b/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift @@ -23,6 +23,13 @@ struct UserProfileLiveView: View { HStack(spacing: 20) { ZStack(alignment: .topLeading) { KFImage(URL(string: liveRoom.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116.7 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116.7, alignment: .center) diff --git a/SodaLive/Sources/Follow/FollowCreatorItemView.swift b/SodaLive/Sources/Follow/FollowCreatorItemView.swift index cf39e65..184e8dd 100644 --- a/SodaLive/Sources/Follow/FollowCreatorItemView.swift +++ b/SodaLive/Sources/Follow/FollowCreatorItemView.swift @@ -18,6 +18,13 @@ struct FollowCreatorItemView: View { VStack(spacing: 13.3) { HStack(spacing: 0) { KFImage(URL(string: creator.profileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .frame(width: 60, height: 60) .clipShape(Circle()) diff --git a/SodaLive/Sources/Live/EventBanner/SectionEventBannerView.swift b/SodaLive/Sources/Live/EventBanner/SectionEventBannerView.swift index fd641dc..6453e17 100644 --- a/SodaLive/Sources/Live/EventBanner/SectionEventBannerView.swift +++ b/SodaLive/Sources/Live/EventBanner/SectionEventBannerView.swift @@ -23,6 +23,13 @@ struct SectionEventBannerView: View { let item = items[index] if let url = item.thumbnailImageUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { KFImage(URL(string: url)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: proxy.size.width, + height: proxy.size.height + ) + ) .resizable() .frame(width: proxy.size.width, height: proxy.size.height, alignment: .center) .tag(index) @@ -35,6 +42,13 @@ struct SectionEventBannerView: View { } } else { KFImage(URL(string: item.thumbnailImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: proxy.size.width, + height: proxy.size.height + ) + ) .resizable() .frame(width: proxy.size.width, height: proxy.size.height, alignment: .center) .tag(index) diff --git a/SodaLive/Sources/Live/Now/All/LiveNowAllItemView.swift b/SodaLive/Sources/Live/Now/All/LiveNowAllItemView.swift index 8ffbb48..88be69b 100644 --- a/SodaLive/Sources/Live/Now/All/LiveNowAllItemView.swift +++ b/SodaLive/Sources/Live/Now/All/LiveNowAllItemView.swift @@ -17,6 +17,13 @@ struct LiveNowAllItemView: View { VStack(alignment: .leading, spacing: 8) { ZStack { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: itemWidth, + height: itemWidth * 144 / 102 + ) + ) .resizable() .scaledToFill() .frame(width: itemWidth, height: itemWidth * 144 / 102, alignment: .center) @@ -100,6 +107,13 @@ struct LiveNowAllItemView: View { HStack(spacing: 5.3) { KFImage(URL(string: item.creatorProfileImage)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 21.3, + height: 21.3 + ) + ) .resizable() .scaledToFill() .frame(width: 21.3, height: 21.3, alignment: .center) diff --git a/SodaLive/Sources/Live/Now/LiveNowItemView.swift b/SodaLive/Sources/Live/Now/LiveNowItemView.swift index 1f12eae..f2ee24d 100644 --- a/SodaLive/Sources/Live/Now/LiveNowItemView.swift +++ b/SodaLive/Sources/Live/Now/LiveNowItemView.swift @@ -19,6 +19,13 @@ struct LiveNowItemView: View { VStack(alignment: .leading, spacing: 8) { ZStack { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: width, + height: height + ) + ) .resizable() .scaledToFill() .frame(width: width, height: height, alignment: .center) @@ -80,6 +87,13 @@ struct LiveNowItemView: View { HStack(spacing: 5.3) { KFImage(URL(string: item.creatorProfileImage)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 21.3, + height: 21.3 + ) + ) .resizable() .scaledToFill() .frame(width: 21.3, height: 21.3, alignment: .center) diff --git a/SodaLive/Sources/Live/Recommend/SectionRecommendLiveView.swift b/SodaLive/Sources/Live/Recommend/SectionRecommendLiveView.swift index 78064b5..c8c4a1f 100644 --- a/SodaLive/Sources/Live/Recommend/SectionRecommendLiveView.swift +++ b/SodaLive/Sources/Live/Recommend/SectionRecommendLiveView.swift @@ -32,6 +32,13 @@ struct SectionRecommendLiveView: View { let item = items[index] if let url = item.imageUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { KFImage(URL(string: url)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 26.7, + height: (screenSize().width - 26.7) * 0.53 + ) + ) .resizable() .scaledToFill() .frame( @@ -44,6 +51,13 @@ struct SectionRecommendLiveView: View { .cornerRadius(4.7) } else { KFImage(URL(string: item.imageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 26.7, + height: (screenSize().width - 26.7) * 0.53 + ) + ) .resizable() .scaledToFill() .frame( diff --git a/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift b/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift index 18fd3ed..1d4c0a7 100644 --- a/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift +++ b/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift @@ -55,6 +55,13 @@ struct SectionRecommendChannelView: View { VStack(spacing: 13.3) { ZStack(alignment: .bottom) { KFImage(URL(string: item.profileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width * 0.18, + height: screenSize().width * 0.18 + ) + ) .resizable() .scaledToFill() .frame(width: screenSize().width * 0.18, height: screenSize().width * 0.18, alignment: .center) diff --git a/SodaLive/Sources/Live/Reservation/All/LiveReservationAllItemView.swift b/SodaLive/Sources/Live/Reservation/All/LiveReservationAllItemView.swift index 21e94e3..2b53c86 100644 --- a/SodaLive/Sources/Live/Reservation/All/LiveReservationAllItemView.swift +++ b/SodaLive/Sources/Live/Reservation/All/LiveReservationAllItemView.swift @@ -17,6 +17,13 @@ struct LiveReservationAllItemView: View { HStack(spacing: 20) { ZStack(alignment: .topLeading) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116.7, alignment: .top) diff --git a/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift b/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift index 302d7f1..556e03b 100644 --- a/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift +++ b/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift @@ -17,6 +17,13 @@ struct LiveReservationItemView: View { HStack(spacing: 20) { ZStack(alignment: .topLeading) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116, alignment: .top) diff --git a/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift b/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift index bcae61c..0685711 100644 --- a/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift +++ b/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift @@ -29,6 +29,13 @@ struct MyLiveReservationItemView: View { HStack(alignment: .top, spacing: 20) { ZStack(alignment: .topLeading) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116, alignment: .top) diff --git a/SodaLive/Sources/Live/Room/Chat/LiveRoomChatItemView.swift b/SodaLive/Sources/Live/Room/Chat/LiveRoomChatItemView.swift index c7d706c..afca4ab 100644 --- a/SodaLive/Sources/Live/Room/Chat/LiveRoomChatItemView.swift +++ b/SodaLive/Sources/Live/Room/Chat/LiveRoomChatItemView.swift @@ -49,6 +49,13 @@ struct LiveRoomChatItemView: View { } KFImage(URL(string: chatMessage.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 30, + height: 30 + ) + ) .resizable() .scaledToFill() .frame(width: 30, height: 30, alignment: .top) diff --git a/SodaLive/Sources/Live/Room/Chat/LiveRoomDonationChatItemView.swift b/SodaLive/Sources/Live/Room/Chat/LiveRoomDonationChatItemView.swift index b05beb8..c0e5751 100644 --- a/SodaLive/Sources/Live/Room/Chat/LiveRoomDonationChatItemView.swift +++ b/SodaLive/Sources/Live/Room/Chat/LiveRoomDonationChatItemView.swift @@ -16,6 +16,13 @@ struct LiveRoomDonationChatItemView: View { HStack(spacing: 13.3) { ZStack(alignment: .bottomTrailing) { KFImage(URL(string: chatMessage.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 33.3, + height: 33.3 + ) + ) .resizable() .scaledToFill() .frame(width: 33.3, height: 33.3, alignment: .top) diff --git a/SodaLive/Sources/Live/Room/Chat/LiveRoomRouletteDonationChatItemView.swift b/SodaLive/Sources/Live/Room/Chat/LiveRoomRouletteDonationChatItemView.swift index 33f0b1e..b953c99 100644 --- a/SodaLive/Sources/Live/Room/Chat/LiveRoomRouletteDonationChatItemView.swift +++ b/SodaLive/Sources/Live/Room/Chat/LiveRoomRouletteDonationChatItemView.swift @@ -16,6 +16,13 @@ struct LiveRoomRouletteDonationChatItemView: View { HStack(spacing: 13.3) { ZStack(alignment: .bottomTrailing) { KFImage(URL(string: chatMessage.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 33.3, + height: 33.3 + ) + ) .resizable() .scaledToFill() .frame(width: 33.3, height: 33.3, alignment: .top) diff --git a/SodaLive/Sources/Live/Room/Create/LiveRoomCreateView.swift b/SodaLive/Sources/Live/Room/Create/LiveRoomCreateView.swift index c7ef901..3cf8f0b 100644 --- a/SodaLive/Sources/Live/Room/Create/LiveRoomCreateView.swift +++ b/SodaLive/Sources/Live/Room/Create/LiveRoomCreateView.swift @@ -85,6 +85,13 @@ struct LiveRoomCreateView: View { .cornerRadius(10) } else if let coverImageUrl = viewModel.coverImageUrl { KFImage(URL(string: coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116.8 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116.8, alignment: .top) diff --git a/SodaLive/Sources/Live/Room/Create/Tag/LiveRoomCreateTagView.swift b/SodaLive/Sources/Live/Room/Create/Tag/LiveRoomCreateTagView.swift index 6b8cddd..c074012 100644 --- a/SodaLive/Sources/Live/Room/Create/Tag/LiveRoomCreateTagView.swift +++ b/SodaLive/Sources/Live/Room/Create/Tag/LiveRoomCreateTagView.swift @@ -56,6 +56,13 @@ struct LiveRoomCreateTagView: View { VStack(spacing: 16.7) { ZStack { KFImage(URL(string: tag.image)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .scaledToFill() .frame(width: 60, height: 60, alignment: .top) diff --git a/SodaLive/Sources/Live/Room/Detail/LiveDetailView.swift b/SodaLive/Sources/Live/Room/Detail/LiveDetailView.swift index f306c67..b4bfdcb 100644 --- a/SodaLive/Sources/Live/Room/Detail/LiveDetailView.swift +++ b/SodaLive/Sources/Live/Room/Detail/LiveDetailView.swift @@ -138,6 +138,13 @@ struct LiveDetailView: View { let manager = room.manager KFImage(URL(string: manager.profileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .scaledToFill() .frame(width: 60, height: 60, alignment: .top) @@ -427,6 +434,13 @@ struct LiveDetailView: View { ForEach(room.participatingUsers, id: \.self) { user in VStack(spacing: 6.7) { KFImage(URL(string: user.profileImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 46.7, + height: 46.7 + ) + ) .resizable() .scaledToFill() .frame(width: 46.7, height: 46.7, alignment: .top) @@ -447,6 +461,13 @@ struct LiveDetailView: View { ForEach(0.. 0 { KFImage(URL(string: profileResponse.profileUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 80 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 80, alignment: .top) diff --git a/SodaLive/Sources/MyPage/Profile/Tag/MemberTagView.swift b/SodaLive/Sources/MyPage/Profile/Tag/MemberTagView.swift index dab9ff5..0fe4302 100644 --- a/SodaLive/Sources/MyPage/Profile/Tag/MemberTagView.swift +++ b/SodaLive/Sources/MyPage/Profile/Tag/MemberTagView.swift @@ -51,6 +51,13 @@ struct MemberTagView: View { VStack(spacing: 16.7) { ZStack { KFImage(URL(string: tag.image)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 60, + height: 60 + ) + ) .resizable() .scaledToFill() .frame(width: 60, height: 60, alignment: .top) diff --git a/SodaLive/Sources/MyPage/ReservationStatus/Cancel/LiveReservationCancelView.swift b/SodaLive/Sources/MyPage/ReservationStatus/Cancel/LiveReservationCancelView.swift index 9f1baa1..ee94342 100644 --- a/SodaLive/Sources/MyPage/ReservationStatus/Cancel/LiveReservationCancelView.swift +++ b/SodaLive/Sources/MyPage/ReservationStatus/Cancel/LiveReservationCancelView.swift @@ -72,6 +72,13 @@ struct LiveReservationCancelView: View { } else { HStack(spacing: 20) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116.7 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116.7, alignment: .top) diff --git a/SodaLive/Sources/MyPage/ReservationStatus/LiveReservationStatusItemView.swift b/SodaLive/Sources/MyPage/ReservationStatus/LiveReservationStatusItemView.swift index 415d792..8cebd1f 100644 --- a/SodaLive/Sources/MyPage/ReservationStatus/LiveReservationStatusItemView.swift +++ b/SodaLive/Sources/MyPage/ReservationStatus/LiveReservationStatusItemView.swift @@ -15,6 +15,13 @@ struct LiveReservationStatusItemView: View { var body: some View { HStack(spacing: 0) { KFImage(URL(string: item.coverImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: 80, + height: 116.7 + ) + ) .resizable() .scaledToFill() .frame(width: 80, height: 116.7, alignment: .top) diff --git a/SodaLive/Sources/Settings/Event/EventListView.swift b/SodaLive/Sources/Settings/Event/EventListView.swift index a1048c8..ec08239 100644 --- a/SodaLive/Sources/Settings/Event/EventListView.swift +++ b/SodaLive/Sources/Settings/Event/EventListView.swift @@ -21,6 +21,13 @@ struct EventListView: View { VStack(spacing: 0) { ForEach(viewModel.events, id: \.self) { event in KFImage(URL(string: event.thumbnailImageUrl)) + .cancelOnDisappear(true) + .downsampling( + size: CGSize( + width: screenSize().width - 26.7, + height: (screenSize().width - 26.7) * 300 / 1000 + ) + ) .resizable() .scaledToFill() .frame( diff --git a/SodaLive/Sources/UI/Component/SeriesListBigItemView.swift b/SodaLive/Sources/UI/Component/SeriesListBigItemView.swift index 339044b..bdd2a03 100644 --- a/SodaLive/Sources/UI/Component/SeriesListBigItemView.swift +++ b/SodaLive/Sources/UI/Component/SeriesListBigItemView.swift @@ -18,6 +18,8 @@ struct SeriesListBigItemView: View { VStack(alignment: .leading, spacing: 8) { ZStack { KFImage(URL(string: item.coverImage)) + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: 116.7, height: 165)) .resizable() .scaledToFill() .frame(width: 116.7, height: 165, alignment: .center) @@ -65,6 +67,8 @@ struct SeriesListBigItemView: View { if isVisibleCreator { HStack(spacing: 3) { KFImage(URL(string: item.creator.profileImage)) + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: 16, height: 16)) .resizable() .scaledToFill() .frame(width: 16, height: 16, alignment: .center) diff --git a/SodaLive/Sources/UI/Component/SeriesListItemView.swift b/SodaLive/Sources/UI/Component/SeriesListItemView.swift index 7e5da33..cc41c1a 100644 --- a/SodaLive/Sources/UI/Component/SeriesListItemView.swift +++ b/SodaLive/Sources/UI/Component/SeriesListItemView.swift @@ -18,6 +18,8 @@ struct SeriesListItemView: View { VStack(alignment: .leading, spacing: 8) { ZStack { KFImage(URL(string: item.coverImage)) + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: itemWidth, height: itemWidth * 432 / 306)) .resizable() .scaledToFill() .frame(width: itemWidth, height: itemWidth * 432 / 306)