From 655b5c4d84f3984cfc9f4617d37ef6c77909b6a9 Mon Sep 17 00:00:00 2001 From: Gian <47775302+gpunto@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:15:50 +0100 Subject: [PATCH 1/2] Add latest OpenAPI network code (31.10.2025) --- .../android/client/api/model/ActivityData.kt | 3 + .../client/api/model/FeedSuggestionData.kt | 23 ++++++ .../feeds/android/client/api/state/Feed.kt | 3 +- .../internal/model/ActivityOperations.kt | 1 + .../model/FeedSuggestionOperations.kt | 49 ++++++++++++ .../internal/repository/FeedsRepository.kt | 6 +- .../repository/FeedsRepositoryImpl.kt | 3 +- .../android/client/internal/state/FeedImpl.kt | 3 +- .../internal/http/FeedsSingleFlightApiTest.kt | 4 +- .../repository/AppRepositoryImplTest.kt | 4 +- .../repository/FeedsRepositoryImplTest.kt | 3 +- .../client/internal/state/FeedImplTest.kt | 4 +- .../android/client/internal/test/TestData.kt | 37 +++++++++- .../network/infrastructure/Serializer.kt | 4 + .../network/models/ActivityFeedbackEvent.kt | 49 ++++++++++++ .../models/ActivityFeedbackEventPayload.kt | 74 +++++++++++++++++++ .../network/models/ActivityFeedbackRequest.kt | 3 - .../models/ActivityReactionDeletedEvent.kt | 6 +- .../models/ActivityRemovedFromFeedEvent.kt | 6 +- .../network/models/ActivityResponse.kt | 4 +- .../network/models/ActivitySelectorConfig.kt | 1 + .../network/models/ActivityUnpinnedEvent.kt | 6 +- .../network/models/AppResponseFields.kt | 4 +- ...ivacySettings.kt => BlockActionRequest.kt} | 5 +- .../network/models/BookmarkAddedEvent.kt | 6 +- .../models/BookmarkFolderUpdatedEvent.kt | 6 +- .../network/models/BookmarkUpdatedEvent.kt | 6 +- .../network/models/CommentAddedEvent.kt | 6 +- .../network/models/DeleteActivityRequest.kt | 3 +- ...ngsResponse.kt => DeleteCommentRequest.kt} | 6 +- .../network/models/DeleteMessageRequest.kt | 3 +- .../network/models/DeleteReactionRequest.kt | 3 +- .../network/models/DeleteUserRequest.kt | 1 + .../feeds/android/network/models/FeedGroup.kt | 28 +++---- .../network/models/FeedMemberRemovedEvent.kt | 6 +- .../network/models/FeedSuggestionResponse.kt | 61 +++++++++++++++ .../models/GetFollowSuggestionsResponse.kt | 3 +- .../models/ModerationMarkReviewedEvent.kt | 6 +- .../network/models/PollClosedFeedEvent.kt | 6 +- .../network/models/PollVoteCastedFeedEvent.kt | 6 +- .../models/PollVoteRemovedFeedEvent.kt | 6 +- .../network/models/ReviewQueueItemResponse.kt | 5 ++ .../models/ShadowBlockActionRequest.kt | 5 +- .../network/models/StoriesFeedUpdatedEvent.kt | 10 ++- .../network/models/SubmitActionRequest.kt | 14 ++++ .../feeds/android/network/models/WSEvent.kt | 2 + .../sample/profile/ProfileViewModel.kt | 2 + 47 files changed, 424 insertions(+), 81 deletions(-) create mode 100644 stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt create mode 100644 stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/FeedSuggestionOperations.kt create mode 100644 stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEvent.kt create mode 100644 stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEventPayload.kt rename stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/{PrivacySettings.kt => BlockActionRequest.kt} (84%) rename stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/{PrivacySettingsResponse.kt => DeleteCommentRequest.kt} (82%) create mode 100644 stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedSuggestionResponse.kt diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/ActivityData.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/ActivityData.kt index 8266dc2b2..73530b4d8 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/ActivityData.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/ActivityData.kt @@ -58,6 +58,8 @@ import java.util.Date * @property feeds The list of feed IDs where this activity appears. An activity can appear in * multiple feeds simultaneously. * @property filterTags Tags used for content filtering and categorization. + * @property hidden Whether the activity has been hidden by the current user. Hidden activities may + * be filtered from feed views depending on application logic. * @property id The unique identifier of the activity. * @property interestTags Tags indicating user interests or content categories for recommendation * purposes. @@ -105,6 +107,7 @@ public data class ActivityData( val expiresAt: Date?, val feeds: List, val filterTags: List, + val hidden: Boolean, val id: String, val interestTags: List, val isWatched: Boolean?, diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt new file mode 100644 index 000000000..6105cb699 --- /dev/null +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2014-2025 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-feeds-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getstream.feeds.android.client.api.model + +public data class FeedSuggestionData( + public val feed: FeedData, + public val algorithmScores: Map?, + public val reason: String?, + public val recommendationScore: Float?, +) diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/state/Feed.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/state/Feed.kt index b33f51a80..250dc08eb 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/state/Feed.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/state/Feed.kt @@ -23,6 +23,7 @@ import io.getstream.feeds.android.client.api.model.FeedAddActivityRequest import io.getstream.feeds.android.client.api.model.FeedData import io.getstream.feeds.android.client.api.model.FeedId import io.getstream.feeds.android.client.api.model.FeedMemberData +import io.getstream.feeds.android.client.api.model.FeedSuggestionData import io.getstream.feeds.android.client.api.model.FeedsReactionData import io.getstream.feeds.android.client.api.model.FollowData import io.getstream.feeds.android.client.api.model.ModelUpdates @@ -282,7 +283,7 @@ public interface Feed { * @return A [Result] containing a list of [FeedData] representing the suggested feeds if * successful, or an error if the operation fails. */ - public suspend fun queryFollowSuggestions(limit: Int?): Result> + public suspend fun queryFollowSuggestions(limit: Int?): Result> /** * Follows another feed. diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/ActivityOperations.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/ActivityOperations.kt index 2cc05d839..bcb19ee69 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/ActivityOperations.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/ActivityOperations.kt @@ -41,6 +41,7 @@ internal fun ActivityResponse.toModel(): ActivityData = expiresAt = expiresAt, feeds = feeds, filterTags = filterTags, + hidden = hidden, id = id, interestTags = interestTags, isWatched = isWatched, diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/FeedSuggestionOperations.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/FeedSuggestionOperations.kt new file mode 100644 index 000000000..f8a29c59d --- /dev/null +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/FeedSuggestionOperations.kt @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014-2025 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-feeds-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getstream.feeds.android.client.internal.model + +import io.getstream.feeds.android.client.api.model.FeedData +import io.getstream.feeds.android.client.api.model.FeedId +import io.getstream.feeds.android.client.api.model.FeedSuggestionData +import io.getstream.feeds.android.network.models.FeedSuggestionResponse + +internal fun FeedSuggestionResponse.toModel(): FeedSuggestionData = + FeedSuggestionData( + feed = + FeedData( + createdAt = createdAt, + createdBy = createdBy.toModel(), + custom = custom, + deletedAt = deletedAt, + description = description, + fid = FeedId(feed), + filterTags = filterTags, + followerCount = followerCount, + followingCount = followingCount, + groupId = groupId, + id = id, + memberCount = memberCount, + ownCapabilities = ownCapabilities.orEmpty(), + ownMembership = ownMembership?.toModel(), + name = name, + pinCount = pinCount, + updatedAt = updatedAt, + visibility = visibility, + ), + algorithmScores = algorithmScores, + reason = reason, + recommendationScore = recommendationScore, + ) diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepository.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepository.kt index 616a2dfb6..ea443d2ff 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepository.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepository.kt @@ -21,6 +21,7 @@ import io.getstream.feeds.android.client.api.model.AggregatedActivityData import io.getstream.feeds.android.client.api.model.FeedData import io.getstream.feeds.android.client.api.model.FeedId import io.getstream.feeds.android.client.api.model.FeedMemberData +import io.getstream.feeds.android.client.api.model.FeedSuggestionData import io.getstream.feeds.android.client.api.model.FollowData import io.getstream.feeds.android.client.api.model.ModelUpdates import io.getstream.feeds.android.client.api.state.query.FeedQuery @@ -70,7 +71,10 @@ internal interface FeedsRepository { // BEGIN: Follows - suspend fun queryFollowSuggestions(feedGroupId: String, limit: Int?): Result> + suspend fun queryFollowSuggestions( + feedGroupId: String, + limit: Int?, + ): Result> suspend fun queryFollows(request: QueryFollowsRequest): Result> diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImpl.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImpl.kt index e3377c791..6432155f5 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImpl.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImpl.kt @@ -20,6 +20,7 @@ import io.getstream.android.core.result.runSafely import io.getstream.feeds.android.client.api.model.FeedData import io.getstream.feeds.android.client.api.model.FeedId import io.getstream.feeds.android.client.api.model.FeedMemberData +import io.getstream.feeds.android.client.api.model.FeedSuggestionData import io.getstream.feeds.android.client.api.model.FollowData import io.getstream.feeds.android.client.api.model.ModelUpdates import io.getstream.feeds.android.client.api.model.PaginationData @@ -120,7 +121,7 @@ internal class FeedsRepositoryImpl(private val api: FeedsApi) : FeedsRepository override suspend fun queryFollowSuggestions( feedGroupId: String, limit: Int?, - ): Result> = runSafely { + ): Result> = runSafely { api.getFollowSuggestions(feedGroupId = feedGroupId, limit = limit).suggestions.map { it.toModel() } diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/state/FeedImpl.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/state/FeedImpl.kt index 05ea70dfb..181d4759e 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/state/FeedImpl.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/state/FeedImpl.kt @@ -24,6 +24,7 @@ import io.getstream.feeds.android.client.api.model.FeedAddActivityRequest import io.getstream.feeds.android.client.api.model.FeedData import io.getstream.feeds.android.client.api.model.FeedId import io.getstream.feeds.android.client.api.model.FeedMemberData +import io.getstream.feeds.android.client.api.model.FeedSuggestionData import io.getstream.feeds.android.client.api.model.FeedsReactionData import io.getstream.feeds.android.client.api.model.FollowData import io.getstream.feeds.android.client.api.model.ModelUpdates @@ -294,7 +295,7 @@ internal class FeedImpl( .map {} } - override suspend fun queryFollowSuggestions(limit: Int?): Result> { + override suspend fun queryFollowSuggestions(limit: Int?): Result> { return feedsRepository.queryFollowSuggestions(feedGroupId = group, limit = limit) } diff --git a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/http/FeedsSingleFlightApiTest.kt b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/http/FeedsSingleFlightApiTest.kt index 545d2b11b..689a23ae2 100644 --- a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/http/FeedsSingleFlightApiTest.kt +++ b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/http/FeedsSingleFlightApiTest.kt @@ -86,8 +86,8 @@ internal class FeedsSingleFlightApiTest(private val testCase: SingleFlightTestCa name = "Test App", fileUploadConfig = FileUploadConfig(sizeLimit = 0), imageUploadConfig = FileUploadConfig(sizeLimit = 0), - region = "region", - shard = "shard", + id = 0, + placement = "placement", ), ) diff --git a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/AppRepositoryImplTest.kt b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/AppRepositoryImplTest.kt index f1f4518a4..0c4df57de 100644 --- a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/AppRepositoryImplTest.kt +++ b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/AppRepositoryImplTest.kt @@ -42,8 +42,8 @@ internal class AppRepositoryImplTest { name = "Test App", fileUploadConfig = fileUploadConfig, imageUploadConfig = imageUploadConfig, - region = "region", - shard = "shard", + id = 0, + placement = "placement", ) val apiResponse = GetApplicationResponse(duration = "100ms", app = appResponseFields) diff --git a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImplTest.kt b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImplTest.kt index b00ce996b..0ebf94bb2 100644 --- a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImplTest.kt +++ b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImplTest.kt @@ -45,6 +45,7 @@ import io.getstream.feeds.android.client.internal.test.TestData.updateFeedMember import io.getstream.feeds.android.client.internal.test.TestData.updateFeedResponse import io.getstream.feeds.android.network.apis.FeedsApi import io.getstream.feeds.android.network.models.AcceptFollowRequest +import io.getstream.feeds.android.network.models.FeedSuggestionResponse import io.getstream.feeds.android.network.models.FollowRequest import io.getstream.feeds.android.network.models.QueryFeedMembersRequest import io.getstream.feeds.android.network.models.QueryFollowsRequest @@ -154,7 +155,7 @@ internal class FeedsRepositoryImplTest { apiFunction = { feedsApi.getFollowSuggestions("user", 10) }, repositoryCall = { repository.queryFollowSuggestions("user", 10) }, apiResult = apiResult, - repositoryResult = listOf(feedResponse().toModel()), + repositoryResult = apiResult.suggestions.map(FeedSuggestionResponse::toModel), ) } diff --git a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/state/FeedImplTest.kt b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/state/FeedImplTest.kt index 13647b0c9..6b1012c30 100644 --- a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/state/FeedImplTest.kt +++ b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/state/FeedImplTest.kt @@ -44,6 +44,7 @@ import io.getstream.feeds.android.client.internal.test.TestData.bookmarkData import io.getstream.feeds.android.client.internal.test.TestData.commentData import io.getstream.feeds.android.client.internal.test.TestData.feedData import io.getstream.feeds.android.client.internal.test.TestData.feedMemberData +import io.getstream.feeds.android.client.internal.test.TestData.feedSuggestionData import io.getstream.feeds.android.client.internal.test.TestData.feedsReactionData import io.getstream.feeds.android.client.internal.test.TestData.followData import io.getstream.feeds.android.client.internal.test.TestData.pollData @@ -516,7 +517,8 @@ internal class FeedImplTest { fun `on queryFollowSuggestions, delegate to repository`() = runTest { val feed = createFeed() val limit = 10 - val suggestions = listOf(feedData("suggested-1"), feedData("suggested-2")) + val suggestions = + listOf(feedSuggestionData("suggested-1"), feedSuggestionData("suggested-2")) coEvery { feedsRepository.queryFollowSuggestions("group", limit) } returns Result.success(suggestions) diff --git a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/test/TestData.kt b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/test/TestData.kt index d427f5150..baaae1576 100644 --- a/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/test/TestData.kt +++ b/stream-feeds-android-client/src/test/kotlin/io/getstream/feeds/android/client/internal/test/TestData.kt @@ -27,6 +27,7 @@ import io.getstream.feeds.android.client.api.model.FeedData import io.getstream.feeds.android.client.api.model.FeedId import io.getstream.feeds.android.client.api.model.FeedMemberData import io.getstream.feeds.android.client.api.model.FeedMemberStatus +import io.getstream.feeds.android.client.api.model.FeedSuggestionData import io.getstream.feeds.android.client.api.model.FeedsReactionData import io.getstream.feeds.android.client.api.model.FileUploadConfigData import io.getstream.feeds.android.client.api.model.FollowData @@ -49,6 +50,7 @@ import io.getstream.feeds.android.network.models.CommentResponse import io.getstream.feeds.android.network.models.DeleteCommentResponse import io.getstream.feeds.android.network.models.FeedMemberResponse import io.getstream.feeds.android.network.models.FeedResponse +import io.getstream.feeds.android.network.models.FeedSuggestionResponse import io.getstream.feeds.android.network.models.FeedsReactionResponse import io.getstream.feeds.android.network.models.FollowResponse import io.getstream.feeds.android.network.models.GetFollowSuggestionsResponse @@ -207,6 +209,7 @@ internal object TestData { comments: List = emptyList(), feeds: List = emptyList(), createdAt: Long = 1000, + hidden: Boolean = false, ): ActivityData = ActivityData( attachments = emptyList(), @@ -221,6 +224,7 @@ internal object TestData { expiresAt = null, feeds = feeds, filterTags = emptyList(), + hidden = hidden, id = id, interestTags = emptyList(), isWatched = null, @@ -337,6 +341,8 @@ internal object TestData { updatedAt = Date(1000), visibility = ActivityResponse.Visibility.Public, user = userResponse(), + hidden = false, + preview = false, ) fun feedsReactionResponse() = @@ -606,6 +612,14 @@ internal object TestData { visibility = "public", ) + fun feedSuggestionData(id: String) = + FeedSuggestionData( + feed = feedData(id), + algorithmScores = emptyMap(), + reason = null, + recommendationScore = null, + ) + fun moderationConfigData( key: String = "config-1", team: String = "team-1", @@ -732,8 +746,29 @@ internal object TestData { fun rejectFeedMemberResponse() = RejectFeedMemberInviteResponse(duration = "duration", member = feedMemberResponse()) + fun feedSuggestionResponse() = + FeedSuggestionResponse( + createdAt = Date(1000), + description = "Test feed description", + feed = "user:feed-1", + followerCount = 0, + followingCount = 0, + groupId = "user", + id = "feed-1", + memberCount = 0, + name = "Test Feed", + pinCount = 0, + updatedAt = Date(1000), + createdBy = userResponse(), + deletedAt = null, + reason = null, + ) + fun followSuggestionsResponse() = - GetFollowSuggestionsResponse(duration = "duration", suggestions = listOf(feedResponse())) + GetFollowSuggestionsResponse( + duration = "duration", + suggestions = listOf(feedSuggestionResponse()), + ) fun commentResponse() = CommentResponse( diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/infrastructure/Serializer.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/infrastructure/Serializer.kt index 23dbbd7ef..4451ab929 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/infrastructure/Serializer.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/infrastructure/Serializer.kt @@ -27,6 +27,10 @@ public object Serializer { .add( io.getstream.feeds.android.network.models.AWSRekognitionRule.Action.ActionAdapter() ) + .add( + io.getstream.feeds.android.network.models.ActivityFeedbackEventPayload.Action + .ActionAdapter() + ) .add( io.getstream.feeds.android.network.models.ActivityRequest.Visibility .VisibilityAdapter() diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEvent.kt new file mode 100644 index 000000000..cfec3e618 --- /dev/null +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEvent.kt @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014-2025 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-feeds-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@file:Suppress("ArrayInDataClass", "EnumEntryName", "RemoveRedundantQualifierName", "UnusedImport") + +package io.getstream.feeds.android.network.models + +import com.squareup.moshi.Json +import kotlin.collections.* +import kotlin.collections.Map +import kotlin.io.* + +/** Emitted when activity feedback is provided. */ +public data class ActivityFeedbackEvent( + @Json(name = "created_at") public val createdAt: java.util.Date, + @Json(name = "activity_feedback") + public val activityFeedback: + io.getstream.feeds.android.network.models.ActivityFeedbackEventPayload, + @Json(name = "custom") + public val custom: kotlin.collections.Map = emptyMap(), + @Json(name = "type") public val type: kotlin.String, + @Json(name = "received_at") public val receivedAt: java.util.Date? = null, + @Json(name = "user") + public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, +) : + io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.FeedEvent { + + override fun getWSClientEventType(): kotlin.String { + return type + } + + override fun getWSEventType(): kotlin.String { + return type + } +} diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEventPayload.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEventPayload.kt new file mode 100644 index 000000000..e14f1e646 --- /dev/null +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackEventPayload.kt @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2014-2025 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-feeds-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@file:Suppress("ArrayInDataClass", "EnumEntryName", "RemoveRedundantQualifierName", "UnusedImport") + +package io.getstream.feeds.android.network.models + +import com.squareup.moshi.FromJson +import com.squareup.moshi.Json +import com.squareup.moshi.JsonAdapter +import com.squareup.moshi.JsonReader +import com.squareup.moshi.JsonWriter +import com.squareup.moshi.ToJson +import kotlin.collections.* +import kotlin.io.* + +/** */ +public data class ActivityFeedbackEventPayload( + @Json(name = "action") public val action: Action, + @Json(name = "activity_id") public val activityId: kotlin.String, + @Json(name = "created_at") public val createdAt: java.util.Date, + @Json(name = "updated_at") public val updatedAt: java.util.Date, + @Json(name = "value") public val value: kotlin.String, + @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponse, +) { + + /** Action Enum */ + public sealed class Action(public val value: kotlin.String) { + override fun toString(): String = value + + public companion object { + public fun fromString(s: kotlin.String): Action = + when (s) { + "hide" -> Hide + "show_less" -> ShowLess + "show_more" -> ShowMore + else -> Unknown(s) + } + } + + public object Hide : Action("hide") + + public object ShowLess : Action("show_less") + + public object ShowMore : Action("show_more") + + public data class Unknown(val unknownValue: kotlin.String) : Action(unknownValue) + + public class ActionAdapter : JsonAdapter() { + @FromJson + override fun fromJson(reader: JsonReader): Action? { + val s = reader.nextString() ?: return null + return Action.fromString(s) + } + + @ToJson + override fun toJson(writer: JsonWriter, value: Action?) { + writer.value(value?.value) + } + } + } +} diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackRequest.kt index 419490336..3857d2422 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityFeedbackRequest.kt @@ -24,9 +24,6 @@ import kotlin.io.* /** Request to provide feedback on an activity */ public data class ActivityFeedbackRequest( @Json(name = "hide") public val hide: kotlin.Boolean? = null, - @Json(name = "mute_user") public val muteUser: kotlin.Boolean? = null, - @Json(name = "reason") public val reason: kotlin.String? = null, - @Json(name = "report") public val report: kotlin.Boolean? = null, @Json(name = "show_less") public val showLess: kotlin.Boolean? = null, @Json(name = "show_more") public val showMore: kotlin.Boolean? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityReactionDeletedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityReactionDeletedEvent.kt index fa77872a1..d2bed64d7 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityReactionDeletedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityReactionDeletedEvent.kt @@ -38,15 +38,15 @@ public data class ActivityReactionDeletedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityRemovedFromFeedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityRemovedFromFeedEvent.kt index f58a438e3..bec37f11f 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityRemovedFromFeedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityRemovedFromFeedEvent.kt @@ -36,15 +36,15 @@ public data class ActivityRemovedFromFeedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityResponse.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityResponse.kt index 0e6cb0bac..684ac0c13 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityResponse.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityResponse.kt @@ -33,8 +33,10 @@ public data class ActivityResponse( @Json(name = "bookmark_count") public val bookmarkCount: kotlin.Int, @Json(name = "comment_count") public val commentCount: kotlin.Int, @Json(name = "created_at") public val createdAt: java.util.Date, + @Json(name = "hidden") public val hidden: kotlin.Boolean, @Json(name = "id") public val id: kotlin.String, @Json(name = "popularity") public val popularity: kotlin.Int, + @Json(name = "preview") public val preview: kotlin.Boolean, @Json(name = "reaction_count") public val reactionCount: kotlin.Int, @Json(name = "score") public val score: kotlin.Float, @Json(name = "share_count") public val shareCount: kotlin.Int, @@ -85,8 +87,8 @@ public data class ActivityResponse( @Json(name = "deleted_at") public val deletedAt: java.util.Date? = null, @Json(name = "edited_at") public val editedAt: java.util.Date? = null, @Json(name = "expires_at") public val expiresAt: java.util.Date? = null, - @Json(name = "hidden") public val hidden: kotlin.Boolean? = null, @Json(name = "is_watched") public val isWatched: kotlin.Boolean? = null, + @Json(name = "moderation_action") public val moderationAction: kotlin.String? = null, @Json(name = "text") public val text: kotlin.String? = null, @Json(name = "visibility_tag") public val visibilityTag: kotlin.String? = null, @Json(name = "current_feed") diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivitySelectorConfig.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivitySelectorConfig.kt index 8352652d2..22330e837 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivitySelectorConfig.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivitySelectorConfig.kt @@ -26,6 +26,7 @@ import kotlin.io.* /** */ public data class ActivitySelectorConfig( @Json(name = "cutoff_time") public val cutoffTime: java.util.Date, + @Json(name = "cutoff_window") public val cutoffWindow: kotlin.String? = null, @Json(name = "min_popularity") public val minPopularity: kotlin.Int? = null, @Json(name = "type") public val type: kotlin.String? = null, @Json(name = "sort") diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityUnpinnedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityUnpinnedEvent.kt index 5962ab628..77e73e0fb 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityUnpinnedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ActivityUnpinnedEvent.kt @@ -36,15 +36,15 @@ public data class ActivityUnpinnedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/AppResponseFields.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/AppResponseFields.kt index b26b49f9a..f755e53cc 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/AppResponseFields.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/AppResponseFields.kt @@ -25,9 +25,9 @@ import kotlin.io.* public data class AppResponseFields( @Json(name = "async_url_enrich_enabled") public val asyncUrlEnrichEnabled: kotlin.Boolean, @Json(name = "auto_translation_enabled") public val autoTranslationEnabled: kotlin.Boolean, + @Json(name = "id") public val id: kotlin.Int, @Json(name = "name") public val name: kotlin.String, - @Json(name = "region") public val region: kotlin.String, - @Json(name = "shard") public val shard: kotlin.String, + @Json(name = "placement") public val placement: kotlin.String, @Json(name = "file_upload_config") public val fileUploadConfig: io.getstream.feeds.android.network.models.FileUploadConfig, @Json(name = "image_upload_config") diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PrivacySettings.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BlockActionRequest.kt similarity index 84% rename from stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PrivacySettings.kt rename to stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BlockActionRequest.kt index 6986038ee..9149dfb62 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PrivacySettings.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BlockActionRequest.kt @@ -22,7 +22,6 @@ import kotlin.collections.* import kotlin.io.* /** */ -public data class PrivacySettings( - @Json(name = "read_receipts") - public val readReceipts: io.getstream.feeds.android.network.models.ReadReceipts? = null +public data class BlockActionRequest( + @Json(name = "reason") public val reason: kotlin.String? = null ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkAddedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkAddedEvent.kt index 753bdeb4b..bb764c12c 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkAddedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkAddedEvent.kt @@ -34,15 +34,15 @@ public data class BookmarkAddedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkFolderUpdatedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkFolderUpdatedEvent.kt index 723c49ccc..ee4b4b638 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkFolderUpdatedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkFolderUpdatedEvent.kt @@ -34,15 +34,15 @@ public data class BookmarkFolderUpdatedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkUpdatedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkUpdatedEvent.kt index 6ac1c4d2e..54cf58197 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkUpdatedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/BookmarkUpdatedEvent.kt @@ -34,15 +34,15 @@ public data class BookmarkUpdatedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/CommentAddedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/CommentAddedEvent.kt index fef546ace..7e5d7fe5b 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/CommentAddedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/CommentAddedEvent.kt @@ -38,15 +38,15 @@ public data class CommentAddedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteActivityRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteActivityRequest.kt index f5f71075c..54109c4dd 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteActivityRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteActivityRequest.kt @@ -23,5 +23,6 @@ import kotlin.io.* /** */ public data class DeleteActivityRequest( - @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null + @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null, + @Json(name = "reason") public val reason: kotlin.String? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PrivacySettingsResponse.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteCommentRequest.kt similarity index 82% rename from stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PrivacySettingsResponse.kt rename to stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteCommentRequest.kt index 169de7d2f..68fc12a69 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PrivacySettingsResponse.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteCommentRequest.kt @@ -22,7 +22,7 @@ import kotlin.collections.* import kotlin.io.* /** */ -public data class PrivacySettingsResponse( - @Json(name = "read_receipts") - public val readReceipts: io.getstream.feeds.android.network.models.ReadReceiptsResponse? = null +public data class DeleteCommentRequest( + @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null, + @Json(name = "reason") public val reason: kotlin.String? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteMessageRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteMessageRequest.kt index afa8b0a11..d77823cca 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteMessageRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteMessageRequest.kt @@ -23,5 +23,6 @@ import kotlin.io.* /** */ public data class DeleteMessageRequest( - @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null + @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null, + @Json(name = "reason") public val reason: kotlin.String? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteReactionRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteReactionRequest.kt index afd13beb1..9d8e01da5 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteReactionRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteReactionRequest.kt @@ -23,5 +23,6 @@ import kotlin.io.* /** */ public data class DeleteReactionRequest( - @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null + @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null, + @Json(name = "reason") public val reason: kotlin.String? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteUserRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteUserRequest.kt index b51660305..48f602e6b 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteUserRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/DeleteUserRequest.kt @@ -28,4 +28,5 @@ public data class DeleteUserRequest( @Json(name = "delete_feeds_content") public val deleteFeedsContent: kotlin.Boolean? = null, @Json(name = "hard_delete") public val hardDelete: kotlin.Boolean? = null, @Json(name = "mark_messages_deleted") public val markMessagesDeleted: kotlin.Boolean? = null, + @Json(name = "reason") public val reason: kotlin.String? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedGroup.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedGroup.kt index 7a8b1dc57..262203a4e 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedGroup.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedGroup.kt @@ -25,33 +25,33 @@ import kotlin.io.* /** */ public data class FeedGroup( - @Json(name = "AggregationVersion") public val aggregationVersion: kotlin.Int, - @Json(name = "AppPK") public val appPK: kotlin.Int, + @Json(name = "aggregation_version") public val aggregationVersion: kotlin.Int, + @Json(name = "app_pk") public val appPk: kotlin.Int, @Json(name = "created_at") public val createdAt: java.util.Date, - @Json(name = "DefaultVisibility") public val defaultVisibility: kotlin.String, - @Json(name = "ID") public val iD: kotlin.String, + @Json(name = "default_visibility") public val defaultVisibility: kotlin.String, + @Json(name = "group_id") public val groupId: kotlin.String, @Json(name = "updated_at") public val updatedAt: java.util.Date, - @Json(name = "ActivityProcessors") + @Json(name = "activity_processors") public val activityProcessors: kotlin.collections.List = emptyList(), - @Json(name = "ActivitySelectors") + @Json(name = "activity_selectors") public val activitySelectors: kotlin.collections.List = emptyList(), - @Json(name = "Custom") + @Json(name = "custom") public val custom: kotlin.collections.Map = emptyMap(), - @Json(name = "DeletedAt") public val deletedAt: java.util.Date? = null, - @Json(name = "LastFeedGetAt") public val lastFeedGetAt: java.util.Date? = null, - @Json(name = "Aggregation") + @Json(name = "deleted_at") public val deletedAt: java.util.Date? = null, + @Json(name = "last_feed_get_at") public val lastFeedGetAt: java.util.Date? = null, + @Json(name = "aggregation") public val aggregation: io.getstream.feeds.android.network.models.AggregationConfig? = null, - @Json(name = "Notification") + @Json(name = "notification") public val notification: io.getstream.feeds.android.network.models.NotificationConfig? = null, - @Json(name = "PushNotification") + @Json(name = "push_notification") public val pushNotification: io.getstream.feeds.android.network.models.PushNotificationConfig? = null, - @Json(name = "Ranking") + @Json(name = "ranking") public val ranking: io.getstream.feeds.android.network.models.RankingConfig? = null, - @Json(name = "Stories") + @Json(name = "stories") public val stories: io.getstream.feeds.android.network.models.StoriesConfig? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedMemberRemovedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedMemberRemovedEvent.kt index c01de7894..5f94ebc9f 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedMemberRemovedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedMemberRemovedEvent.kt @@ -35,15 +35,15 @@ public data class FeedMemberRemovedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedSuggestionResponse.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedSuggestionResponse.kt new file mode 100644 index 000000000..9652d783b --- /dev/null +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/FeedSuggestionResponse.kt @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2014-2025 Stream.io Inc. All rights reserved. + * + * Licensed under the Stream License; + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://github.com/GetStream/stream-feeds-android/blob/main/LICENSE + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@file:Suppress("ArrayInDataClass", "EnumEntryName", "RemoveRedundantQualifierName", "UnusedImport") + +package io.getstream.feeds.android.network.models + +import com.squareup.moshi.Json +import kotlin.collections.* +import kotlin.collections.List +import kotlin.collections.Map +import kotlin.io.* + +/** */ +public data class FeedSuggestionResponse( + @Json(name = "created_at") public val createdAt: java.util.Date, + @Json(name = "description") public val description: kotlin.String, + @Json(name = "feed") public val feed: kotlin.String, + @Json(name = "follower_count") public val followerCount: kotlin.Int, + @Json(name = "following_count") public val followingCount: kotlin.Int, + @Json(name = "group_id") public val groupId: kotlin.String, + @Json(name = "id") public val id: kotlin.String, + @Json(name = "member_count") public val memberCount: kotlin.Int, + @Json(name = "name") public val name: kotlin.String, + @Json(name = "pin_count") public val pinCount: kotlin.Int, + @Json(name = "updated_at") public val updatedAt: java.util.Date, + @Json(name = "created_by") + public val createdBy: io.getstream.feeds.android.network.models.UserResponse, + @Json(name = "deleted_at") public val deletedAt: java.util.Date? = null, + @Json(name = "reason") public val reason: kotlin.String? = null, + @Json(name = "recommendation_score") public val recommendationScore: kotlin.Float? = null, + @Json(name = "visibility") public val visibility: kotlin.String? = null, + @Json(name = "filter_tags") + public val filterTags: kotlin.collections.List? = emptyList(), + @Json(name = "own_capabilities") + public val ownCapabilities: + kotlin.collections.List? = + emptyList(), + @Json(name = "own_follows") + public val ownFollows: + kotlin.collections.List? = + emptyList(), + @Json(name = "algorithm_scores") + public val algorithmScores: kotlin.collections.Map? = emptyMap(), + @Json(name = "custom") + public val custom: kotlin.collections.Map? = emptyMap(), + @Json(name = "own_membership") + public val ownMembership: io.getstream.feeds.android.network.models.FeedMemberResponse? = null, +) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/GetFollowSuggestionsResponse.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/GetFollowSuggestionsResponse.kt index da42dfd11..9d530c076 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/GetFollowSuggestionsResponse.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/GetFollowSuggestionsResponse.kt @@ -27,6 +27,7 @@ public data class GetFollowSuggestionsResponse( @Json(name = "duration") public val duration: kotlin.String, @Json(name = "suggestions") public val suggestions: - kotlin.collections.List = + kotlin.collections.List = emptyList(), + @Json(name = "algorithm_used") public val algorithmUsed: kotlin.String? = null, ) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ModerationMarkReviewedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ModerationMarkReviewedEvent.kt index a4407ca3c..11441a4d7 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ModerationMarkReviewedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ModerationMarkReviewedEvent.kt @@ -32,15 +32,15 @@ public data class ModerationMarkReviewedEvent( @Json(name = "type") public val type: kotlin.String, @Json(name = "received_at") public val receivedAt: java.util.Date? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollClosedFeedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollClosedFeedEvent.kt index 5a507cd23..bad331b22 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollClosedFeedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollClosedFeedEvent.kt @@ -34,15 +34,15 @@ public data class PollClosedFeedEvent( @Json(name = "feed_visibility") public val feedVisibility: kotlin.String? = null, @Json(name = "received_at") public val receivedAt: java.util.Date? = null, ) : - io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteCastedFeedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteCastedFeedEvent.kt index 725076613..ea97ec70c 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteCastedFeedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteCastedFeedEvent.kt @@ -36,15 +36,15 @@ public data class PollVoteCastedFeedEvent( @Json(name = "feed_visibility") public val feedVisibility: kotlin.String? = null, @Json(name = "received_at") public val receivedAt: java.util.Date? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteRemovedFeedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteRemovedFeedEvent.kt index 2caab23e4..fec96d876 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteRemovedFeedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/PollVoteRemovedFeedEvent.kt @@ -36,15 +36,15 @@ public data class PollVoteRemovedFeedEvent( @Json(name = "feed_visibility") public val feedVisibility: kotlin.String? = null, @Json(name = "received_at") public val receivedAt: java.util.Date? = null, ) : - io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.WSEvent, + io.getstream.feeds.android.network.models.WSClientEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ReviewQueueItemResponse.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ReviewQueueItemResponse.kt index 239ab10d8..d1709919e 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ReviewQueueItemResponse.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ReviewQueueItemResponse.kt @@ -30,6 +30,7 @@ public data class ReviewQueueItemResponse( @Json(name = "entity_type") public val entityType: kotlin.String, @Json(name = "flags_count") public val flagsCount: kotlin.Int, @Json(name = "id") public val id: kotlin.String, + @Json(name = "latest_moderator_action") public val latestModeratorAction: kotlin.String, @Json(name = "recommended_action") public val recommendedAction: kotlin.String, @Json(name = "reviewed_by") public val reviewedBy: kotlin.String, @Json(name = "severity") public val severity: kotlin.Int, @@ -64,6 +65,10 @@ public data class ReviewQueueItemResponse( public val feedsV2Activity: io.getstream.feeds.android.network.models.EnrichedActivity? = null, @Json(name = "feeds_v2_reaction") public val feedsV2Reaction: io.getstream.feeds.android.network.models.Reaction? = null, + @Json(name = "feeds_v3_activity") + public val feedsV3Activity: io.getstream.feeds.android.network.models.ActivityResponse? = null, + @Json(name = "feeds_v3_comment") + public val feedsV3Comment: io.getstream.feeds.android.network.models.CommentResponse? = null, @Json(name = "moderation_payload") public val moderationPayload: io.getstream.feeds.android.network.models.ModerationPayload? = null, diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ShadowBlockActionRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ShadowBlockActionRequest.kt index bf50c97a3..155b10d2b 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ShadowBlockActionRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/ShadowBlockActionRequest.kt @@ -17,8 +17,11 @@ package io.getstream.feeds.android.network.models +import com.squareup.moshi.Json import kotlin.collections.* import kotlin.io.* /** */ -public class ShadowBlockActionRequest() +public data class ShadowBlockActionRequest( + @Json(name = "reason") public val reason: kotlin.String? = null +) diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/StoriesFeedUpdatedEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/StoriesFeedUpdatedEvent.kt index fb243e416..d7f17156d 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/StoriesFeedUpdatedEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/StoriesFeedUpdatedEvent.kt @@ -32,6 +32,10 @@ public data class StoriesFeedUpdatedEvent( @Json(name = "type") public val type: kotlin.String, @Json(name = "feed_visibility") public val feedVisibility: kotlin.String? = null, @Json(name = "received_at") public val receivedAt: java.util.Date? = null, + @Json(name = "activities") + public val activities: + kotlin.collections.List? = + emptyList(), @Json(name = "aggregated_activities") public val aggregatedActivities: kotlin.collections.List< @@ -41,15 +45,15 @@ public data class StoriesFeedUpdatedEvent( @Json(name = "user") public val user: io.getstream.feeds.android.network.models.UserResponseCommonFields? = null, ) : - io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.WSClientEvent, + io.getstream.feeds.android.network.models.WSEvent, io.getstream.feeds.android.network.models.FeedEvent { - override fun getWSEventType(): kotlin.String { + override fun getWSClientEventType(): kotlin.String { return type } - override fun getWSClientEventType(): kotlin.String { + override fun getWSEventType(): kotlin.String { return type } } diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/SubmitActionRequest.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/SubmitActionRequest.kt index 5e24e9be2..2915cbc84 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/SubmitActionRequest.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/SubmitActionRequest.kt @@ -32,11 +32,16 @@ public data class SubmitActionRequest( @Json(name = "item_id") public val itemId: kotlin.String, @Json(name = "ban") public val ban: io.getstream.feeds.android.network.models.BanActionRequest? = null, + @Json(name = "block") + public val block: io.getstream.feeds.android.network.models.BlockActionRequest? = null, @Json(name = "custom") public val custom: io.getstream.feeds.android.network.models.CustomActionRequest? = null, @Json(name = "delete_activity") public val deleteActivity: io.getstream.feeds.android.network.models.DeleteActivityRequest? = null, + @Json(name = "delete_comment") + public val deleteComment: io.getstream.feeds.android.network.models.DeleteCommentRequest? = + null, @Json(name = "delete_message") public val deleteMessage: io.getstream.feeds.android.network.models.DeleteMessageRequest? = null, @@ -47,6 +52,9 @@ public data class SubmitActionRequest( public val deleteUser: io.getstream.feeds.android.network.models.DeleteUserRequest? = null, @Json(name = "mark_reviewed") public val markReviewed: io.getstream.feeds.android.network.models.MarkReviewedRequest? = null, + @Json(name = "shadow_block") + public val shadowBlock: io.getstream.feeds.android.network.models.ShadowBlockActionRequest? = + null, @Json(name = "unban") public val unban: io.getstream.feeds.android.network.models.UnbanActionRequest? = null, ) { @@ -59,8 +67,10 @@ public data class SubmitActionRequest( public fun fromString(s: kotlin.String): ActionType = when (s) { "ban" -> Ban + "block" -> Block "custom" -> Custom "delete_activity" -> DeleteActivity + "delete_comment" -> DeleteComment "delete_message" -> DeleteMessage "delete_reaction" -> DeleteReaction "delete_user" -> DeleteUser @@ -78,10 +88,14 @@ public data class SubmitActionRequest( public object Ban : ActionType("ban") + public object Block : ActionType("block") + public object Custom : ActionType("custom") public object DeleteActivity : ActionType("delete_activity") + public object DeleteComment : ActionType("delete_comment") + public object DeleteMessage : ActionType("delete_message") public object DeleteReaction : ActionType("delete_reaction") diff --git a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/WSEvent.kt b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/WSEvent.kt index f248cf2d1..4c6129226 100644 --- a/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/WSEvent.kt +++ b/stream-feeds-android-network/src/main/kotlin/io/getstream/feeds/android/network/models/WSEvent.kt @@ -64,6 +64,8 @@ public class WSEventAdapter : JsonAdapter() { io.getstream.feeds.android.network.models.ActivityAddedEvent::class.java "feeds.activity.deleted" -> io.getstream.feeds.android.network.models.ActivityDeletedEvent::class.java + "feeds.activity.feedback" -> + io.getstream.feeds.android.network.models.ActivityFeedbackEvent::class.java "feeds.activity.marked" -> io.getstream.feeds.android.network.models.ActivityMarkEvent::class.java "feeds.activity.pinned" -> diff --git a/stream-feeds-android-sample/src/main/java/io/getstream/feeds/android/sample/profile/ProfileViewModel.kt b/stream-feeds-android-sample/src/main/java/io/getstream/feeds/android/sample/profile/ProfileViewModel.kt index 5c07ca7e6..1bc9e399e 100644 --- a/stream-feeds-android-sample/src/main/java/io/getstream/feeds/android/sample/profile/ProfileViewModel.kt +++ b/stream-feeds-android-sample/src/main/java/io/getstream/feeds/android/sample/profile/ProfileViewModel.kt @@ -23,6 +23,7 @@ import io.getstream.android.core.api.utils.flatMap import io.getstream.feeds.android.client.api.FeedsClient import io.getstream.feeds.android.client.api.model.FeedData import io.getstream.feeds.android.client.api.model.FeedId +import io.getstream.feeds.android.client.api.model.FeedSuggestionData import io.getstream.feeds.android.client.api.state.Feed import io.getstream.feeds.android.client.api.state.query.FeedQuery import io.getstream.feeds.android.sample.login.LoginManager @@ -62,6 +63,7 @@ class ProfileViewModel @Inject constructor(loginManager: LoginManager) : ViewMod client .feed(Feeds.user(client.user.id)) .queryFollowSuggestions(10) + .map { suggestions -> suggestions.map(FeedSuggestionData::feed) } .logResult(TAG, "Getting follow suggestions") .getOrDefault(emptyList()) } From 76603b712731dc817548344b7705851d1bd5fe07 Mon Sep 17 00:00:00 2001 From: Gian <47775302+gpunto@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:25:12 +0100 Subject: [PATCH 2/2] Add KDoc --- .../android/client/api/model/FeedSuggestionData.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt index 6105cb699..524a88f0d 100644 --- a/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt +++ b/stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedSuggestionData.kt @@ -15,6 +15,17 @@ */ package io.getstream.feeds.android.client.api.model +import io.getstream.feeds.android.client.api.state.Feed + +/** + * Model representing a feed suggestion + * + * @property feed The suggested feed. + * @property algorithmScores A map of algorithm scores associated with the suggestion. + * @property reason The reason for the suggestion. + * @property recommendationScore The overall recommendation score for the suggestion. + * @see [Feed.queryFollowSuggestions]. + */ public data class FeedSuggestionData( public val feed: FeedData, public val algorithmScores: Map?,