Overview
The Transfer Group Ownership feature provides a modal interface where the group owner can:- See a list of current group members (excluding themselves).
- Select exactly one member to become the new owner.
- Trigger the ownership transfer API call.
- Automatically exit the group after successful transfer.
Prerequisites
- A UIKit-based iOS project.
- CometChat UIKit for iOS v5 installed via CocoaPods or Swift Package Manager.
- CometChat SDKs (
CometChatSDK
,CometChatUIKitSwift
) integrated. - Logged-in user with
CometChat.login()
. UINavigationController
or modal presentation flow set up.- Group context (GUID) available when invoking the transfer screen.
Components
Component | Responsibility |
---|---|
TransferOwnership | Subclass of CometChatGroupMembers enabling single selection mode. |
viewModel.groupMembers | Data source array of GroupMember objects. |
onSelectedItemProceed | Closure invoked when user confirms selection. |
CometChat.transferGroupOwnership | API call to delegate group ownership. |
spinnerView | UIActivityIndicatorView showing loading state. |
leaveGroupCallback | Callback to perform group exit after transfer. |
Integration Steps
1. Present Transfer Ownership Screen
Show the ownership transfer UI modally.GroupDetailsViewController.swift
2. Configure Single Selection Mode
Restrict selection to one member and capture selection.TransferOwnership.swift
3. Load & Filter Member List
Exclude the current owner from the selectable list.TransferOwnership.swift
4. Perform Ownership Transfer
Call the API, emit event, and exit the group.TransferOwnership.swift
5. Manage Loading State
Provide visual feedback during network calls.TransferOwnership.swift
Customization Options
- Title Text: Replace localization key with custom string.
- Spinner Style: Adjust
spinnerView.style
and color usingCometChatTheme
. - Error Handling: Customize error alerts in the
onError
closure.
Filtering & Edge Cases
- Empty Member List: Show an informative empty state when no eligible members exist.
- Network Failures: Disable proceed button until connection restores.
- Blocked Members: Exclude or disable blocked users from selection.
Error Handling
- Transfer Failures: Present
UIAlertController
with retry option. - Unexpected States: Ensure
removeSpinnerView()
always executes indefer
.
Feature Matrix
Feature | Method / Component | File(s) |
---|---|---|
Launch transfer flow | showTransferOwnership(for:) | GroupDetailsViewController.swift |
Single-member selection | selectionMode = .single | TransferOwnership.swift |
Filter out current owner | reloadData() override | TransferOwnership.swift |
Execute API transfer | CometChat.transferGroupOwnership() | TransferOwnership.swift |
Show/hide loading indicator | addSpinnerView() , removeSpinnerView() | TransferOwnership.swift |
Full Sample App
Explore the transfer ownership feature in context:
GitHub → SampleApp
UIKit Source Code
Review the implementation:
TransferOwnership.swift