channelController.partialChannelUpdate(
extraData: [
"source": .string("user"),
"source_detail": .dictionary(["user_id": .number(123)]),
"channel_detail": .dictionary([
"topic": .string("Plants and Animals"),
"rating": .string("pg")
])
]
) { error in
if let error {
// handle error
}
}
// let's change the source of this channel
channelController.partialChannelUpdate(unsetProperties: ["source_detail"])
// let's change the source of this channel
channelController.partialChannelUpdate(extraData:["source": "system"])
// since it's system generated we no longer need source_detail
channelController.partialChannelUpdate(unsetProperties: ["source_detail"])
// and finally update one of the nested fields in the channel_detail
channelController.partialChannelUpdate(extraData:["channel_detail.topic": "Nature"])Updating a Channel
There are two ways to update a channel with the Stream API: partial updates and full updates. A partial update preserves existing custom key–value data, while a full update replaces the entire channel object and removes any fields not included in the request.
Partial Update
A partial update lets you set or unset specific fields without affecting the rest of the channel’s custom data — essentially a patch-style update.
Full Update
The update function updates all of the channel data. Any data that is present on the channel and not included in a full update will be deleted.
let channelController = chatClient.channelController(for: .init(type: .messaging, id: "general"))
channelController.updateChannel(
name: "My special channel",
imageURL: nil,
team: nil,
extraData: [
"name": .string("myspecialchannel"),
"color": .string("green"),
]
) { error in
if let error {
// handle error
}
}Request Params
| Name | Type | Description | Optional |
|---|---|---|---|
| channel data | object | Object with the new channel information. One special field is "frozen". Setting this field to true will freeze the channel. Read more about freezing channels in "Freezing Channels" | |
| text | object | Message object allowing you to show a system message in the Channel that something changed. | Yes |
Updating a channel using these methods cannot be used to add or remove members. For this, you must use specific methods for adding/removing members, more information can be found here.