Describe the bug
I've got code which, on visiting the "messenger" page for the first time, attempts to create a user and add them to a default list of channels.
I create a token using client.create_token, then attempt to add the user to a few channels.
However, I'm getting the exception
StreamChat::StreamAPIException (StreamChat error code 4: UpdateChannel failed with error: "The following users are involved in channel update operation, but don't exist: [94461a35e0a73734438dba5ba10bbb74]. Please create the user objects before setting up the channel.")
client.create_token returns a 200 success and also returns a token.
The only exception I get is when I consequently try to add the user, using my manually generated user_id, to channels.
This was working yesterday - my code around user creation doesn't seem to have changed.
To Reproduce
- Create a user using
client.create_token(id) (I'm using id = SecureRandom.hex(16)) - Attempt to add user using
channel.add_members([id])
Expected behavior
The create_token endpoint should:
- create a user if params are valid (which in this case they are); AND
- return an error if params are invalid OR the server is experience issues, so error handling can be handled
Package version
stream-chat-react: 10.14.0
stream-chat-css: 3.13.0
Desktop (please complete the following information):
OS: MacOS Ventura 13.2
Browser: Chrome
Version: 118.0.5993.70
Additional context
require"securerandom"classChatsController < ApplicationController# ...defshow# NOTE: I've checked this ENV vars are set correctlyif(ENV["STREAM_API_KEY"] && ENV["STREAM_API_SECRET"]).present?ifcurrent_user.stream_user_id.nil?@stream_user_id=SecureRandom.hex(16)# NOTE: the line below fails silently@stream_user_token=StreamChatClient.create_stream_user(id: @stream_user_id)current_user.update!(stream_user_id: @stream_user_id,stream_user_token: @stream_user_token)else@stream_user_id=current_user.stream_user_id@stream_user_token=current_user.stream_user_tokenendadd_current_user_to_channelselse# ...endendprivatedefadd_current_user_to_channels[{type: "messaging",id: "general"},{type: "messaging",id: "feedback-and-requests"},{type: "messaging",id: "bugs"},].eachdo |channel|
channel=StreamChatClient.get_channel(type: channel[:type],channel_id: channel[:id],)unlessStreamChatClient.channel_include?(channel: channel,user_id: current_user.stream_user_id)StreamChatClient.add_member(channel: channel,user_id: current_user.stream_user_id)endendendendMy StreamChatClient class:
require "stream-chat"
class StreamChatClient
def self.add_member(channel:, user_id:)
channel.add_members([user_id])
end
def self.channel_include?(channel:, user_id:)
members = channel.query_members()["members"]
members.map{ |member| member["user_id"] }.include?(user_id)
end
def self.get_channel(type:, channel_id:)
client.channel(type, channel_id: channel_id)
end
def self.create_stream_user(id:)
client.create_token(id)
end
private
def self.client
StreamChat::Client.new(
api_key=ENV["STREAM_API_KEY"],
api_secret=ENV["STREAM_API_SECRET"]
)
end
end
Describe the bug
I've got code which, on visiting the "messenger" page for the first time, attempts to create a user and add them to a default list of channels.
I create a token using
client.create_token, then attempt to add the user to a few channels.However, I'm getting the exception
client.create_tokenreturns a200success and also returns a token.The only exception I get is when I consequently try to add the user, using my manually generated
user_id, to channels.This was working yesterday - my code around user creation doesn't seem to have changed.
To Reproduce
client.create_token(id)(I'm usingid = SecureRandom.hex(16))channel.add_members([id])Expected behavior
The
create_tokenendpoint should:Package version
stream-chat-react: 10.14.0
stream-chat-css: 3.13.0
Desktop (please complete the following information):
OS: MacOS Ventura 13.2
Browser: Chrome
Version: 118.0.5993.70
Additional context
My
StreamChatClientclass: