Skip to content

Commit bba15e9

Browse files
Merge pull request #1361 from QuickBlox/Release-UiKit-sample-1.0.5
Release UiKit sample 1.0.5
2 parents 06f9e75 + b03fdc6 commit bba15e9

File tree

7 files changed

+243
-29
lines changed

7 files changed

+243
-29
lines changed

sample-ui-kit/UIKitSample.xcodeproj/project.pbxproj

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
2C05E0C52A77D8A6008AE78B /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C05E0C02A77D8A6008AE78B /* Media.xcassets */; };
1111
2C05E0C62A77D8A6008AE78B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2C05E0C12A77D8A6008AE78B /* Localizable.strings */; };
1212
2C05E0C72A77D8A6008AE78B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C05E0C42A77D8A6008AE78B /* Assets.xcassets */; };
13-
2C0A53DA2A784FFB0034841B /* QuickBloxUIKit in Frameworks */ = {isa = PBXBuildFile; productRef = 2C0A53D92A784FFB0034841B /* QuickBloxUIKit */; };
1413
2C5E9C3929E7490400CDA1FC /* ThemeSelectBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C5E9C3829E7490400CDA1FC /* ThemeSelectBar.swift */; };
1514
2C91739D29E87E4B00222A1F /* EnterToChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C91739C29E87E4B00222A1F /* EnterToChatView.swift */; };
1615
2C9E0AC829EB3675004B3CF0 /* AppTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9E0AC729EB3675004B3CF0 /* AppTheme.swift */; };
@@ -22,6 +21,7 @@
2221
2CBF893629DB3AF10016CF99 /* LoginTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBF893129DB3AF10016CF99 /* LoginTextField.swift */; };
2322
2CBF893B29DB43E30016CF99 /* TextFieldHint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBF893829DB43E30016CF99 /* TextFieldHint.swift */; };
2423
2CBF893C29DB43E30016CF99 /* TextFieldName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBF893929DB43E30016CF99 /* TextFieldName.swift */; };
24+
2CD3270A2A9E3A6300AAC1D8 /* QuickBloxUIKit in Frameworks */ = {isa = PBXBuildFile; productRef = 2CD327092A9E3A6300AAC1D8 /* QuickBloxUIKit */; };
2525
3AE104C029BF3B6F009B2B80 /* Connect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AE104BF29BF3B6F009B2B80 /* Connect.swift */; };
2626
3AF0154529B092B60021EE49 /* UIKitSampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AF0154429B092B60021EE49 /* UIKitSampleApp.swift */; };
2727
3AF0154C29B092B70021EE49 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3AF0154B29B092B70021EE49 /* Preview Assets.xcassets */; };
@@ -50,12 +50,12 @@
5050
/* Begin PBXFileReference section */
5151
2C05E0C02A77D8A6008AE78B /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
5252
2C05E0C22A77D8A6008AE78B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
53-
2C05E0C32A77D8A6008AE78B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
5453
2C05E0C42A77D8A6008AE78B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
5554
2C5E1A7C29E5957000F80CCF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
5655
2C5E9C3829E7490400CDA1FC /* ThemeSelectBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeSelectBar.swift; sourceTree = "<group>"; };
5756
2C91739C29E87E4B00222A1F /* EnterToChatView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnterToChatView.swift; sourceTree = "<group>"; };
5857
2C9E0AC729EB3675004B3CF0 /* AppTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppTheme.swift; sourceTree = "<group>"; };
58+
2C9E2FE32A87654F0079E7DA /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
5959
2CA237CA29DC073C004FFA21 /* LoginViewModal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModal.swift; sourceTree = "<group>"; };
6060
2CA237CC29DC116B004FFA21 /* DisplayNameTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayNameTextField.swift; sourceTree = "<group>"; };
6161
2CA237CE29DC3077004FFA21 /* BaseTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTextField.swift; sourceTree = "<group>"; };
@@ -81,7 +81,7 @@
8181
isa = PBXFrameworksBuildPhase;
8282
buildActionMask = 2147483647;
8383
files = (
84-
2C0A53DA2A784FFB0034841B /* QuickBloxUIKit in Frameworks */,
84+
2CD3270A2A9E3A6300AAC1D8 /* QuickBloxUIKit in Frameworks */,
8585
);
8686
runOnlyForDeploymentPostprocessing = 0;
8787
};
@@ -246,7 +246,7 @@
246246
);
247247
name = UIKitSample;
248248
packageProductDependencies = (
249-
2C0A53D92A784FFB0034841B /* QuickBloxUIKit */,
249+
2CD327092A9E3A6300AAC1D8 /* QuickBloxUIKit */,
250250
);
251251
productName = UIKitSample;
252252
productReference = 3AF0154129B092B60021EE49 /* UIKitSample.app */;
@@ -322,7 +322,7 @@
322322
);
323323
mainGroup = 3AF0153829B092B60021EE49;
324324
packageReferences = (
325-
2C0A53D82A784FFB0034841B /* XCRemoteSwiftPackageReference "ios-ui-kit" */,
325+
2CD327082A9E3A6300AAC1D8 /* XCRemoteSwiftPackageReference "ios-ui-kit" */,
326326
);
327327
productRefGroup = 3AF0154229B092B60021EE49 /* Products */;
328328
projectDirPath = "";
@@ -421,7 +421,7 @@
421421
isa = PBXVariantGroup;
422422
children = (
423423
2C05E0C22A77D8A6008AE78B /* en */,
424-
2C05E0C32A77D8A6008AE78B /* es */,
424+
2C9E2FE32A87654F0079E7DA /* es */,
425425
);
426426
name = Localizable.strings;
427427
sourceTree = "<group>";
@@ -433,6 +433,7 @@
433433
isa = XCBuildConfiguration;
434434
buildSettings = {
435435
ALWAYS_SEARCH_USER_PATHS = NO;
436+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
436437
CLANG_ANALYZER_NONNULL = YES;
437438
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
438439
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -505,6 +506,7 @@
505506
isa = XCBuildConfiguration;
506507
buildSettings = {
507508
ALWAYS_SEARCH_USER_PATHS = NO;
509+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
508510
CLANG_ANALYZER_NONNULL = YES;
509511
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
510512
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -601,7 +603,7 @@
601603
"$(inherited)",
602604
"@executable_path/Frameworks",
603605
);
604-
MARKETING_VERSION = 1.0.4;
606+
MARKETING_VERSION = 1.0.5;
605607
PRODUCT_BUNDLE_IDENTIFIER = com.quickblox.UIKitSample;
606608
PRODUCT_NAME = "$(TARGET_NAME)";
607609
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -647,7 +649,7 @@
647649
"$(inherited)",
648650
"@executable_path/Frameworks",
649651
);
650-
MARKETING_VERSION = 1.0.4;
652+
MARKETING_VERSION = 1.0.5;
651653
PRODUCT_BUNDLE_IDENTIFIER = com.quickblox.UIKitSample;
652654
PRODUCT_NAME = "$(TARGET_NAME)";
653655
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -777,20 +779,20 @@
777779
/* End XCConfigurationList section */
778780

779781
/* Begin XCRemoteSwiftPackageReference section */
780-
2C0A53D82A784FFB0034841B /* XCRemoteSwiftPackageReference "ios-ui-kit" */ = {
782+
2CD327082A9E3A6300AAC1D8 /* XCRemoteSwiftPackageReference "ios-ui-kit" */ = {
781783
isa = XCRemoteSwiftPackageReference;
782784
repositoryURL = "https://github.com/QuickBlox/ios-ui-kit.git";
783785
requirement = {
784786
kind = upToNextMajorVersion;
785-
minimumVersion = 0.1.3;
787+
minimumVersion = 0.1.5;
786788
};
787789
};
788790
/* End XCRemoteSwiftPackageReference section */
789791

790792
/* Begin XCSwiftPackageProductDependency section */
791-
2C0A53D92A784FFB0034841B /* QuickBloxUIKit */ = {
793+
2CD327092A9E3A6300AAC1D8 /* QuickBloxUIKit */ = {
792794
isa = XCSwiftPackageProductDependency;
793-
package = 2C0A53D82A784FFB0034841B /* XCRemoteSwiftPackageReference "ios-ui-kit" */;
795+
package = 2CD327082A9E3A6300AAC1D8 /* XCRemoteSwiftPackageReference "ios-ui-kit" */;
794796
productName = QuickBloxUIKit;
795797
};
796798
/* End XCSwiftPackageProductDependency section */

sample-ui-kit/UIKitSample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 20 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sample-ui-kit/UIKitSample/AppTheme/AppTheme.swift

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ var appThemes: [AppTheme] = [AppTheme(color: QuickBloxUIKit.ThemeColor(),
1414
image: QuickBloxUIKit.ThemeImage(),
1515
string: CustomThemeString()),
1616
AppTheme(color: CustomThemeColor1(),
17-
font: QuickBloxUIKit.ThemeFont(),
18-
image: QuickBloxUIKit.ThemeImage(),
17+
font: CustomThemeFont(),
18+
image: CustomImageTheme(),
1919
string: CustomThemeString())
2020
]
2121

@@ -60,6 +60,64 @@ class CustomThemeColor1: ThemeColorProtocol, ObservableObject {
6060
init() {}
6161
}
6262

63+
public class CustomThemeFont: ThemeFontProtocol {
64+
public var headline: Font = .custom("Menlo", size: 17)
65+
public var footnote: Font = .custom("Menlo", size: 13)
66+
public var caption: Font = .custom("Menlo", size: 12)
67+
public var caption2: Font = .custom("Menlo", size: 11)
68+
public var callout: Font = .custom("Menlo", size: 17)
69+
public var largeTitle: Font = .custom("Menlo", size: 34)
70+
public var title1: Font = .custom("Menlo", size: 28)
71+
public var title3: Font = .custom("Menlo", size: 20)
72+
73+
public init() {}
74+
}
75+
76+
public class CustomImageTheme: ThemeImageProtocol {
77+
public var avatarUser: Image = Image("AvatarUser")
78+
public var avatarGroup: Image = Image("AvatarGroup")
79+
public var avatarPublic: Image = Image("AvatarPublic")
80+
public var user: Image = Image(systemName: "person")
81+
public var groupChat: Image = Image(systemName: "person.3") // default: person.2
82+
public var publicChannel: Image = Image(systemName: "megaphone")
83+
public var leave: Image = Image(systemName: "person.fill.xmark") // default: rectangle.portrait.and.arrow.forward
84+
public var leavePNG: Image = Image("Leave")
85+
public var newChat: Image = Image(systemName: "square.and.pencil")
86+
public var back: Image = Image(systemName: "chevron.backward")
87+
public var close: Image = Image(systemName: "xmark")
88+
public var conference: Image = Image(systemName: "person.3")
89+
public var chat: Image = Image(systemName: "message")
90+
public var camera: Image = Image(systemName: "camera")
91+
public var avatarCamera: Image = Image("AvatarCamera")
92+
public var checkmark: Image = Image(systemName: "checkmark")
93+
public var attachmentPlaceholder: Image = Image("attachmentPlaceholder")
94+
public var info: Image = Image(systemName: "info.circle")
95+
public var bell: Image = Image(systemName: "bell")
96+
public var magnifyingglass: Image = Image(systemName: "magnifyingglass.circle") // default: magnifyingglass
97+
public var chevronForward: Image = Image(systemName: "chevron.forward")
98+
public var trash: Image = Image(systemName: "trash")
99+
public var plus: Image = Image(systemName: "plus.app")
100+
public var mic: Image = Image(systemName: "mic")
101+
public var smiley: Image = Image(systemName: "smiley")
102+
public var paperclip: Image = Image(systemName: "paperclip")
103+
public var paperplane: Image = Image(systemName: "paperplane.fill")
104+
public var keyboard: Image = Image(systemName: "keyboard")
105+
public var record: Image = Image(systemName: "record.circle")
106+
public var wave: Image = Image("wave")
107+
public var play: Image = Image(systemName: "play.fill")
108+
public var pause: Image = Image(systemName: "pause.fill")
109+
public var photo: Image = Image(systemName: "photo")
110+
public var delivered: Image = Image("delivered")
111+
public var read: Image = Image("delivered")
112+
public var send: Image = Image("send")
113+
public var doctext: Image = Image(systemName: "doc.text.fill")
114+
public var speakerwave: Image = Image(systemName: "speaker.wave.1.fill")
115+
public var message: Image = Image(systemName: "message")
116+
public var robot: Image = Image("Robot")
117+
118+
public init() {}
119+
}
120+
63121
public class CustomThemeString: ThemeStringProtocol {
64122
public var dialogsEmpty: String = String(localized: "dialog.items.empty")
65123
public var usersEmpty: String = String(localized: "dialog.members.empty")
@@ -117,11 +175,30 @@ public class CustomThemeString: ThemeStringProtocol {
117175
public var toDialog: String = String(localized: "alert.message.toDialog")
118176
public var noResults: String = String(localized: "alert.message.noResults")
119177
public var noMembers: String = String(localized: "alert.message.noMembers")
178+
public var invalidAI: String = String(localized: "alert.message.invalidAI")
120179

121180
public var maxSize: String = String(localized: "attachment.maxSize.title")
122181
public var maxSizeHint: String = String(localized: "attachment.maxSize.hint")
123182
public var fileTitle: String = String(localized: "attachment.title.file")
124183
public var gif: String = String(localized: "attachment.title.gif")
184+
185+
public var showOriginal: String = String(localized: "ai.translate.showOriginal")
186+
public var showTranslation: String = String(localized: "ai.translate.showTranslation")
187+
public var answerAssistTitle: String = String(localized: "ai.answerAssist.title")
188+
189+
public var permissionCameraTitle: String = String(localized: "permission.camera.title")
190+
public var permissionCameraMessage: String = String(localized: "permission.camera.message")
191+
public var permissionMicrophoneTitle: String = String(localized: "permission.microphone.title")
192+
public var permissionMicrophoneMessage: String = String(localized: "permission.microphone.message")
193+
public var permissionActionCancel: String = String(localized: "permission.actions.cancel")
194+
public var permissionActionSettings: String = String(localized: "permission.actions.settings")
195+
196+
public var createdGroupChat: String = String(localized: "utils.string.createdGroupChat")
197+
public var dialogRenamedByUser: String = String(localized: "utils.string.dialogRenamedByUser")
198+
public var avatarWasChanged: String = String(localized: "utils.string.avatarWasChanged")
199+
public var addedBy: String = String(localized: "utils.string.addedBy")
200+
public var removedBy: String = String(localized: "utils.string.removedBy")
201+
public var hasLeft: String = String(localized: "utils.string.hasLeft")
125202

126203
public init() {}
127204
}

sample-ui-kit/UIKitSample/LoginScreen/EnterToChatView.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ struct EnterToChatView: View {
2424
init(theme: AppTheme) {
2525
self.theme = theme
2626
QuickBloxUIKit.settings.theme = theme
27+
QuickBloxUIKit.feature.aiFeature.openAIAPIKey = ""
28+
// QuickBloxUIKit.feature.aiFeature.translate.setCustom(language: .french)
2729
}
2830

2931
var body: some View {

sample-ui-kit/UIKitSample/LoginScreen/LoginScreen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ struct LoginScreen: View {
3131
@State private var loginInfo = LoginConstant.login
3232
@State var selectedSegment: ThemeType?
3333

34-
let showChangeColorTheme: Bool = false //Setting this variable to true will show an example of choosing a color theme of the user's choice
34+
let showChangeColorTheme: Bool = true //Setting this variable to true will show an example of choosing a color theme of the user's choice
3535

3636
init(viewModel: LoginViewModal = LoginViewModal(), connect: Connect = Connect()) {
3737
_viewModel = StateObject(wrappedValue: viewModel)

0 commit comments

Comments
 (0)