Muting Channels

Last Edit: Jun 06 2020

Messages added to a channel will not trigger push notifications, nor change the unread count for the users that muted it.

By default, mutes stay in place indefinitely until the user removes it; however, you can optionally set an expiration time.

The list of muted channels and their expiration time is returned when the user connects.

Channel Mute


const reply = await client.setUser(user, token);

// reply.me.channel_mutes contains the list of channel mutes
console.log(reply.me.channel_mutes);

const channel = client.channel("messaging", "channel-id");

// mute channel for current user
await channel.mute();

// mute channel for a user (server-side)
await channel.mute({ user_id: userId });

// mute a channel for 2 weeks
await channel.mute({ expiration: moment.duration(2, 'weeks') });

// mute a channel for 10 seconds
await channel.mute({ expiration: 10000 });

// check if channel is muted
// { muted: true | false, createdAt: Date | null, expiresAt: Date | null}
channel.muteStatus();
                    

client.setUser(User(userId), "{{ chat_user_token }}", object : InitConnectionListener() {
    override fun onSuccess(data: ConnectionData) {
        // mutes contains the list of channel mutes
        val mutes = data.user.mutes
    }
})

val channelController = client.channel(channelType, channelId)

channelController.muteCurrentUser().enqueue {
    val mute = it.data()
}

channelController.muteUser(userId).enqueue {
    val mute = it.data()
}

channelController.unmuteUser(userId).enqueue {
    val mute = it.data()
}
                    
Messages added to muted channels do not increase the unread messages count.

Query Muted Channels

Muted channels can be filtered or excluded by using the muted in your query channels filter.


// retrieve all channels excluding muted ones
await client.queryChannels({ members: { $in: [userId] }, muted: false });

// retrieve all muted channels
await client.queryChannels({ muted: true });
                    

// retrieve channels excluding muted ones

val offset = 0
val limit = 10
val notMutedFilter = Filters.eq("muted", false)
client.queryChannels(QueryChannelsRequest(notMutedFilter, offset, limit))

// retrieve muted channels

val mutedFilter = Filters.eq("muted", true)
client.queryChannels(QueryChannelsRequest(mutedFilter, offset, limit))
                    

Client.shared.queryChannels(filter: .equal("muted", to: true)) { (result) in
    // handle result
}

Client.shared.queryChannels(filter: .equal("muted", to: false)) { (result) in
    // handle result
}
                    

Remove a Channel Mute


// unmute channel for current user
await channel.unmute();

// unmute channel for a user (server-side)
await channel.unmute({ user_id: userId });
                    

// unmute channel for current user
channelController.unmuteCurrentUser().enqueue {
    val mute = it.data()
}