Skip to content

Commit 385cd60

Browse files
Merge pull request #22 from sendbird/release/swiftui/1.0.2
Release/swiftui/1.0.2 -> main
2 parents e72e660 + a1fb595 commit 385cd60

31 files changed

+444
-198
lines changed

CHANGELOG.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
1-
## Improvements
2-
- Fixed unwanted navigation bar showing when using `.groupChannelView{ }` view builder inside a `TabView`
1+
## New Interfaces
2+
New view adaptor interfaces for `GroupChannelType.ListItem` have been added.
3+
- `public func quotedFileMessageView<Content: View>(@ViewBuilder content:)`
4+
- An interface that customizes a quoted file message view.
5+
- `public func quotedMultipleFilesMessageView<Content: View>(@ViewBuilder content:)`
6+
- An interface that customizes a quoted multiple files message view.

Package.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ let package = Package(
1717
.package(
1818
name: "SendbirdChatSDK",
1919
url: "https://github.com/sendbird/sendbird-chat-sdk-ios",
20-
from: "4.23.1"
20+
from: "4.25.0"
2121
),
2222
],
2323
targets: [
2424
.binaryTarget(
2525
name: "SendbirdSwiftUI",
26-
url: "https://github.com/sendbird/sendbird-swiftui-ios/releases/download/1.0.1/SendbirdSwiftUI.xcframework.zip",
27-
checksum: "56846fcff1ec4e4cda5207ed664a090ca8679913319934cf829925b782af00cc"
26+
url: "https://github.com/sendbird/sendbird-swiftui-ios/releases/download/1.0.2/SendbirdSwiftUI.xcframework.zip",
27+
checksum: "ac1f1a4d878b1564d27f00470f5466bf1ce033b239e647c6fe9e4033c3bcbf62"
2828

2929
),
3030
.target(

Sample/QuickStartSwiftUI.xcodeproj/project.pbxproj

+18-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
00C85B54DEAAFA517FA0D50B /* GroupMutedMemberListView+SubViewBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2769D3BC0129E975B6946A2C /* GroupMutedMemberListView+SubViewBuilder.swift */; };
1212
00ED5EE1868FFCCBA2C7AD8D /* CustomOpenOperatorList.swift in Sources */ = {isa = PBXBuildFile; fileRef = F66A9356D0027AF606372658 /* CustomOpenOperatorList.swift */; };
1313
00EF5904E2CC8C1CA8E7CDC7 /* CustomOpenOperatorList.ViewConverter.List.moreButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA429B863A8ED037889380A4 /* CustomOpenOperatorList.ViewConverter.List.moreButton.swift */; };
14+
01376191FCB2B64236F4714A /* CustomGroupChannel.ViewConverter.List.quotedFileMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839277B8B1BAD993DF9D4E91 /* CustomGroupChannel.ViewConverter.List.quotedFileMessageView.swift */; };
1415
0152DA39617EFC76210E6B13 /* CustomGroupChannelList.SwiftUI.View.CustomMain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA9A722A74690B1FE0DA8E9 /* CustomGroupChannelList.SwiftUI.View.CustomMain.swift */; };
1516
016DE4771424BCB5E36BD8A0 /* GroupBannedUserListViewConverter.Header.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2AECC85EB8D47720009CB4A /* GroupBannedUserListViewConverter.Header.swift */; };
1617
01A64DE1989F69381E0E3B02 /* SBUScrollBottomView+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A5D3AAD48890B67F36BEE43 /* SBUScrollBottomView+SwiftUI.swift */; };
@@ -336,6 +337,7 @@
336337
4DEBBC6C537F17808B683CE0 /* SBUCreateOpenChannelModule.Header+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7EBE9547D711DC04841C63 /* SBUCreateOpenChannelModule.Header+SwiftUI.swift */; };
337338
4E007D3C096B3D2701B98E02 /* GroupChannelRegisterOperatorViewConverter.Header.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF8E970CDDD209431757EE9 /* GroupChannelRegisterOperatorViewConverter.Header.swift */; };
338339
4E2A62BFF5497BBDA4C1FFAE /* GroupChannelView+ViewConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F02C24F1081B38C6BBB9B3A /* GroupChannelView+ViewConverter.swift */; };
340+
4EAE7743B6594C7A45EC8669 /* CustomGroupChannel.ViewConverter.List.quotedMultipleFilesMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D95EDFE2D453B2BC70E9293E /* CustomGroupChannel.ViewConverter.List.quotedMultipleFilesMessageView.swift */; };
339341
4EAFF36AA2B114BDBFD37BCC /* SBUOpenChannelModule.List.swift in Sources */ = {isa = PBXBuildFile; fileRef = 666D5EED292A8388ADBD01E3 /* SBUOpenChannelModule.List.swift */; };
340342
4EF20EB7151A235007A8811F /* SBUOpenChannelSettingCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4355FC0431F98C7660BB7AAB /* SBUOpenChannelSettingCell.swift */; };
341343
4F42716E2D6DCE99C0BE8662 /* OpenOperatorListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77A22D8FCAD422A90844DC4C /* OpenOperatorListView.swift */; };
@@ -489,6 +491,7 @@
489491
733E5B71D657B2031C69DFF0 /* SBUChannelSettingsChannelInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C327FC68584CFA626021FF /* SBUChannelSettingsChannelInfoView.swift */; };
490492
73A87006FCAEFD7C0359D93E /* SBUGroupBannedUserListModule.Header+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E96A78E503C25F929F51F29 /* SBUGroupBannedUserListModule.Header+SwiftUI.swift */; };
491493
73B6B5337FF2FC877DBDB6B5 /* CustomOpenBannedUserList.ViewConverter.List.userNameLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC7C6EE71D9C0203FB5FB1A /* CustomOpenBannedUserList.ViewConverter.List.userNameLabel.swift */; };
494+
73E1858523070FE7411AFFD9 /* SBUQuotedBaseMessageView+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC12094D92BC2545FC4E1955 /* SBUQuotedBaseMessageView+SwiftUI.swift */; };
492495
73EA7261CCF151971AF20878 /* CustomOpenChannel.SubView.Builder.userList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EF0CBE3236AA5C29F96124D /* CustomOpenChannel.SubView.Builder.userList.swift */; };
493496
73EC1909319017A4B8CDC78A /* CustomGroupChannelList.ViewConverter.List.unreadCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62DDB5AEADE552713948729 /* CustomGroupChannelList.ViewConverter.List.unreadCount.swift */; };
494497
741EDEF887C5D26B6EC6A07F /* CustomOpenModerations.ViewConverter.List.entireView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04561764A6EDAA5F1B379364 /* CustomOpenModerations.ViewConverter.List.entireView.swift */; };
@@ -1685,6 +1688,7 @@
16851688
832AD74C612CBA95BB6080A9 /* CustomCreateOpenChannel.ViewConverter.List.entireView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomCreateOpenChannel.ViewConverter.List.entireView.swift; sourceTree = "<group>"; };
16861689
83337608204FE94776C542A4 /* SBUVoiceFileInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUVoiceFileInfo.swift; sourceTree = "<group>"; };
16871690
83402211DD8882C43D58382D /* CustomOpenBannedUserList.SwiftUI.View.CustomMain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomOpenBannedUserList.SwiftUI.View.CustomMain.swift; sourceTree = "<group>"; };
1691+
839277B8B1BAD993DF9D4E91 /* CustomGroupChannel.ViewConverter.List.quotedFileMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomGroupChannel.ViewConverter.List.quotedFileMessageView.swift; sourceTree = "<group>"; };
16881692
83D46A1142AC3CC4D1396719 /* SBUSuggestedReplyOptionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUSuggestedReplyOptionView.swift; sourceTree = "<group>"; };
16891693
83E21DEE99C27C67B4374E32 /* CustomGroupChannelSettings.ViewConverter.Header.rightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomGroupChannelSettings.ViewConverter.Header.rightView.swift; sourceTree = "<group>"; };
16901694
850E1D213D3EC098A580B835 /* CustomOpenChannelSettings.ViewConverter.List.entireView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomOpenChannelSettings.ViewConverter.List.entireView.swift; sourceTree = "<group>"; };
@@ -1928,6 +1932,7 @@
19281932
BB75D9350081AF38A4FAA594 /* UserDefaults+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Ext.swift"; sourceTree = "<group>"; };
19291933
BB8E79F86C80CC2DD59FCC04 /* OpenChannelSettingsView+ViewConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OpenChannelSettingsView+ViewConverter.swift"; sourceTree = "<group>"; };
19301934
BBF13F185407274DA4BAFF25 /* SBUPendingMessageManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUPendingMessageManager.swift; sourceTree = "<group>"; };
1935+
BC12094D92BC2545FC4E1955 /* SBUQuotedBaseMessageView+SwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SBUQuotedBaseMessageView+SwiftUI.swift"; sourceTree = "<group>"; };
19311936
BC87A02119141F2A3B9F2390 /* SBUGroupOperatorListModule.List+SwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SBUGroupOperatorListModule.List+SwiftUI.swift"; sourceTree = "<group>"; };
19321937
BCDE756FB020AB19ECBB9189 /* InviteUserViewConverter.Header.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteUserViewConverter.Header.swift; sourceTree = "<group>"; };
19331938
BD855DB89F085210FBDAF07E /* SBUCacheManager.PathType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUCacheManager.PathType.swift; sourceTree = "<group>"; };
@@ -2054,6 +2059,7 @@
20542059
D8EA593C614B0BDD8E1FA2C8 /* SBUChatNotificationChannelModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUChatNotificationChannelModule.swift; sourceTree = "<group>"; };
20552060
D91401F0CEDB5A733BE00C20 /* SBUGroupChannelModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUGroupChannelModule.swift; sourceTree = "<group>"; };
20562061
D95DA4F7F43B4408328A06B2 /* SBURegisterOperatorModule.Deprecated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBURegisterOperatorModule.Deprecated.swift; sourceTree = "<group>"; };
2062+
D95EDFE2D453B2BC70E9293E /* CustomGroupChannel.ViewConverter.List.quotedMultipleFilesMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomGroupChannel.ViewConverter.List.quotedMultipleFilesMessageView.swift; sourceTree = "<group>"; };
20572063
D96FF4DECC16108247C2B05F /* MethodOverridable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MethodOverridable.swift; sourceTree = "<group>"; };
20582064
D9735294E73DAE6D3E1FDB33 /* SBUOpenChannelCommonContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUOpenChannelCommonContentView.swift; sourceTree = "<group>"; };
20592065
D9AC164247B4ADF8D79CF790 /* SBUContentBaseMessageCell.Deprecated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SBUContentBaseMessageCell.Deprecated.swift; sourceTree = "<group>"; };
@@ -4186,6 +4192,8 @@
41864192
53346E81604409C68486DBB2 /* CustomGroupChannel.ViewConverter.List.fileMessageView.swift */,
41874193
F0F5806465F7C6A9458CFA95 /* CustomGroupChannel.ViewConverter.List.multipleFilesMessageView.swift */,
41884194
A3A24FE5B77BFB32E7FC600B /* CustomGroupChannel.ViewConverter.List.newMessageInfoView.swift */,
4195+
839277B8B1BAD993DF9D4E91 /* CustomGroupChannel.ViewConverter.List.quotedFileMessageView.swift */,
4196+
D95EDFE2D453B2BC70E9293E /* CustomGroupChannel.ViewConverter.List.quotedMultipleFilesMessageView.swift */,
41894197
9E90127DF72AC51AA2AE0001 /* CustomGroupChannel.ViewConverter.List.rowView.swift */,
41904198
9E325565C4F113CEBD8DBA04 /* CustomGroupChannel.ViewConverter.List.scrollBottomView.swift */,
41914199
21145BF3F3E645DAC712F358 /* CustomGroupChannel.ViewConverter.List.senderProfileImage.swift */,
@@ -6385,6 +6393,7 @@
63856393
3FFC8EB13F480E8BEAFC5E6A /* SBUGroupChannelViewController+SwiftUI.swift */,
63866394
887FB1AF021C77AE2658CF59 /* SBUMessageInputView+SwiftUI.swift */,
63876395
3C1EBEBB49DB9D9129545F68 /* SBUNewMessageInfo+SwiftUI.swift */,
6396+
BC12094D92BC2545FC4E1955 /* SBUQuotedBaseMessageView+SwiftUI.swift */,
63886397
8A5D3AAD48890B67F36BEE43 /* SBUScrollBottomView+SwiftUI.swift */,
63896398
);
63906399
path = ViewConverters;
@@ -6583,6 +6592,8 @@
65836592
DAE23D983347E184AB62CE6A /* CustomGroupChannel.ViewConverter.List.fileMessageView.swift in Sources */,
65846593
D57118BC69FAEA9F2DA17FDA /* CustomGroupChannel.ViewConverter.List.multipleFilesMessageView.swift in Sources */,
65856594
0461AACD27520C00D39871A8 /* CustomGroupChannel.ViewConverter.List.newMessageInfoView.swift in Sources */,
6595+
01376191FCB2B64236F4714A /* CustomGroupChannel.ViewConverter.List.quotedFileMessageView.swift in Sources */,
6596+
4EAE7743B6594C7A45EC8669 /* CustomGroupChannel.ViewConverter.List.quotedMultipleFilesMessageView.swift in Sources */,
65866597
6F5EDDDB302028D0FE8790D7 /* CustomGroupChannel.ViewConverter.List.rowView.swift in Sources */,
65876598
5128416924F60A8B7B824AAF /* CustomGroupChannel.ViewConverter.List.scrollBottomView.swift in Sources */,
65886599
D1ECE51EB97035BAAF2ED355 /* CustomGroupChannel.ViewConverter.List.senderProfileImage.swift in Sources */,
@@ -7446,6 +7457,7 @@
74467457
CBEC8D8DCCF1A458603C7671 /* SBUQuoteMessageInputView.swift in Sources */,
74477458
A59B5B7C75731CCA2E7667B0 /* SBUQuoteMessageInputViewParams.swift in Sources */,
74487459
FA9FA573FEDB0E7119C5254D /* SBUQuoteMessageInputViewProtocol.swift in Sources */,
7460+
73E1858523070FE7411AFFD9 /* SBUQuotedBaseMessageView+SwiftUI.swift in Sources */,
74497461
BC7B461A310DEE879E224D85 /* SBUQuotedBaseMessageView.swift in Sources */,
74507462
72C5014A5F3EF9F3C54EE23C /* SBUQuotedBaseMessageViewParams.Deprecated.swift in Sources */,
74517463
D71DDB5B256AADEC51B8CA51 /* SBUQuotedBaseMessageViewParams.swift in Sources */,
@@ -7599,7 +7611,7 @@
75997611
"@executable_path/Frameworks",
76007612
"@loader_path/Frameworks",
76017613
);
7602-
MARKETING_VERSION = 1.0.1;
7614+
MARKETING_VERSION = 1.0.2;
76037615
PRODUCT_BUNDLE_IDENTIFIER = com.sendbird.swiftui.sample;
76047616
PRODUCT_NAME = "$(TARGET_NAME)";
76057617
SDKROOT = iphoneos;
@@ -7631,7 +7643,7 @@
76317643
"@executable_path/Frameworks",
76327644
"@loader_path/Frameworks",
76337645
);
7634-
MARKETING_VERSION = 1.0.1;
7646+
MARKETING_VERSION = 1.0.2;
76357647
PRODUCT_BUNDLE_IDENTIFIER = com.sendbird.swiftui.sample.SwiftUINotificationService;
76367648
PRODUCT_NAME = "$(TARGET_NAME)";
76377649
SDKROOT = iphoneos;
@@ -7721,7 +7733,7 @@
77217733
"@executable_path/Frameworks",
77227734
"@loader_path/Frameworks",
77237735
);
7724-
MARKETING_VERSION = 1.0.1;
7736+
MARKETING_VERSION = 1.0.2;
77257737
PRODUCT_BUNDLE_IDENTIFIER = com.sendbird.swiftui.sample;
77267738
PRODUCT_NAME = "$(TARGET_NAME)";
77277739
SDKROOT = iphoneos;
@@ -7808,7 +7820,7 @@
78087820
"@executable_path/Frameworks",
78097821
"@loader_path/Frameworks",
78107822
);
7811-
MARKETING_VERSION = 1.0.1;
7823+
MARKETING_VERSION = 1.0.2;
78127824
PRODUCT_BUNDLE_IDENTIFIER = com.sendbird.swiftui.sample.SwiftUINotificationService;
78137825
PRODUCT_NAME = "$(TARGET_NAME)";
78147826
SDKROOT = iphoneos;
@@ -7857,15 +7869,15 @@
78577869
repositoryURL = "https://github.com/sendbird/sendbird-chat-sdk-ios";
78587870
requirement = {
78597871
kind = upToNextMajorVersion;
7860-
minimumVersion = 4.23.1;
7872+
minimumVersion = 4.25.0;
78617873
};
78627874
};
78637875
BA2412B4C520C201A8099145 /* XCRemoteSwiftPackageReference "sendbird-uikit-ios-spm" */ = {
78647876
isa = XCRemoteSwiftPackageReference;
78657877
repositoryURL = "https://github.com/sendbird/sendbird-uikit-ios-spm";
78667878
requirement = {
78677879
kind = upToNextMajorVersion;
7868-
minimumVersion = 3.29.2;
7880+
minimumVersion = 3.30.0;
78697881
};
78707882
};
78717883
/* End XCRemoteSwiftPackageReference section */
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import SwiftUI
2+
#if canImport(SendbirdSwiftUI)
3+
import SendbirdSwiftUI
4+
#endif
5+
6+
extension CustomGroupChannel.ViewConverter.List {
7+
struct quotedFileMessageView: View {
8+
@EnvironmentObject var viewModel: CustomSampleSubViewModel
9+
@State var customFlag: Bool = false
10+
11+
func CustomButton() -> Button<some View> {
12+
return Button {
13+
self.customFlag.toggle()
14+
} label: {
15+
Text("Toggle")
16+
.padding()
17+
.background(Color.blue)
18+
.foregroundColor(.white)
19+
}
20+
}
21+
22+
var body: some View {
23+
if let channelURL = viewModel.groupChannel?.channelURL {
24+
GroupChannelView(
25+
provider: GroupChannelViewProvider(channelURL: channelURL),
26+
listItem: {
27+
.init()
28+
.quotedFileMessageView { config in
29+
switch SBUUtils.getFileType(by: config.message) {
30+
case .image:
31+
let overlayColor = self.customFlag ? Color.indigo : Color.cyan
32+
33+
ZStack {
34+
AsyncImage(url: URL(string: config.message.url)) { image in
35+
image
36+
.resizable()
37+
.aspectRatio(contentMode: .fill)
38+
.frame(width: config.thumbnailSize.width, height: config.thumbnailSize.height)
39+
} placeholder: {
40+
ProgressView()
41+
}
42+
.frame(width: config.thumbnailSize.width, height: config.thumbnailSize.height)
43+
44+
// Add overlay color for testing
45+
overlayColor.opacity(0.3)
46+
.frame(width: config.thumbnailSize.width, height: config.thumbnailSize.height)
47+
}
48+
case .video:
49+
Text("video")
50+
.padding()
51+
case .audio, .pdf, .etc:
52+
Text("audio, pdf, etc")
53+
.padding()
54+
case .voice:
55+
Text("voice")
56+
.padding()
57+
}
58+
}
59+
}
60+
)
61+
CustomButton()
62+
}
63+
}
64+
}
65+
}
66+
67+
#Preview {
68+
CustomGroupChannel.ViewConverter.List.quotedFileMessageView()
69+
}

0 commit comments

Comments
 (0)