stream-chat-ruby 3.22.0 → 3.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/lib/stream-chat/channel.rb +19 -3
- data/lib/stream-chat/channel_batch_updater.rb +214 -0
- data/lib/stream-chat/client.rb +25 -0
- data/lib/stream-chat/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9b7896b214aa6d889a30c567056fdf2d0f6d4b6220d83a17acee469ba2b88aca
|
|
4
|
+
data.tar.gz: 4d7127a19485858f8ff18eef48996adc46dc4f6ae5661c6813a984a38017dd4b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 152671fd7190cb2762c3499996ade2c7fd4d4e1dfa823a05214da862d399ae39bcef64183b6ebd6e23912cba9b1685e93b8a1b7e4a06a43f8248d129bd460de4
|
|
7
|
+
data.tar.gz: 5f92a082a28faedd95b017fcc5f70f43b7c82d386da8149e4d50b03a60486f63360588b9ae280e8c71aff086cdecf6a60209fd447156e1315a02fea983b447fa
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [3.23.0](https://github.com/GetStream/stream-chat-ruby/compare/v3.22.0...v3.23.0) (2026-01-29)
|
|
6
|
+
|
|
5
7
|
## [3.22.0](https://github.com/GetStream/stream-chat-ruby/compare/v3.21.0...v3.22.0) (2026-01-15)
|
|
6
8
|
|
|
7
9
|
## [3.21.0](https://github.com/GetStream/stream-chat-ruby/compare/v3.20.0...v3.21.0) (2025-11-12)
|
data/lib/stream-chat/channel.rb
CHANGED
|
@@ -97,6 +97,22 @@ module StreamChat
|
|
|
97
97
|
state
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
+
# Refreshes the channel state from the server.
|
|
101
|
+
# Updates the channel's members attribute with fresh data.
|
|
102
|
+
sig { returns(StreamChat::StreamResponse) }
|
|
103
|
+
def refresh_state
|
|
104
|
+
url = "channels/#{@channel_type}/#{@id}/query"
|
|
105
|
+
state = @client.post(url, data: { state: true })
|
|
106
|
+
|
|
107
|
+
# Members can be at top level or inside channel object (like Go's updateChannel)
|
|
108
|
+
if state['members'] && !state['members'].empty?
|
|
109
|
+
@members = state['members']
|
|
110
|
+
elsif state['channel'] && state['channel']['members']
|
|
111
|
+
@members = state['channel']['members']
|
|
112
|
+
end
|
|
113
|
+
state
|
|
114
|
+
end
|
|
115
|
+
|
|
100
116
|
# Queries members of a channel.
|
|
101
117
|
#
|
|
102
118
|
# The queryMembers endpoint allows you to list and paginate members from a channel. The
|
|
@@ -323,9 +339,9 @@ module StreamChat
|
|
|
323
339
|
end
|
|
324
340
|
|
|
325
341
|
# Removes the ban for a user on this channel.
|
|
326
|
-
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
|
327
|
-
def unban_user(user_id)
|
|
328
|
-
@client.unban_user(user_id, type: @channel_type, id: @id)
|
|
342
|
+
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
|
343
|
+
def unban_user(user_id, **options)
|
|
344
|
+
@client.unban_user(user_id, type: @channel_type, id: @id, **options)
|
|
329
345
|
end
|
|
330
346
|
|
|
331
347
|
# Removes a channel from query channel requests for that user until a new message is added.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'stream-chat/client'
|
|
5
|
+
require 'stream-chat/stream_response'
|
|
6
|
+
require 'stream-chat/types'
|
|
7
|
+
|
|
8
|
+
module StreamChat
|
|
9
|
+
class ChannelBatchUpdater
|
|
10
|
+
extend T::Sig
|
|
11
|
+
|
|
12
|
+
sig { params(client: StreamChat::Client).void }
|
|
13
|
+
def initialize(client)
|
|
14
|
+
@client = client
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Member operations
|
|
18
|
+
|
|
19
|
+
# addMembers - Add members to channels matching the filter
|
|
20
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
21
|
+
# @param members [T.any(T::Array[String], T::Array[StringKeyHash])] Members to add
|
|
22
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
23
|
+
sig { params(filter: StringKeyHash, members: T.any(T::Array[String], T::Array[StringKeyHash])).returns(StreamChat::StreamResponse) }
|
|
24
|
+
def add_members(filter, members)
|
|
25
|
+
@client.update_channels_batch(
|
|
26
|
+
{
|
|
27
|
+
operation: 'addMembers',
|
|
28
|
+
filter: filter,
|
|
29
|
+
members: members
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# removeMembers - Remove members from channels matching the filter
|
|
35
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
36
|
+
# @param members [T::Array[StringKeyHash]] Members to remove (each with user_id key)
|
|
37
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
38
|
+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
|
|
39
|
+
def remove_members(filter, members)
|
|
40
|
+
@client.update_channels_batch(
|
|
41
|
+
{
|
|
42
|
+
operation: 'removeMembers',
|
|
43
|
+
filter: filter,
|
|
44
|
+
members: members
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# inviteMembers - Invite members to channels matching the filter
|
|
50
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
51
|
+
# @param members [T.any(T::Array[String], T::Array[StringKeyHash])] Members to invite
|
|
52
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
53
|
+
sig { params(filter: StringKeyHash, members: T.any(T::Array[String], T::Array[StringKeyHash])).returns(StreamChat::StreamResponse) }
|
|
54
|
+
def invite_members(filter, members)
|
|
55
|
+
@client.update_channels_batch(
|
|
56
|
+
{
|
|
57
|
+
operation: 'invites',
|
|
58
|
+
filter: filter,
|
|
59
|
+
members: members
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# addModerators - Add moderators to channels matching the filter
|
|
65
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
66
|
+
# @param members [T::Array[String]] Member IDs to promote to moderator
|
|
67
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
68
|
+
sig { params(filter: StringKeyHash, members: T::Array[String]).returns(StreamChat::StreamResponse) }
|
|
69
|
+
def add_moderators(filter, members)
|
|
70
|
+
@client.update_channels_batch(
|
|
71
|
+
{
|
|
72
|
+
operation: 'addModerators',
|
|
73
|
+
filter: filter,
|
|
74
|
+
members: members
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# demoteModerators - Remove moderator role from members in channels matching the filter
|
|
80
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
81
|
+
# @param members [T::Array[String]] Member IDs to demote
|
|
82
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
83
|
+
sig { params(filter: StringKeyHash, members: T::Array[String]).returns(StreamChat::StreamResponse) }
|
|
84
|
+
def demote_moderators(filter, members)
|
|
85
|
+
@client.update_channels_batch(
|
|
86
|
+
{
|
|
87
|
+
operation: 'demoteModerators',
|
|
88
|
+
filter: filter,
|
|
89
|
+
members: members
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# assignRoles - Assign roles to members in channels matching the filter
|
|
95
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
96
|
+
# @param members [T::Array[StringKeyHash]] Members with role assignments
|
|
97
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
98
|
+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
|
|
99
|
+
def assign_roles(filter, members)
|
|
100
|
+
@client.update_channels_batch(
|
|
101
|
+
{
|
|
102
|
+
operation: 'assignRoles',
|
|
103
|
+
filter: filter,
|
|
104
|
+
members: members
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Visibility operations
|
|
110
|
+
|
|
111
|
+
# hide - Hide channels matching the filter
|
|
112
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
113
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
114
|
+
sig { params(filter: StringKeyHash).returns(StreamChat::StreamResponse) }
|
|
115
|
+
def hide(filter)
|
|
116
|
+
@client.update_channels_batch(
|
|
117
|
+
{
|
|
118
|
+
operation: 'hide',
|
|
119
|
+
filter: filter
|
|
120
|
+
}
|
|
121
|
+
)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# show - Show channels matching the filter
|
|
125
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
126
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
127
|
+
sig { params(filter: StringKeyHash).returns(StreamChat::StreamResponse) }
|
|
128
|
+
def show(filter)
|
|
129
|
+
@client.update_channels_batch(
|
|
130
|
+
{
|
|
131
|
+
operation: 'show',
|
|
132
|
+
filter: filter
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# archive - Archive channels matching the filter for specified members
|
|
138
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
139
|
+
# @param members [T::Array[StringKeyHash]] Members to archive channels for (each with user_id key)
|
|
140
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
141
|
+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
|
|
142
|
+
def archive(filter, members)
|
|
143
|
+
@client.update_channels_batch(
|
|
144
|
+
{
|
|
145
|
+
operation: 'archive',
|
|
146
|
+
filter: filter,
|
|
147
|
+
members: members
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# unarchive - Unarchive channels matching the filter for specified members
|
|
153
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
154
|
+
# @param members [T::Array[StringKeyHash]] Members to unarchive channels for (each with user_id key)
|
|
155
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
156
|
+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
|
|
157
|
+
def unarchive(filter, members)
|
|
158
|
+
@client.update_channels_batch(
|
|
159
|
+
{
|
|
160
|
+
operation: 'unarchive',
|
|
161
|
+
filter: filter,
|
|
162
|
+
members: members
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Data operations
|
|
168
|
+
|
|
169
|
+
# updateData - Update data on channels matching the filter
|
|
170
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
171
|
+
# @param data [StringKeyHash] Data to update
|
|
172
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
173
|
+
sig { params(filter: StringKeyHash, data: StringKeyHash).returns(StreamChat::StreamResponse) }
|
|
174
|
+
def update_data(filter, data)
|
|
175
|
+
@client.update_channels_batch(
|
|
176
|
+
{
|
|
177
|
+
operation: 'updateData',
|
|
178
|
+
filter: filter,
|
|
179
|
+
data: data
|
|
180
|
+
}
|
|
181
|
+
)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# addFilterTags - Add filter tags to channels matching the filter
|
|
185
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
186
|
+
# @param tags [T::Array[String]] Tags to add
|
|
187
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
188
|
+
sig { params(filter: StringKeyHash, tags: T::Array[String]).returns(StreamChat::StreamResponse) }
|
|
189
|
+
def add_filter_tags(filter, tags)
|
|
190
|
+
@client.update_channels_batch(
|
|
191
|
+
{
|
|
192
|
+
operation: 'addFilterTags',
|
|
193
|
+
filter: filter,
|
|
194
|
+
filter_tags_update: tags
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# removeFilterTags - Remove filter tags from channels matching the filter
|
|
200
|
+
# @param filter [StringKeyHash] Filter to select channels
|
|
201
|
+
# @param tags [T::Array[String]] Tags to remove
|
|
202
|
+
# @return [StreamChat::StreamResponse] The server response
|
|
203
|
+
sig { params(filter: StringKeyHash, tags: T::Array[String]).returns(StreamChat::StreamResponse) }
|
|
204
|
+
def remove_filter_tags(filter, tags)
|
|
205
|
+
@client.update_channels_batch(
|
|
206
|
+
{
|
|
207
|
+
operation: 'removeFilterTags',
|
|
208
|
+
filter: filter,
|
|
209
|
+
filter_tags_update: tags
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end
|
data/lib/stream-chat/client.rb
CHANGED
|
@@ -17,6 +17,7 @@ require 'stream-chat/version'
|
|
|
17
17
|
require 'stream-chat/util'
|
|
18
18
|
require 'stream-chat/types'
|
|
19
19
|
require 'stream-chat/moderation'
|
|
20
|
+
require 'stream-chat/channel_batch_updater'
|
|
20
21
|
|
|
21
22
|
module StreamChat
|
|
22
23
|
DEFAULT_BLOCKLIST = 'profanity_en_2020_v1'
|
|
@@ -485,6 +486,15 @@ module StreamChat
|
|
|
485
486
|
get('query_banned_users', params: { payload: params.to_json })
|
|
486
487
|
end
|
|
487
488
|
|
|
489
|
+
# Queries future channel bans.
|
|
490
|
+
#
|
|
491
|
+
# Future channel bans are automatically applied when a user creates a new channel
|
|
492
|
+
# or adds a member to an existing channel.
|
|
493
|
+
sig { params(options: T.untyped).returns(StreamChat::StreamResponse) }
|
|
494
|
+
def query_future_channel_bans(**options)
|
|
495
|
+
get('query_future_channel_bans', params: { payload: options.to_json })
|
|
496
|
+
end
|
|
497
|
+
|
|
488
498
|
# Allows you to search for users and see if they are online/offline.
|
|
489
499
|
# You can filter and sort on the custom fields you've set for your user, the user id, and when the user was last active.
|
|
490
500
|
sig { params(filter_conditions: StringKeyHash, sort: T.nilable(T::Hash[String, Integer]), options: T.untyped).returns(StreamChat::StreamResponse) }
|
|
@@ -1170,6 +1180,21 @@ module StreamChat
|
|
|
1170
1180
|
post('channels/delivered', data: data || {}, params: { user_id: user_id })
|
|
1171
1181
|
end
|
|
1172
1182
|
|
|
1183
|
+
# Update channels in batch.
|
|
1184
|
+
# @param payload [StringKeyHash] Payload containing operation, filter, and optional members/data/filter_tags_update
|
|
1185
|
+
# @return [StreamChat::StreamResponse] API response
|
|
1186
|
+
sig { params(payload: StringKeyHash).returns(StreamChat::StreamResponse) }
|
|
1187
|
+
def update_channels_batch(payload)
|
|
1188
|
+
put('channels/batch', data: payload)
|
|
1189
|
+
end
|
|
1190
|
+
|
|
1191
|
+
# Returns a ChannelBatchUpdater instance for batch channel operations.
|
|
1192
|
+
# @return [StreamChat::ChannelBatchUpdater] A ChannelBatchUpdater instance
|
|
1193
|
+
sig { returns(StreamChat::ChannelBatchUpdater) }
|
|
1194
|
+
def channel_batch_updater
|
|
1195
|
+
ChannelBatchUpdater.new(self)
|
|
1196
|
+
end
|
|
1197
|
+
|
|
1173
1198
|
private
|
|
1174
1199
|
|
|
1175
1200
|
sig { returns(T::Hash[String, String]) }
|
data/lib/stream-chat/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stream-chat-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.23.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- getstream.io
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-01-
|
|
11
|
+
date: 2026-01-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -115,6 +115,7 @@ files:
|
|
|
115
115
|
- lib/stream-chat.rb
|
|
116
116
|
- lib/stream-chat/campaign.rb
|
|
117
117
|
- lib/stream-chat/channel.rb
|
|
118
|
+
- lib/stream-chat/channel_batch_updater.rb
|
|
118
119
|
- lib/stream-chat/client.rb
|
|
119
120
|
- lib/stream-chat/errors.rb
|
|
120
121
|
- lib/stream-chat/moderation.rb
|