Skip to main content
Version: v4

Join Protected Group

Overview

CometChatJoinProtectedGroup is a Component used to set up a screen that shows the functionality to join a password protected group, featuring the functionality to join a password-protected group, where users can join a single password-protected group at a time.

Image

The CometChatJoinProtectedGroup component is composed of the following BaseComponents:

ComponentsDescription
CometChatListBaseCometChatListBase serves as a comprehensive container component, encompassing essential elements such as a title (navigationBar), search functionality (search-bar), background, and a container to embed a list view. This design provides a cohesive and intuitive user experience, facilitating seamless navigation and interaction within the component.

Usage

Integration

CometChatJoinProtectedGroup, as a custom view controller, offers flexible integration options, allowing it to be launched directly via button clicks or any user-triggered action. Additionally, it seamlessly integrates into tab view controllers. With join group, users gain access to a wide range of parameters and methods for effortless customization of its user interface.

The following code snippet exemplifies how you can seamlessly integrate the JoinProtectedGroup component into your application.

let cometChatJoinProtectedGroup = CometChatJoinProtectedGroup()
let naviVC = UINavigationController(rootViewController: cometChatJoinProtectedGroup)
self.present(naviVC, animated: true)
info

If you are already using a navigation controller, you can use the pushViewController function instead of presenting the view controller.


Actions

Actions dictate how a component functions. They are divided into two types: Predefined and User-defined. You can override either type, allowing you to tailor the behavior of the component to fit your specific needs.

1. SetOnJoinClick

The setOnJoinClick action is activated when you click the join Group button. This returns the join groups.

You can override this action using the following code snippet.

let cometChatJoinProtectedGroup = CometChatJoinProtectedGroup()
.setOnJoinClick (onJoinClick:{ group, password in
//Perform Your Action

})
2. SetOnError

You can customize this behavior by using the provided code snippet to override the On Error and improve error handling.

let cometChatJoinProtectedGroup = CometChatJoinProtectedGroup()
.setOnError (onError:{ error in
//Perform Your Action

})

3. SetOnBack

Enhance your application's functionality by leveraging the SetOnBack feature. This capability allows you to customize the behavior associated with navigating back within your app. Utilize the provided code snippet to override default behaviors and tailor the user experience according to your specific requirements.

let cometChatJoinProtectedGroup = CometChatJoinProtectedGroup()
.setOnBack (onBack:{
//Perform Your Action

})

Filters

Filters allow you to customize the data displayed in a list within a Component. You can filter the list based on your specific criteria, allowing for a more customized. Filters can be applied using RequestBuilders of Chat SDK.

The Join Group component does not have any exposed filters.

Events

Events are emitted by a Component. By using event you can extend existing functionality. Being global events, they can be applied in Multiple Locations and are capable of being Added or Removed.

Events emitted by the Join Group component is as follows.

EventDescription
onGroupMemberJoinTriggers when the user joined a protected group successfully
// View controller from your project where you want to listen events.
public class ViewController: UIViewController {

public override func viewDidLoad() {
super.viewDidLoad()

// Subscribing for the listener to listen events from user module
CometChatGroupEvents.addListener("UNIQUE_ID", self as CometChatGroupEventListener)
}
}
// Listener events from groups module
extension ViewController: CometChatGroupEventListener {

public func onGroupMemberJoin(joinedUser: User, joinedGroup: Group) {
// Do Stuff
}
}
Emitting Group Events
///emit this when logged in user has joined a group successfully.
CometChatGroupEvents.emitOnGroupMemberJoin(joinedUser: User, joinedGroup: Group)

View Controller
public override func viewWillDisappear(_ animated: Bool) {
// Uncubscribing for the listener to listen events from user module
CometChatGroupEvents.removeListener("LISTENER_ID_USED_FOR_ADDING_THIS_LISTENER")
}

Customization

To fit your app's design requirements, you can customize the appearance of the Groups component. We provide exposed methods that allow you to modify the experience and behavior according to your specific needs.

Style

Using Style you can customize the look and feel of the component in your app, These parameters typically control elements such as the color, size, shape, and fonts used within the component.

1. JoinGroup Style report

You can set the JoinGroupStyle to the Join Group Component to customize the styling.

// Creating  JoinProtectedGroupStyle object
let joinProtectedGroupStyle = JoinProtectedGroupStyle()

// Creating Modifying the propeties of join protected group
joinProtectedGroupStyle.set(background: .black)
.set(cornerRadius: CometChatCornerStyle(cornerRadius: 0.0))
.set(borderColor: .clear)
.set(borderWidth: 0)
.set(titleTextFont: .systemFont(ofSize: 22))
.set(titleTextColor: .white)
.set(errorTextFont: .systemFont(ofSize: 22))
.set(errorTextColor: .white)
.set(passwordPlaceholderFont: .systemFont(ofSize: 16))
.set(passwordPlaceholderColor: .white)
.set(passwordTextFont: .systemFont(ofSize: 16))
.set(passwordTextColor: .white)
.set(passwordInputBackground: .black)
.set(joinButtonTextFont: .systemFont(ofSize: 16))
.set(joinButtonTextColor: .tintColor)
.set(cancelButtonTextFont: .systemFont(ofSize: 16))
.set(cancelButtonTextColor: .tintColor)
.set(captionTextFont: .systemFont(ofSize: 16))
.set(captionTextColor: .white)

let cometChatJoinProtectedGroup = CometChatJoinProtectedGroup()
cometChatJoinProtectedGroup.set(joinProtectedGroupStyle: joinProtectedGroupStyle)

List of properties exposed by JoinGroupStyle

PropertyDescriptionCode
BackgroundSets the background color for join protected groupset(background: UIColor)
CornerRadiusSets the corner radius for join protected groupset(cornerRadius: CometChatCornerStyle)
BorderWidthSets the border width for join protected groupset(borderWidth: CGFloat)
BorderColorSets the border color for join protected groupset(borderColor: UIColor)
TitleTextColorSets the title color for join protected groupset(titleTextColor: UIColor)
TitleTextFontSets the title font for join protected groupset(titleTextFont: UIFont)
ErrorTextColorSets the error text color for join protected groupset(errorTextColor: UIColor)
ErrorTextFontSets the error text font for join protected groupset(errorTextFont: UIFont)
PasswordTextColorSets the text color for password in join protected groupset(passwordTextColor: UIColor)
PasswordTextFontSets the text font for password in join protected groupset(passwordTextFont: UIFont)
PasswordPlaceholderColorSets the placeholder color for password in join protected groupset(passwordPlaceholderColor: UIColor)
PasswordPlaceholderFontSets the placeholder font for password in join protected groupset(passwordPlaceholderFont: UIFont)
PasswordInputBackgroundSets the input view background color in join protected groupset(passwordInputBackground: UIColor)
PasswordInputCornerRadiusSets the input view corner radius in join protected groupset(passwordInputCornerRadius: CGFloat)
JoinButtonTextColorSets the join button text color in join protected groupset(joinButtonTextColor: UIColor)
JoinButtonTextFontSets the join button text font in join protected groupset(joinButtonTextFont: UIFont)
CancelButtonTextColorSets the cancel button text color in join protected groupset(cancelButtonTextColor: UIColor)
CancelButtonTextFontSets the cancel button text font in join protected groupset(cancelButtonTextFont: UIFont)
CaptionTextFontSets the caption text font in join protected groupset(captionTextFont: UIFont)
CaptionTextColorSets the caption text color in join protected groupset(captionTextColor: UIColor)

Functionality

These are a set of small functional customizations that allow you to fine-tune the overall experience of the component. With these, you can change text, set custom icons, and toggle the visibility of UI elements.

let cometChatJoinProtectedGroup = CometChatJoinProtectedGroup()
.set(title: "Cc", mode: .always)
.set(passwordPlaceholderText: "Your Custom placeholder text")
.set(backButtonTitle: "CometChat")

Image
PropertyDescriptionCode
TitleCustom title for the component.set(title: String, mode: UINavigationItem.LargeTitleDisplayMode)
BackButtonTitleCustom text for the back button.set(backButtonTitle: String?)
SearchPlaceholderTextCustom placeholder text for search field.set(searchPlaceholder: String)
ShowBackButtonWhether to hide the back button.show(backButton: Bool)
ErrorStateTextCustom error state text.set(errorStateText: String)
BackButtonIconCustom back button icon.set(backButtonIcon: UIImage)
PasswordPlaceHolderTextCustom placeholder text.set(passwordPlaceholderText: String)
HideContinueButtonWhether to hide the continue button.hide(continueButton: Bool)

Advanced

For advanced-level customization, you can set custom views to the component. This lets you tailor each aspect of the component to fit your exact needs and application aesthetics. You can create and define your own views, layouts, and UI elements and then incorporate those into the component.

The Join Group component does not provide additional functionalities beyond this level of customization.