Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/sceyt/sceyt-chat-android-uikit/llms.txt

Use this file to discover all available pages before exploring further.

The Sceyt Chat Android UIKit ships four ready-to-use creation flows — start a direct message, create a broadcast channel, create a group, and pick users to add as members. Each flow is a dedicated Activity reachable through a typed Destination. You never need to build these screens from scratch; just navigate to the right destination and the UIKit handles the full flow including member selection and the first system message.

Destination.StartChat — begin a direct message

StartChat opens StartChatActivity, which lets the user search for and select another user to open a 1-to-1 conversation.
import com.sceyt.chatuikit.SceytChatUIKit
import com.sceyt.chatuikit.navigation.Destination
import com.sceyt.chatuikit.navigation.navigate

SceytChatUIKit.navigator.navigate(
    context,
    Destination.StartChat()
)
This is the same action triggered by the FAB in ChannelListFragment. After the user selects a contact, the flow navigates directly to ChannelActivity for that 1-to-1 channel.

Destination.CreateChannel — create a broadcast channel

CreateChannel opens CreateChannelActivity. The user fills in the channel name and avatar, then a SelectUsersActivity is shown automatically so subscribers can be added before the channel opens.
SceytChatUIKit.navigator.navigate(
    context,
    Destination.CreateChannel()
)
1

User enters channel details

Name, avatar, and description are entered in CreateChannelDetailsFragment.
2

System message is sent

A silent ChannelCreated system message is posted to mark the channel creation in the timeline.
3

Subscriber picker opens

SelectUsersActivity is launched via ActivityResultLauncher. Selected users are added as Subscriber role members.
4

Channel conversation opens

The flow finishes by navigating to Destination.Channel for the newly created channel.

Destination.CreateGroup — create a group chat

CreateGroup opens CreateGroupActivity with a pre-seeded member list. Pass the SceytMember objects you already have (e.g., from a prior SelectUsers call):
import com.sceyt.chatuikit.data.models.channels.SceytMember
import com.sceyt.chatuikit.navigation.Destination

SceytChatUIKit.navigator.navigate(
    context,
    Destination.CreateGroup(members = selectedMembers)
)
If you do not have members yet, show the user picker first and then open CreateGroup in the result callback:
// 1. Open the user picker
val launcher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == RESULT_OK) {
        val data = result.data
            ?.parcelable<SelectUsersResult>(SelectUsersActivity.SELECTED_USERS_RESULT)
            ?: return@registerForActivityResult

        val members = data.selectedUsers.map { user ->
            SceytMember(Role(MemberTypeEnum.Member.toRole()), user)
        }

        // 2. Open the group creation screen with selected members
        SceytChatUIKit.navigator.navigate(
            this,
            Destination.CreateGroup(members)
        )
    }
}

// Open the picker
SceytChatUIKit.navigator.navigateForResult(
    context = this,
    launcher = launcher,
    destination = Destination.SelectUsers(
        SelectUsersPageArgs(toolbarTitle = "Select Members")
    )
)

Destination.SelectUsers — user picker

SelectUsers opens SelectUsersActivity — a searchable list with multi-select chip bar. Pass a SelectUsersPageArgs to control the toolbar title and whether the confirm button is always active:
import com.sceyt.chatuikit.navigation.Destination
import com.sceyt.chatuikit.presentation.components.select_users.SelectUsersPageArgs

SceytChatUIKit.navigator.navigateForResult(
    context = this,
    launcher = myLauncher,
    destination = Destination.SelectUsers(
        args = SelectUsersPageArgs(
            toolbarTitle = "Add Members",
            actionButtonAlwaysEnable = false
        )
    )
)
The result Intent contains a SelectUsersResult parcelable under the key SelectUsersActivity.SELECTED_USERS_RESULT.

Configuring channel type names

The UIKit uses ChannelTypesConfig inside SceytChatUIKitConfig to map logical channel types to the string names sent to the Sceyt server. Configure it once during SDK initialisation:
import com.sceyt.chatuikit.SceytChatUIKit
import com.sceyt.chatuikit.config.ChannelTypesConfig

SceytChatUIKit.config.channelTypesConfig = ChannelTypesConfig(
    direct    = "direct",      // 1-to-1 conversations
    group     = "group",       // private groups
    broadcast = "broadcast"    // public broadcast channels
)
The ChannelTypesConfig also exposes two helpers:
val config = SceytChatUIKit.config.channelTypesConfig

// Returns ["broadcast"] — channel types shown in global search / discovery
val discoverableTypes: List<String> = config.getDiscoverableTypes()

// Returns ["direct", "group"] — channel types that are private
val privateTypes: List<String> = config.getPrivateTypes()
Type names must exactly match the channel types configured in your Sceyt application dashboard. Mismatches will cause creation or search errors.

Summary of Destinations

DestinationActivity openedTypical use case
Destination.StartChat()StartChatActivityNew 1-to-1 conversation
Destination.CreateChannel()CreateChannelActivityNew broadcast channel with subscribers
Destination.CreateGroup(members)CreateGroupActivityNew private group with selected members
Destination.SelectUsers(args)SelectUsersActivityGeneric user picker, returns SelectUsersResult

Build docs developers (and LLMs) love