Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ internal class FeedsClientImpl(
FeedListImpl(
query = query,
feedsRepository = feedsRepository,
subscriptionManager = feedsEventsSubscriptionManager,
subscriptionManager = stateEventsSubscriptionManager,
)

override fun followList(query: FollowsQuery): FollowList =
Expand Down Expand Up @@ -250,7 +250,7 @@ internal class FeedsClientImpl(
ActivityReactionListImpl(
query = query,
activitiesRepository = activitiesRepository,
subscriptionManager = feedsEventsSubscriptionManager,
subscriptionManager = stateEventsSubscriptionManager,
)

override suspend fun addActivity(request: AddActivityRequest): Result<ActivityData> {
Expand Down Expand Up @@ -280,7 +280,7 @@ internal class FeedsClientImpl(
BookmarkFolderListImpl(
query = query,
bookmarksRepository = bookmarksRepository,
subscriptionManager = feedsEventsSubscriptionManager,
subscriptionManager = stateEventsSubscriptionManager,
)

override fun commentList(query: CommentsQuery): CommentList =
Expand Down Expand Up @@ -310,7 +310,7 @@ internal class FeedsClientImpl(
CommentReactionListImpl(
query = query,
commentsRepository = commentsRepository,
subscriptionManager = feedsEventsSubscriptionManager,
subscriptionManager = stateEventsSubscriptionManager,
)

override fun memberList(query: MembersQuery): MemberList =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import io.getstream.feeds.android.client.api.state.query.ActivityReactionsQuery
import io.getstream.feeds.android.client.api.state.query.toRequest
import io.getstream.feeds.android.client.internal.repository.ActivitiesRepository
import io.getstream.feeds.android.client.internal.state.event.handler.ActivityReactionListEventHandler
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

/**
* A list of activity reactions that provides pagination, filtering, and real-time updates.
Expand All @@ -42,7 +42,7 @@ import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
internal class ActivityReactionListImpl(
override val query: ActivityReactionsQuery,
private val activitiesRepository: ActivitiesRepository,
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener>,
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener>,
) : ActivityReactionList {

private val _state = ActivityReactionListStateImpl(query)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import io.getstream.feeds.android.client.api.state.BookmarkFolderListState
import io.getstream.feeds.android.client.api.state.query.BookmarkFoldersQuery
import io.getstream.feeds.android.client.internal.repository.BookmarksRepository
import io.getstream.feeds.android.client.internal.state.event.handler.BookmarkFolderListEventHandler
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

/**
* A class that manages a paginated list of bookmark folders.
Expand All @@ -40,7 +40,7 @@ import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
internal class BookmarkFolderListImpl(
override val query: BookmarkFoldersQuery,
private val bookmarksRepository: BookmarksRepository,
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener>,
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener>,
) : BookmarkFolderList {

private val _state: BookmarkFolderListStateImpl = BookmarkFolderListStateImpl(query)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import io.getstream.feeds.android.client.api.state.CommentReactionListState
import io.getstream.feeds.android.client.api.state.query.CommentReactionsQuery
import io.getstream.feeds.android.client.internal.repository.CommentsRepository
import io.getstream.feeds.android.client.internal.state.event.handler.CommentReactionListEventHandler
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

/**
* A class representing a paginated list of reactions for a specific comment.
Expand All @@ -40,7 +40,7 @@ import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
internal class CommentReactionListImpl(
override val query: CommentReactionsQuery,
private val commentsRepository: CommentsRepository,
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener>,
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener>,
) : CommentReactionList {

private val _state: CommentReactionListStateImpl = CommentReactionListStateImpl(query)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import io.getstream.feeds.android.client.api.state.FeedListState
import io.getstream.feeds.android.client.api.state.query.FeedsQuery
import io.getstream.feeds.android.client.internal.repository.FeedsRepository
import io.getstream.feeds.android.client.internal.state.event.handler.FeedListEventHandler
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

/**
* Represents a list of feeds with a query and state.
Expand All @@ -36,7 +36,7 @@ import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
internal class FeedListImpl(
override val query: FeedsQuery,
private val feedsRepository: FeedsRepository,
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener>,
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener>,
) : FeedList {

private val _state: FeedListStateImpl = FeedListStateImpl(query)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@ package io.getstream.feeds.android.client.internal.state.event
import io.getstream.feeds.android.client.api.model.BookmarkData
import io.getstream.feeds.android.client.api.model.BookmarkFolderData
import io.getstream.feeds.android.client.api.model.CommentData
import io.getstream.feeds.android.client.api.model.FeedData
import io.getstream.feeds.android.client.api.model.FeedsReactionData
import io.getstream.feeds.android.client.api.model.toModel
import io.getstream.feeds.android.network.models.ActivityReactionAddedEvent
import io.getstream.feeds.android.network.models.ActivityReactionDeletedEvent
import io.getstream.feeds.android.network.models.BookmarkDeletedEvent
import io.getstream.feeds.android.network.models.BookmarkFolderDeletedEvent
import io.getstream.feeds.android.network.models.BookmarkFolderUpdatedEvent
Expand All @@ -29,6 +32,8 @@ import io.getstream.feeds.android.network.models.CommentDeletedEvent
import io.getstream.feeds.android.network.models.CommentReactionAddedEvent
import io.getstream.feeds.android.network.models.CommentReactionDeletedEvent
import io.getstream.feeds.android.network.models.CommentUpdatedEvent
import io.getstream.feeds.android.network.models.FeedDeletedEvent
import io.getstream.feeds.android.network.models.FeedUpdatedEvent
import io.getstream.feeds.android.network.models.WSEvent

/**
Expand All @@ -37,6 +42,10 @@ import io.getstream.feeds.android.network.models.WSEvent
*/
internal sealed interface StateUpdateEvent {

data class ActivityReactionAdded(val reaction: FeedsReactionData) : StateUpdateEvent

data class ActivityReactionDeleted(val reaction: FeedsReactionData) : StateUpdateEvent

data class BookmarkDeleted(val bookmark: BookmarkData) : StateUpdateEvent

data class BookmarkUpdated(val bookmark: BookmarkData) : StateUpdateEvent
Expand All @@ -56,10 +65,19 @@ internal sealed interface StateUpdateEvent {

data class CommentReactionDeleted(val comment: CommentData, val reaction: FeedsReactionData) :
StateUpdateEvent

data class FeedUpdated(val feed: FeedData) : StateUpdateEvent

data class FeedDeleted(val fid: String) : StateUpdateEvent
}

internal fun WSEvent.toModel(): StateUpdateEvent? =
when (this) {
is ActivityReactionAddedEvent -> StateUpdateEvent.ActivityReactionAdded(reaction.toModel())

is ActivityReactionDeletedEvent ->
StateUpdateEvent.ActivityReactionDeleted(reaction.toModel())

is BookmarkDeletedEvent -> StateUpdateEvent.BookmarkDeleted(bookmark.toModel())

is BookmarkUpdatedEvent -> StateUpdateEvent.BookmarkUpdated(bookmark.toModel())
Expand All @@ -81,5 +99,9 @@ internal fun WSEvent.toModel(): StateUpdateEvent? =
is CommentReactionDeletedEvent ->
StateUpdateEvent.CommentReactionDeleted(comment.toModel(), reaction.toModel())

is FeedUpdatedEvent -> StateUpdateEvent.FeedUpdated(feed.toModel())

is FeedDeletedEvent -> StateUpdateEvent.FeedDeleted(fid)

else -> null
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,30 @@
*/
package io.getstream.feeds.android.client.internal.state.event.handler

import io.getstream.feeds.android.client.api.model.toModel
import io.getstream.feeds.android.client.internal.state.ActivityReactionListStateUpdates
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.network.models.ActivityReactionAddedEvent
import io.getstream.feeds.android.network.models.ActivityReactionDeletedEvent
import io.getstream.feeds.android.network.models.WSEvent
import io.getstream.feeds.android.client.internal.state.event.StateUpdateEvent
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

internal class ActivityReactionListEventHandler(
private val activityId: String,
private val state: ActivityReactionListStateUpdates,
) : FeedsEventListener {
) : StateUpdateEventListener {

override fun onEvent(event: WSEvent) {
override fun onEvent(event: StateUpdateEvent) {
when (event) {
is ActivityReactionAddedEvent -> {
if (event.activity.id == activityId) {
state.onReactionAdded(event.reaction.toModel())
is StateUpdateEvent.ActivityReactionAdded -> {
if (event.reaction.activityId == activityId) {
state.onReactionAdded(event.reaction)
}
}

is ActivityReactionDeletedEvent -> {
if (event.activity.id == activityId) {
state.onReactionRemoved(event.reaction.toModel())
is StateUpdateEvent.ActivityReactionDeleted -> {
if (event.reaction.activityId == activityId) {
state.onReactionRemoved(event.reaction)
}
}

else -> {}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,19 @@
*/
package io.getstream.feeds.android.client.internal.state.event.handler

import io.getstream.feeds.android.client.api.model.toModel
import io.getstream.feeds.android.client.internal.state.BookmarkFolderListStateUpdates
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.network.models.BookmarkFolderDeletedEvent
import io.getstream.feeds.android.network.models.BookmarkFolderUpdatedEvent
import io.getstream.feeds.android.network.models.WSEvent
import io.getstream.feeds.android.client.internal.state.event.StateUpdateEvent
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

internal class BookmarkFolderListEventHandler(private val state: BookmarkFolderListStateUpdates) :
FeedsEventListener {
StateUpdateEventListener {

override fun onEvent(event: WSEvent) {
override fun onEvent(event: StateUpdateEvent) {
when (event) {
is BookmarkFolderDeletedEvent -> state.onBookmarkFolderRemoved(event.bookmarkFolder.id)
is BookmarkFolderUpdatedEvent ->
state.onBookmarkFolderUpdated(event.bookmarkFolder.toModel())
is StateUpdateEvent.BookmarkFolderDeleted ->
state.onBookmarkFolderRemoved(event.folderId)
is StateUpdateEvent.BookmarkFolderUpdated -> state.onBookmarkFolderUpdated(event.folder)
else -> {}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,16 @@
*/
package io.getstream.feeds.android.client.internal.state.event.handler

import io.getstream.feeds.android.client.api.model.toModel
import io.getstream.feeds.android.client.internal.state.CommentReactionListStateUpdates
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.network.models.CommentReactionDeletedEvent
import io.getstream.feeds.android.network.models.WSEvent
import io.getstream.feeds.android.client.internal.state.event.StateUpdateEvent
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

internal class CommentReactionListEventHandler(private val state: CommentReactionListStateUpdates) :
FeedsEventListener {
override fun onEvent(event: WSEvent) {
StateUpdateEventListener {
override fun onEvent(event: StateUpdateEvent) {
when (event) {
is CommentReactionDeletedEvent -> state.onReactionRemoved(event.reaction.toModel())
is StateUpdateEvent.CommentReactionDeleted -> state.onReactionRemoved(event.reaction)
else -> {}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,24 @@
*/
package io.getstream.feeds.android.client.internal.state.event.handler

import io.getstream.feeds.android.client.api.model.toModel
import io.getstream.feeds.android.client.internal.state.FeedListStateUpdates
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.network.models.FeedDeletedEvent
import io.getstream.feeds.android.network.models.FeedUpdatedEvent
import io.getstream.feeds.android.network.models.WSEvent
import io.getstream.feeds.android.client.internal.state.event.StateUpdateEvent
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener

internal class FeedListEventHandler(private val state: FeedListStateUpdates) : FeedsEventListener {
internal class FeedListEventHandler(private val state: FeedListStateUpdates) :
StateUpdateEventListener {

override fun onEvent(event: WSEvent) {
override fun onEvent(event: StateUpdateEvent) {
when (event) {
is FeedUpdatedEvent -> {
state.onFeedUpdated(event.feed.toModel())
is StateUpdateEvent.FeedUpdated -> {
state.onFeedUpdated(event.feed)
}

is FeedDeletedEvent -> {
is StateUpdateEvent.FeedDeleted -> {
state.onFeedRemoved(event.fid)
}

else -> {}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import io.getstream.feeds.android.client.api.model.PaginationData
import io.getstream.feeds.android.client.api.model.PaginationResult
import io.getstream.feeds.android.client.api.state.query.ActivityReactionsQuery
import io.getstream.feeds.android.client.internal.repository.ActivitiesRepository
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener
import io.getstream.feeds.android.client.internal.test.TestData.feedsReactionData
import io.mockk.coEvery
import io.mockk.coVerify
Expand All @@ -32,7 +32,7 @@ import org.junit.Test

internal class ActivityReactionListImplTest {
private val activitiesRepository: ActivitiesRepository = mockk()
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener> =
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener> =
mockk(relaxed = true)
private val query = ActivityReactionsQuery(activityId = "activity-1", limit = 10)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import io.getstream.feeds.android.client.api.model.PaginationData
import io.getstream.feeds.android.client.api.model.PaginationResult
import io.getstream.feeds.android.client.api.state.query.BookmarkFoldersQuery
import io.getstream.feeds.android.client.internal.repository.BookmarksRepository
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener
import io.getstream.feeds.android.client.internal.test.TestData.bookmarkFolderData
import io.mockk.coEvery
import io.mockk.coVerify
Expand All @@ -32,7 +32,7 @@ import org.junit.Test

internal class BookmarkFolderListImplTest {
private val bookmarksRepository: BookmarksRepository = mockk()
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener> =
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener> =
mockk(relaxed = true)
private val query = BookmarkFoldersQuery(limit = 10)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import io.getstream.feeds.android.client.api.model.PaginationData
import io.getstream.feeds.android.client.api.model.PaginationResult
import io.getstream.feeds.android.client.api.state.query.CommentReactionsQuery
import io.getstream.feeds.android.client.internal.repository.CommentsRepository
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener
import io.getstream.feeds.android.client.internal.test.TestData.feedsReactionData
import io.mockk.coEvery
import io.mockk.coVerify
Expand All @@ -32,7 +32,7 @@ import org.junit.Test

internal class CommentReactionListImplTest {
private val commentsRepository: CommentsRepository = mockk()
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener> =
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener> =
mockk(relaxed = true)
private val query = CommentReactionsQuery(commentId = "comment-1", limit = 10)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import io.getstream.feeds.android.client.api.model.PaginationData
import io.getstream.feeds.android.client.api.model.PaginationResult
import io.getstream.feeds.android.client.api.state.query.FeedsQuery
import io.getstream.feeds.android.client.internal.repository.FeedsRepository
import io.getstream.feeds.android.client.internal.subscribe.FeedsEventListener
import io.getstream.feeds.android.client.internal.subscribe.StateUpdateEventListener
import io.getstream.feeds.android.client.internal.test.TestData.feedData
import io.mockk.coEvery
import io.mockk.coVerify
Expand All @@ -32,7 +32,7 @@ import org.junit.Test

internal class FeedListImplTest {
private val feedsRepository: FeedsRepository = mockk()
private val subscriptionManager: StreamSubscriptionManager<FeedsEventListener> =
private val subscriptionManager: StreamSubscriptionManager<StateUpdateEventListener> =
mockk(relaxed = true)
private val query = FeedsQuery(limit = 10, watch = false)

Expand Down
Loading
Loading