Skip to content

Commit faa95f6

Browse files
authored
Merge branch 'develop' into port/v6-to-develop/message-buffer-config
2 parents a9972f1 + 339cd7e commit faa95f6

155 files changed

Lines changed: 6906 additions & 923 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818

1919
<div align="center">
2020

21-
![stream-chat-android-client](https://img.shields.io/badge/stream--chat--android--client-5.82%20MB-lightgreen)
22-
![stream-chat-android-ui-components](https://img.shields.io/badge/stream--chat--android--ui--components-11.02%20MB-lightgreen)
23-
![stream-chat-android-compose](https://img.shields.io/badge/stream--chat--android--compose-12.41%20MB-lightgreen)
21+
![stream-chat-android-client](https://img.shields.io/badge/stream--chat--android--client-5.83%20MB-lightgreen)
22+
![stream-chat-android-ui-components](https://img.shields.io/badge/stream--chat--android--ui--components-11.07%20MB-lightgreen)
23+
![stream-chat-android-compose](https://img.shields.io/badge/stream--chat--android--compose-12.46%20MB-lightgreen)
2424

2525
</div>
2626

metrics/size.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"debug": {
3-
"stream-chat-android-client": 7840,
4-
"stream-chat-android-ui-components": 14224,
5-
"stream-chat-android-compose": 16156
3+
"stream-chat-android-client": 7856,
4+
"stream-chat-android-ui-components": 14288,
5+
"stream-chat-android-compose": 16208
66
},
77
"release": {
8-
"stream-chat-android-client": 5960,
9-
"stream-chat-android-ui-components": 11288,
10-
"stream-chat-android-compose": 12716
8+
"stream-chat-android-client": 5972,
9+
"stream-chat-android-ui-components": 11336,
10+
"stream-chat-android-compose": 12764
1111
}
1212
}

stream-chat-android-client-test/src/main/java/io/getstream/chat/android/client/test/Mother.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,17 @@ public fun randomQueryChannelsSpec(
662662
filter: FilterObject = NeutralFilterObject,
663663
sort: QuerySorter<Channel> = QuerySortByField(),
664664
cids: Set<String> = emptySet(),
665-
): QueryChannelsSpec = QueryChannelsSpec(filter, sort).apply { this.cids = cids }
665+
predefinedFilterName: String? = null,
666+
predefinedFilterValues: Map<String, Any>? = null,
667+
predefinedSortValues: Map<String, Any>? = null,
668+
): QueryChannelsSpec = QueryChannelsSpec(
669+
filter = filter,
670+
querySort = sort,
671+
cids = cids,
672+
predefinedFilterName = predefinedFilterName,
673+
predefinedFilterValues = predefinedFilterValues,
674+
predefinedSortValues = predefinedSortValues,
675+
)
666676

667677
public fun randomNotificationRemovedFromChannelEvent(
668678
cid: String = randomCID(),

stream-chat-android-client/api/stream-chat-android-client.api

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -609,25 +609,45 @@ public class io/getstream/chat/android/client/api/models/QueryChannelRequest : i
609609
}
610610

611611
public final class io/getstream/chat/android/client/api/models/QueryChannelsRequest : io/getstream/chat/android/client/api/models/ChannelRequest {
612+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;I)V
613+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;II)V
614+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;)V
615+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;)V
612616
public fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;)V
613-
public synthetic fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
617+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;)V
618+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Map;)V
619+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;)V
620+
public synthetic fun <init> (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
621+
public fun <init> (Ljava/lang/String;I)V
622+
public fun <init> (Ljava/lang/String;ILjava/util/Map;)V
623+
public fun <init> (Ljava/lang/String;ILjava/util/Map;Ljava/util/Map;)V
624+
public fun <init> (Ljava/lang/String;ILjava/util/Map;Ljava/util/Map;I)V
625+
public fun <init> (Ljava/lang/String;ILjava/util/Map;Ljava/util/Map;ILjava/lang/Integer;)V
626+
public fun <init> (Ljava/lang/String;ILjava/util/Map;Ljava/util/Map;ILjava/lang/Integer;Ljava/lang/Integer;)V
627+
public synthetic fun <init> (Ljava/lang/String;ILjava/util/Map;Ljava/util/Map;ILjava/lang/Integer;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
614628
public final fun component1 ()Lio/getstream/chat/android/models/FilterObject;
615629
public final fun component2 ()I
616630
public final fun component3 ()I
617631
public final fun component4 ()Lio/getstream/chat/android/models/querysort/QuerySorter;
618632
public final fun component5 ()Ljava/lang/Integer;
619633
public final fun component6 ()Ljava/lang/Integer;
620-
public final fun copy (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;)Lio/getstream/chat/android/client/api/models/QueryChannelsRequest;
621-
public static synthetic fun copy$default (Lio/getstream/chat/android/client/api/models/QueryChannelsRequest;Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;ILjava/lang/Object;)Lio/getstream/chat/android/client/api/models/QueryChannelsRequest;
634+
public final fun component7 ()Ljava/lang/String;
635+
public final fun component8 ()Ljava/util/Map;
636+
public final fun component9 ()Ljava/util/Map;
637+
public final fun copy (Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;)Lio/getstream/chat/android/client/api/models/QueryChannelsRequest;
638+
public static synthetic fun copy$default (Lio/getstream/chat/android/client/api/models/QueryChannelsRequest;Lio/getstream/chat/android/models/FilterObject;IILio/getstream/chat/android/models/querysort/QuerySorter;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Lio/getstream/chat/android/client/api/models/QueryChannelsRequest;
622639
public fun equals (Ljava/lang/Object;)Z
623640
public final fun getFilter ()Lio/getstream/chat/android/models/FilterObject;
641+
public final fun getFilterValues ()Ljava/util/Map;
624642
public final fun getLimit ()I
625643
public final fun getMemberLimit ()Ljava/lang/Integer;
626644
public final fun getMessageLimit ()Ljava/lang/Integer;
627645
public final fun getOffset ()I
646+
public final fun getPredefinedFilter ()Ljava/lang/String;
628647
public fun getPresence ()Z
629648
public final fun getQuerySort ()Lio/getstream/chat/android/models/querysort/QuerySorter;
630649
public final fun getSort ()Ljava/util/List;
650+
public final fun getSortValues ()Ljava/util/Map;
631651
public fun getState ()Z
632652
public fun getWatch ()Z
633653
public fun hashCode ()I
@@ -3078,6 +3098,34 @@ public final class io/getstream/chat/android/client/internal/offline/repository/
30783098
public fun toString ()Ljava/lang/String;
30793099
}
30803100

3101+
public final class io/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Predefined : io/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier {
3102+
public fun <init> (Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;)V
3103+
public final fun component1 ()Ljava/lang/String;
3104+
public final fun component2 ()Ljava/util/Map;
3105+
public final fun component3 ()Ljava/util/Map;
3106+
public final fun copy (Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;)Lio/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Predefined;
3107+
public static synthetic fun copy$default (Lio/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Predefined;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Lio/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Predefined;
3108+
public fun equals (Ljava/lang/Object;)Z
3109+
public final fun getFilterValues ()Ljava/util/Map;
3110+
public final fun getName ()Ljava/lang/String;
3111+
public final fun getSortValues ()Ljava/util/Map;
3112+
public fun hashCode ()I
3113+
public fun toString ()Ljava/lang/String;
3114+
}
3115+
3116+
public final class io/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Standard : io/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier {
3117+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;)V
3118+
public final fun component1 ()Lio/getstream/chat/android/models/FilterObject;
3119+
public final fun component2 ()Lio/getstream/chat/android/models/querysort/QuerySorter;
3120+
public final fun copy (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;)Lio/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Standard;
3121+
public static synthetic fun copy$default (Lio/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Standard;Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;ILjava/lang/Object;)Lio/getstream/chat/android/client/internal/state/plugin/QueryChannelsIdentifier$Standard;
3122+
public fun equals (Ljava/lang/Object;)Z
3123+
public final fun getFilter ()Lio/getstream/chat/android/models/FilterObject;
3124+
public final fun getSort ()Lio/getstream/chat/android/models/querysort/QuerySorter;
3125+
public fun hashCode ()I
3126+
public fun toString ()Ljava/lang/String;
3127+
}
3128+
30813129
public final class io/getstream/chat/android/client/logger/ChatLogLevel : java/lang/Enum {
30823130
public static final field ALL Lio/getstream/chat/android/client/logger/ChatLogLevel;
30833131
public static final field DEBUG Lio/getstream/chat/android/client/logger/ChatLogLevel;
@@ -3302,13 +3350,24 @@ public final class io/getstream/chat/android/client/query/CreateChannelParams {
33023350

33033351
public final class io/getstream/chat/android/client/query/QueryChannelsSpec {
33043352
public fun <init> (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;)V
3353+
public fun <init> (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;Ljava/util/Set;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;)V
3354+
public synthetic fun <init> (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;Ljava/util/Set;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
33053355
public final fun component1 ()Lio/getstream/chat/android/models/FilterObject;
33063356
public final fun component2 ()Lio/getstream/chat/android/models/querysort/QuerySorter;
3357+
public final fun component3 ()Ljava/util/Set;
3358+
public final fun component4 ()Ljava/lang/String;
3359+
public final fun component5 ()Ljava/util/Map;
3360+
public final fun component6 ()Ljava/util/Map;
33073361
public final fun copy (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;)Lio/getstream/chat/android/client/query/QueryChannelsSpec;
3362+
public final fun copy (Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;Ljava/util/Set;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;)Lio/getstream/chat/android/client/query/QueryChannelsSpec;
33083363
public static synthetic fun copy$default (Lio/getstream/chat/android/client/query/QueryChannelsSpec;Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;ILjava/lang/Object;)Lio/getstream/chat/android/client/query/QueryChannelsSpec;
3364+
public static synthetic fun copy$default (Lio/getstream/chat/android/client/query/QueryChannelsSpec;Lio/getstream/chat/android/models/FilterObject;Lio/getstream/chat/android/models/querysort/QuerySorter;Ljava/util/Set;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Lio/getstream/chat/android/client/query/QueryChannelsSpec;
33093365
public fun equals (Ljava/lang/Object;)Z
33103366
public final fun getCids ()Ljava/util/Set;
33113367
public final fun getFilter ()Lio/getstream/chat/android/models/FilterObject;
3368+
public final fun getPredefinedFilterName ()Ljava/lang/String;
3369+
public final fun getPredefinedFilterValues ()Ljava/util/Map;
3370+
public final fun getPredefinedSortValues ()Ljava/util/Map;
33123371
public final fun getQuerySort ()Lio/getstream/chat/android/models/querysort/QuerySorter;
33133372
public fun hashCode ()I
33143373
public final fun setCids (Ljava/util/Set;)V

stream-chat-android-client/src/main/java/io/getstream/chat/android/client/ChatClient.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import io.getstream.chat.android.client.api.models.GetThreadOptions
3535
import io.getstream.chat.android.client.api.models.PinnedMessagesPagination
3636
import io.getstream.chat.android.client.api.models.QueryChannelRequest
3737
import io.getstream.chat.android.client.api.models.QueryChannelsRequest
38+
import io.getstream.chat.android.client.api.models.QueryChannelsResult
3839
import io.getstream.chat.android.client.api.models.QueryThreadsRequest
3940
import io.getstream.chat.android.client.api.models.QueryUsersRequest
4041
import io.getstream.chat.android.client.api.models.SendActionRequest
@@ -2973,7 +2974,7 @@ internal constructor(
29732974
*/
29742975
@CheckResult
29752976
@InternalStreamChatApi
2976-
public fun queryChannelsInternal(request: QueryChannelsRequest): Call<List<Channel>> {
2977+
public fun queryChannelsInternal(request: QueryChannelsRequest): Call<QueryChannelsResult> {
29772978
return api.queryChannels(request)
29782979
}
29792980

@@ -3001,7 +3002,7 @@ internal constructor(
30013002
this.watch = false
30023003
this.state = state
30033004
}
3004-
when (val result = api.queryChannels(request).await()) {
3005+
when (val result = api.queryChannels(request).map { it.channels }.await()) {
30053006
is Result.Success -> {
30063007
val channels = result.value
30073008
if (channels.isEmpty()) {
@@ -3112,7 +3113,7 @@ internal constructor(
31123113
@CheckResult
31133114
public fun queryChannels(request: QueryChannelsRequest): Call<List<Channel>> {
31143115
logger.d { "[queryChannels] offset: ${request.offset}, limit: ${request.limit}" }
3115-
return queryChannelsInternal(request = request).doOnStart(userScope) {
3116+
return api.queryChannels(request).doOnStart(userScope) {
31163117
plugins.forEach { listener ->
31173118
logger.v { "[queryChannels] #doOnStart; plugin: ${listener::class.qualifiedName}" }
31183119
listener.onQueryChannelsRequest(request)
@@ -3124,6 +3125,8 @@ internal constructor(
31243125
}
31253126
}.precondition(plugins) {
31263127
onQueryChannelsPrecondition(request)
3128+
}.map {
3129+
it.channels
31273130
}.share(userScope) {
31283131
QueryChannelsIdentifier(request)
31293132
}

stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api/ChatApi.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import io.getstream.chat.android.client.api.models.GetThreadOptions
2121
import io.getstream.chat.android.client.api.models.PinnedMessagesPagination
2222
import io.getstream.chat.android.client.api.models.QueryChannelRequest
2323
import io.getstream.chat.android.client.api.models.QueryChannelsRequest
24+
import io.getstream.chat.android.client.api.models.QueryChannelsResult
2425
import io.getstream.chat.android.client.api.models.QueryThreadsRequest
2526
import io.getstream.chat.android.client.api.models.QueryUsersRequest
2627
import io.getstream.chat.android.client.api.models.SendActionRequest
@@ -285,7 +286,7 @@ internal interface ChatApi {
285286
): Call<List<Message>>
286287

287288
@CheckResult
288-
fun queryChannels(query: QueryChannelsRequest): Call<List<Channel>>
289+
fun queryChannels(query: QueryChannelsRequest): Call<QueryChannelsResult>
289290

290291
@CheckResult
291292
fun updateUsers(users: List<User>): Call<List<User>>

stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api/internal/DistinctChatApi.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import io.getstream.chat.android.client.api.ChatApi
2020
import io.getstream.chat.android.client.api.models.PinnedMessagesPagination
2121
import io.getstream.chat.android.client.api.models.QueryChannelRequest
2222
import io.getstream.chat.android.client.api.models.QueryChannelsRequest
23+
import io.getstream.chat.android.client.api.models.QueryChannelsResult
2324
import io.getstream.chat.android.client.api2.optimisation.hash.ChannelQueryKey
2425
import io.getstream.chat.android.client.api2.optimisation.hash.GetNewerRepliesHash
2526
import io.getstream.chat.android.client.api2.optimisation.hash.GetPinnedMessagesHash
@@ -133,7 +134,7 @@ internal class DistinctChatApi(
133134
}
134135
}
135136

136-
override fun queryChannels(query: QueryChannelsRequest): Call<List<Channel>> {
137+
override fun queryChannels(query: QueryChannelsRequest): Call<QueryChannelsResult> {
137138
val uniqueKey = query.hashCode()
138139
StreamLog.d(TAG) { "[queryChannels] query: $query, uniqueKey: $uniqueKey" }
139140
return getOrCreate(uniqueKey) {

stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api/internal/DistinctChatApiEnabler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import io.getstream.chat.android.client.api.ChatApi
2020
import io.getstream.chat.android.client.api.models.PinnedMessagesPagination
2121
import io.getstream.chat.android.client.api.models.QueryChannelRequest
2222
import io.getstream.chat.android.client.api.models.QueryChannelsRequest
23+
import io.getstream.chat.android.client.api.models.QueryChannelsResult
2324
import io.getstream.chat.android.models.BannedUser
2425
import io.getstream.chat.android.models.BannedUsersSort
2526
import io.getstream.chat.android.models.Channel
@@ -77,7 +78,7 @@ internal class DistinctChatApiEnabler(
7778
return getApi().getPinnedMessages(channelType, channelId, limit, sort, pagination)
7879
}
7980

80-
override fun queryChannels(query: QueryChannelsRequest): Call<List<Channel>> {
81+
override fun queryChannels(query: QueryChannelsRequest): Call<QueryChannelsResult> {
8182
return getApi().queryChannels(query)
8283
}
8384

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright (c) 2014-2026 Stream.io Inc. All rights reserved.
3+
*
4+
* Licensed under the Stream License;
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://github.com/GetStream/stream-chat-android/blob/main/LICENSE
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.getstream.chat.android.client.api.models
18+
19+
import io.getstream.chat.android.core.internal.InternalStreamChatApi
20+
import io.getstream.chat.android.models.Channel
21+
import io.getstream.chat.android.models.FilterObject
22+
import io.getstream.chat.android.models.querysort.QuerySorter
23+
24+
/**
25+
* Represents a predefined filter parsed by the backend.
26+
*
27+
* @param filter The parsed filter specification.
28+
* @param sort The parsed sort specification, or locally calculated fallback if null.
29+
*/
30+
@InternalStreamChatApi
31+
public data class PredefinedFilter(
32+
val filter: FilterObject,
33+
val sort: QuerySorter<Channel>,
34+
)

0 commit comments

Comments
 (0)