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 @@ -386,7 +386,7 @@ public interface Feed {
* @return A [Result] containing the added [FeedsReactionData] if successful, or an error if the
* operation fails.
*/
public suspend fun addReaction(
public suspend fun addActivityReaction(
activityId: String,
request: AddReactionRequest,
): Result<FeedsReactionData>
Expand All @@ -399,7 +399,10 @@ public interface Feed {
* @return A [Result] containing the deleted [FeedsReactionData] if successful, or an error if
* the operation fails.
*/
public suspend fun deleteReaction(activityId: String, type: String): Result<FeedsReactionData>
public suspend fun deleteActivityReaction(
activityId: String,
type: String,
): Result<FeedsReactionData>

/**
* Adds a reaction to a comment.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ import io.getstream.feeds.android.network.models.ListDevicesResponse
import io.getstream.feeds.android.network.models.MarkActivityRequest
import io.getstream.feeds.android.network.models.MuteRequest
import io.getstream.feeds.android.network.models.MuteResponse
import io.getstream.feeds.android.network.models.OwnCapabilitiesBatchRequest
import io.getstream.feeds.android.network.models.OwnCapabilitiesBatchResponse
import io.getstream.feeds.android.network.models.PinActivityRequest
import io.getstream.feeds.android.network.models.PinActivityResponse
import io.getstream.feeds.android.network.models.PollOptionResponse
Expand Down Expand Up @@ -300,12 +302,12 @@ internal class FeedsSingleFlightApi(
delegate.deletePollVote(activityId, pollId, voteId, userId)
}

override suspend fun addReaction(
override suspend fun addActivityReaction(
activityId: String,
addReactionRequest: AddReactionRequest,
): AddReactionResponse =
singleFlight("addReaction", activityId, addReactionRequest) {
delegate.addReaction(activityId, addReactionRequest)
singleFlight("addActivityReaction", activityId, addReactionRequest) {
delegate.addActivityReaction(activityId, addReactionRequest)
}

override suspend fun queryActivityReactions(
Expand Down Expand Up @@ -655,6 +657,14 @@ internal class FeedsSingleFlightApi(
delegate.createFeedsBatch(createFeedsBatchRequest)
}

override suspend fun ownCapabilitiesBatch(
connectionId: String?,
ownCapabilitiesBatchRequest: OwnCapabilitiesBatchRequest,
): OwnCapabilitiesBatchResponse =
singleFlight("ownCapabilitiesBatch", connectionId, ownCapabilitiesBatchRequest) {
delegate.ownCapabilitiesBatch(connectionId, ownCapabilitiesBatchRequest)
}

override suspend fun queryFeeds(
connectionId: String?,
queryFeedsRequest: QueryFeedsRequest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ internal interface ActivitiesRepository {
* @param request The request containing the reaction data.
* @return A [Result] containing the [FeedsReactionData] or an error.
*/
suspend fun addReaction(
suspend fun addActivityReaction(
activityId: String,
request: AddReactionRequest,
): Result<Pair<FeedsReactionData, ActivityData>>
Expand All @@ -161,7 +161,7 @@ internal interface ActivitiesRepository {
* @param type The type of the reaction to delete.
* @return A [Result] containing the deleted [FeedsReactionData] or an error.
*/
suspend fun deleteReaction(
suspend fun deleteActivityReaction(
activityId: String,
type: String,
): Result<Pair<FeedsReactionData, ActivityData>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,15 @@ internal class ActivitiesRepositoryImpl(
)
}

override suspend fun addReaction(
override suspend fun addActivityReaction(
activityId: String,
request: AddReactionRequest,
): Result<Pair<FeedsReactionData, ActivityData>> = runSafely {
val response = api.addReaction(activityId, request)
val response = api.addActivityReaction(activityId, request)
response.reaction.toModel() to response.activity.toModel()
}

override suspend fun deleteReaction(
override suspend fun deleteActivityReaction(
activityId: String,
type: String,
): Result<Pair<FeedsReactionData, ActivityData>> = runSafely {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -370,12 +370,12 @@ internal class FeedImpl(
}
}

override suspend fun addReaction(
override suspend fun addActivityReaction(
activityId: String,
request: AddReactionRequest,
): Result<FeedsReactionData> {
return activitiesRepository
.addReaction(activityId, request)
.addActivityReaction(activityId, request)
.onSuccess { (reaction, activity) ->
subscriptionManager.onEvent(
StateUpdateEvent.ActivityReactionAdded(fid.rawValue, activity, reaction)
Expand All @@ -384,12 +384,12 @@ internal class FeedImpl(
.map { it.first }
}

override suspend fun deleteReaction(
override suspend fun deleteActivityReaction(
activityId: String,
type: String,
): Result<FeedsReactionData> {
return activitiesRepository
.deleteReaction(activityId = activityId, type = type)
.deleteActivityReaction(activityId = activityId, type = type)
.onSuccess { (reaction, activity) ->
subscriptionManager.onEvent(
StateUpdateEvent.ActivityReactionDeleted(fid.rawValue, activity, reaction)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import io.getstream.feeds.android.network.models.AddBookmarkRequest
import io.getstream.feeds.android.network.models.AddBookmarkResponse
import io.getstream.feeds.android.network.models.AddCommentRequest
import io.getstream.feeds.android.network.models.AddCommentResponse
import io.getstream.feeds.android.network.models.AddReactionRequest
import io.getstream.feeds.android.network.models.AddReactionResponse
import io.getstream.feeds.android.network.models.AppResponseFields
import io.getstream.feeds.android.network.models.CreateDeviceRequest
import io.getstream.feeds.android.network.models.DeleteActivitiesRequest
Expand All @@ -33,6 +35,8 @@ import io.getstream.feeds.android.network.models.FileUploadConfig
import io.getstream.feeds.android.network.models.GetApplicationResponse
import io.getstream.feeds.android.network.models.GetOGResponse
import io.getstream.feeds.android.network.models.ListDevicesResponse
import io.getstream.feeds.android.network.models.OwnCapabilitiesBatchRequest
import io.getstream.feeds.android.network.models.OwnCapabilitiesBatchResponse
import io.getstream.feeds.android.network.models.QueryActivitiesRequest
import io.getstream.feeds.android.network.models.QueryActivitiesResponse
import io.getstream.feeds.android.network.models.Response
Expand Down Expand Up @@ -71,6 +75,8 @@ internal class FeedsSingleFlightApiTest(private val testCase: SingleFlightTestCa
name = "Test App",
fileUploadConfig = FileUploadConfig(sizeLimit = 0),
imageUploadConfig = FileUploadConfig(sizeLimit = 0),
region = "region",
shard = "shard",
),
)

Expand All @@ -86,6 +92,13 @@ internal class FeedsSingleFlightApiTest(private val testCase: SingleFlightTestCa
AddBookmarkResponse(duration = "100ms", bookmark = TestData.bookmarkResponse())
private val testAddCommentResponse =
AddCommentResponse(duration = "100ms", comment = TestData.commentResponse())
private val testAddReactionResponse =
AddReactionResponse(
duration = "100ms",
activity = TestData.activityResponse(),
reaction = TestData.feedsReactionResponse(),
)
private val testOwnCapabilitiesBatchResponse = OwnCapabilitiesBatchResponse("100ms")

@JvmStatic
@Parameterized.Parameters(name = "{0}")
Expand Down Expand Up @@ -172,6 +185,16 @@ internal class FeedsSingleFlightApiTest(private val testCase: SingleFlightTestCa
apiResult = testAddBookmarkResponse,
)
),
arrayOf(
SingleFlightTestCase(
testName = "addActivityReaction",
expectedKeyPrefix = "addActivityReaction-activity123-",
call = {
it.addActivityReaction("activity123", AddReactionRequest(type = "like"))
},
apiResult = testAddReactionResponse,
)
),
arrayOf(
SingleFlightTestCase(
testName = "addComment",
Expand All @@ -188,6 +211,16 @@ internal class FeedsSingleFlightApiTest(private val testCase: SingleFlightTestCa
apiResult = testAddCommentResponse,
)
),
arrayOf(
SingleFlightTestCase(
testName = "ownCapabilitiesBatch",
expectedKeyPrefix = "ownCapabilitiesBatch-connection123-",
call = {
it.ownCapabilitiesBatch("connection123", OwnCapabilitiesBatchRequest())
},
apiResult = testOwnCapabilitiesBatchResponse,
)
),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,26 +226,26 @@ internal class ActivitiesRepositoryImplTest {
}

@Test
fun `on addReaction, delegate to api`() {
fun `on addActivityReaction, delegate to api`() {
val request = AddReactionRequest("type")
val apiResult = AddReactionResponse("duration", activityResponse(), feedsReactionResponse())

testDelegation(
apiFunction = { feedsApi.addReaction("activityId", request) },
repositoryCall = { repository.addReaction("activityId", request) },
apiFunction = { feedsApi.addActivityReaction("activityId", request) },
repositoryCall = { repository.addActivityReaction("activityId", request) },
apiResult = apiResult,
repositoryResult = apiResult.reaction.toModel() to apiResult.activity.toModel(),
)
}

@Test
fun `on deleteReaction, delegate to api`() {
fun `on deleteActivityReaction, delegate to api`() {
val apiResult =
DeleteActivityReactionResponse("duration", activityResponse(), feedsReactionResponse())

testDelegation(
apiFunction = { feedsApi.deleteActivityReaction("activityId", "type") },
repositoryCall = { repository.deleteReaction("activityId", "type") },
repositoryCall = { repository.deleteActivityReaction("activityId", "type") },
apiResult = apiResult,
repositoryResult = apiResult.reaction.toModel() to apiResult.activity.toModel(),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ internal class AppRepositoryImplTest {
name = "Test App",
fileUploadConfig = fileUploadConfig,
imageUploadConfig = imageUploadConfig,
region = "region",
shard = "shard",
)
val apiResponse = GetApplicationResponse(duration = "100ms", app = appResponseFields)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ internal class FeedImplTest {
}

@Test
fun `on addReaction, delegate to repository and fire event`() = runTest {
fun `on addActivityReaction, delegate to repository and fire event`() = runTest {
val feed = createFeed()
val activityId = "activity-1"
val request = AddReactionRequest(type = "like")
Expand All @@ -623,10 +623,10 @@ internal class FeedImplTest {
setupInitialState(feed, activities = listOf(activity))

val updatedActivity = activity.copy(text = "Updated activity")
coEvery { activitiesRepository.addReaction(activityId, request) } returns
coEvery { activitiesRepository.addActivityReaction(activityId, request) } returns
Result.success(reaction to updatedActivity)

val result = feed.addReaction(activityId, request)
val result = feed.addActivityReaction(activityId, request)

val expected = updatedActivity.copy(ownReactions = listOf(reaction))
assertEquals(reaction, result.getOrNull())
Expand All @@ -639,7 +639,7 @@ internal class FeedImplTest {
}

@Test
fun `on deleteReaction, delegate to repository and fire event`() = runTest {
fun `on deleteActivityReaction, delegate to repository and fire event`() = runTest {
val feed = createFeed()
val activityId = "activity-1"
val type = "like"
Expand All @@ -656,10 +656,10 @@ internal class FeedImplTest {
setupInitialState(feed, activities = listOf(activityWithReaction))

val updatedActivity = activityData(activityId, text = "Updated activity")
coEvery { activitiesRepository.deleteReaction(activityId, type) } returns
coEvery { activitiesRepository.deleteActivityReaction(activityId, type) } returns
Result.success(reaction to updatedActivity)

val result = feed.deleteReaction(activityId, type)
val result = feed.deleteActivityReaction(activityId, type)

val expected = updatedActivity.copy(ownReactions = emptyList())
assertEquals(reaction, result.getOrNull())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ public interface FeedsApi {

/** Add reaction Adds a reaction to an activity */
@POST("/api/v2/feeds/activities/{activity_id}/reactions")
public suspend fun addReaction(
public suspend fun addActivityReaction(
@Path("activity_id") activityId: kotlin.String,
@Body addReactionRequest: io.getstream.feeds.android.network.models.AddReactionRequest,
): io.getstream.feeds.android.network.models.AddReactionResponse
Expand Down Expand Up @@ -621,6 +621,18 @@ public interface FeedsApi {
createFeedsBatchRequest: io.getstream.feeds.android.network.models.CreateFeedsBatchRequest
): io.getstream.feeds.android.network.models.CreateFeedsBatchResponse

/**
* Get capabilities for multiple feeds Retrieves capabilities for multiple feeds in a single
* request. Useful for batch processing when activities are added to feeds.
*/
@POST("/api/v2/feeds/feeds/own_capabilities/batch")
public suspend fun ownCapabilitiesBatch(
@Query("connection_id") connectionId: kotlin.String? = null,
@Body
ownCapabilitiesBatchRequest:
io.getstream.feeds.android.network.models.OwnCapabilitiesBatchRequest,
): io.getstream.feeds.android.network.models.OwnCapabilitiesBatchResponse

/** Query feeds Query feeds with filter query */
@POST("/api/v2/feeds/feeds/query")
public suspend fun queryFeeds(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,6 @@ public object Serializer {
io.getstream.feeds.android.network.models.AddActivityRequest.Visibility
.VisibilityAdapter()
)
.add(
io.getstream.feeds.android.network.models.AudioSettings.DefaultDevice
.DefaultDeviceAdapter()
)
.add(
io.getstream.feeds.android.network.models.AudioSettingsResponse.DefaultDevice
.DefaultDeviceAdapter()
Expand Down Expand Up @@ -157,20 +153,13 @@ public object Serializer {
.PushPreferenceAdapter()
)
.add(io.getstream.feeds.android.network.models.FollowResponse.Status.StatusAdapter())
.add(io.getstream.feeds.android.network.models.FrameRecordSettings.Mode.ModeAdapter())
.add(
io.getstream.feeds.android.network.models.FrameRecordingSettingsResponse.Mode
.ModeAdapter()
)
.add(io.getstream.feeds.android.network.models.ImageSize.Crop.CropAdapter())
.add(io.getstream.feeds.android.network.models.ImageSize.Resize.ResizeAdapter())
.add(
io.getstream.feeds.android.network.models.IngressAudioEncodingOptions.Channels
.ChannelsAdapter()
)
.add(io.getstream.feeds.android.network.models.IngressVideoLayer.Codec.CodecAdapter())
.add(io.getstream.feeds.android.network.models.LLMRule.Action.ActionAdapter())
.add(io.getstream.feeds.android.network.models.LayoutSettings.Name.NameAdapter())
.add(io.getstream.feeds.android.network.models.MessageResponse.Type.TypeAdapter())
.add(
io.getstream.feeds.android.network.models.NoiseCancellationSettings.Mode
Expand All @@ -190,23 +179,11 @@ public object Serializer {
.FeedsLevelAdapter()
)
.add(io.getstream.feeds.android.network.models.QueryCommentsRequest.Sort.SortAdapter())
.add(
io.getstream.feeds.android.network.models.StoriesConfig.ExpirationBehaviour
.ExpirationBehaviourAdapter()
)
.add(io.getstream.feeds.android.network.models.RuleBuilderAction.Type.TypeAdapter())
.add(
io.getstream.feeds.android.network.models.SubmitActionRequest.ActionType
.ActionTypeAdapter()
)
.add(
io.getstream.feeds.android.network.models.TranscriptionSettings.ClosedCaptionMode
.ClosedCaptionModeAdapter()
)
.add(
io.getstream.feeds.android.network.models.TranscriptionSettings.Language
.LanguageAdapter()
)
.add(io.getstream.feeds.android.network.models.TranscriptionSettings.Mode.ModeAdapter())
.add(
io.getstream.feeds.android.network.models.TranscriptionSettingsResponse
.ClosedCaptionMode
Expand Down Expand Up @@ -240,10 +217,6 @@ public object Serializer {
io.getstream.feeds.android.network.models.VelocityFilterConfigRule.CascadingAction
.CascadingActionAdapter()
)
.add(
io.getstream.feeds.android.network.models.VideoSettings.CameraFacing
.CameraFacingAdapter()
)
.add(
io.getstream.feeds.android.network.models.VideoSettingsResponse.CameraFacing
.CameraFacingAdapter()
Expand Down
Loading