Skip to content

Commit b1cdc87

Browse files
authored
Update feed data on follow added/removed (#140)
Breaking change: make FeedResponse.toModel internal
1 parent 9f43f26 commit b1cdc87

22 files changed

+226
-42
lines changed

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/api/model/FeedData.kt

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@
1515
*/
1616
package io.getstream.feeds.android.client.api.model
1717

18-
import io.getstream.feeds.android.client.internal.model.toModel
1918
import io.getstream.feeds.android.network.models.FeedOwnCapability
20-
import io.getstream.feeds.android.network.models.FeedResponse
2119
import java.util.Date
2220

2321
/**
@@ -60,26 +58,3 @@ public data class FeedData(
6058
public val updatedAt: Date,
6159
public val visibility: String?,
6260
)
63-
64-
/** Converts a [FeedResponse] to a [FeedData] model. */
65-
public fun FeedResponse.toModel(): FeedData =
66-
FeedData(
67-
createdAt = createdAt,
68-
createdBy = createdBy.toModel(),
69-
custom = custom,
70-
deletedAt = deletedAt,
71-
description = description,
72-
fid = FeedId(feed),
73-
filterTags = filterTags,
74-
followerCount = followerCount,
75-
followingCount = followingCount,
76-
groupId = groupId,
77-
id = id,
78-
memberCount = memberCount,
79-
ownCapabilities = ownCapabilities.orEmpty(),
80-
ownMembership = ownMembership?.toModel(),
81-
name = name,
82-
pinCount = pinCount,
83-
updatedAt = updatedAt,
84-
visibility = visibility,
85-
)

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/ActivityOperations.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import io.getstream.feeds.android.client.api.model.ActivityDataVisibility
2020
import io.getstream.feeds.android.client.api.model.BookmarkData
2121
import io.getstream.feeds.android.client.api.model.CommentData
2222
import io.getstream.feeds.android.client.api.model.FeedsReactionData
23-
import io.getstream.feeds.android.client.api.model.toModel
2423
import io.getstream.feeds.android.client.internal.utils.updateIf
2524
import io.getstream.feeds.android.client.internal.utils.upsert
2625
import io.getstream.feeds.android.network.models.ActivityResponse

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/AppOperations.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package io.getstream.feeds.android.client.internal.model
1717

1818
import io.getstream.feeds.android.client.api.model.AppData
19-
import io.getstream.feeds.android.client.api.model.toModel
2019
import io.getstream.feeds.android.network.models.AppResponseFields
2120

2221
/**
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright (c) 2014-2025 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-feeds-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+
package io.getstream.feeds.android.client.internal.model
17+
18+
import io.getstream.feeds.android.client.api.model.FeedData
19+
import io.getstream.feeds.android.client.api.model.FeedId
20+
import io.getstream.feeds.android.network.models.FeedResponse
21+
22+
/** Converts a [FeedResponse] to a [FeedData] model. */
23+
internal fun FeedResponse.toModel(): FeedData =
24+
FeedData(
25+
createdAt = createdAt,
26+
createdBy = createdBy.toModel(),
27+
custom = custom,
28+
deletedAt = deletedAt,
29+
description = description,
30+
fid = FeedId(feed),
31+
filterTags = filterTags,
32+
followerCount = followerCount,
33+
followingCount = followingCount,
34+
groupId = groupId,
35+
id = id,
36+
memberCount = memberCount,
37+
ownCapabilities = ownCapabilities.orEmpty(),
38+
ownMembership = ownMembership?.toModel(),
39+
name = name,
40+
pinCount = pinCount,
41+
updatedAt = updatedAt,
42+
visibility = visibility,
43+
)
44+
45+
/**
46+
* Extension function to update the feed while preserving own capabilities because "own" data from
47+
* WS events is not reliable.
48+
*/
49+
internal fun FeedData.update(updated: FeedData): FeedData =
50+
updated.copy(ownCapabilities = this.ownCapabilities)

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/model/FollowOperations.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package io.getstream.feeds.android.client.internal.model
1818
import io.getstream.feeds.android.client.api.model.FeedId
1919
import io.getstream.feeds.android.client.api.model.FollowData
2020
import io.getstream.feeds.android.client.api.model.FollowStatus
21-
import io.getstream.feeds.android.client.api.model.toModel
2221
import io.getstream.feeds.android.network.models.FollowResponse
2322

2423
internal val FollowData.isFollower: Boolean

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/ActivitiesRepositoryImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import io.getstream.feeds.android.client.api.model.FeedAddActivityRequest
2323
import io.getstream.feeds.android.client.api.model.FeedId
2424
import io.getstream.feeds.android.client.api.model.FeedsReactionData
2525
import io.getstream.feeds.android.client.api.model.PaginationData
26-
import io.getstream.feeds.android.client.api.model.toModel
2726
import io.getstream.feeds.android.client.api.state.query.ActivitiesQuery
2827
import io.getstream.feeds.android.client.internal.file.uploadAll
2928
import io.getstream.feeds.android.client.internal.model.PaginationResult

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/AppRepositoryImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package io.getstream.feeds.android.client.internal.repository
1717

1818
import io.getstream.android.core.result.runSafely
1919
import io.getstream.feeds.android.client.api.model.AppData
20-
import io.getstream.feeds.android.client.api.model.toModel
2120
import io.getstream.feeds.android.client.internal.model.toModel
2221
import io.getstream.feeds.android.network.apis.FeedsApi
2322

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/BookmarksRepositoryImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import io.getstream.android.core.result.runSafely
1919
import io.getstream.feeds.android.client.api.model.BookmarkData
2020
import io.getstream.feeds.android.client.api.model.BookmarkFolderData
2121
import io.getstream.feeds.android.client.api.model.PaginationData
22-
import io.getstream.feeds.android.client.api.model.toModel
2322
import io.getstream.feeds.android.client.api.state.query.BookmarkFoldersQuery
2423
import io.getstream.feeds.android.client.api.state.query.BookmarksQuery
2524
import io.getstream.feeds.android.client.internal.model.PaginationResult

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/CommentsRepositoryImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import io.getstream.feeds.android.client.api.model.FeedsReactionData
2424
import io.getstream.feeds.android.client.api.model.PaginationData
2525
import io.getstream.feeds.android.client.api.model.ThreadedCommentData
2626
import io.getstream.feeds.android.client.api.model.request.ActivityAddCommentRequest
27-
import io.getstream.feeds.android.client.api.model.toModel
2827
import io.getstream.feeds.android.client.api.state.query.ActivityCommentsQuery
2928
import io.getstream.feeds.android.client.api.state.query.CommentReactionsQuery
3029
import io.getstream.feeds.android.client.api.state.query.CommentRepliesQuery

stream-feeds-android-client/src/main/kotlin/io/getstream/feeds/android/client/internal/repository/FeedsRepositoryImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import io.getstream.feeds.android.client.api.model.FeedSuggestionData
2424
import io.getstream.feeds.android.client.api.model.FollowData
2525
import io.getstream.feeds.android.client.api.model.ModelUpdates
2626
import io.getstream.feeds.android.client.api.model.PaginationData
27-
import io.getstream.feeds.android.client.api.model.toModel
2827
import io.getstream.feeds.android.client.api.state.query.ActivitiesSort
2928
import io.getstream.feeds.android.client.api.state.query.FeedQuery
3029
import io.getstream.feeds.android.client.api.state.query.FeedsQuery

0 commit comments

Comments
 (0)