Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ moshi = "1.15.2"
navigationCompose = "2.9.3"
okhttp = "4.12.0"
retrofit = "2.12.0"
streamAndroidCore = "0.2.0"
streamAndroidCore = "1.0.0"
symbolProcessingApi = "2.2.0-2.0.2"
lifecycleProcess = "2.9.1"
lifecycleViewModelCompose = "2.4.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ package io.getstream.feeds.android.client.api.model

import io.getstream.android.core.api.filter.Filter
import io.getstream.android.core.api.filter.FilterField
import io.getstream.android.core.api.filter.Sort
import io.getstream.android.core.api.sort.Sort

/**
* Wrapper around the query configuration consisting of a [Filter] and a list of [Sort] operations.
*
* @property filter The filter for the query.
* @property sort The list of sorting operations for the query.
*/
internal data class QueryConfiguration<F : FilterField, S : Sort<*>>(
val filter: Filter<F>?,
internal data class QueryConfiguration<T, F : FilterField<T>, S : Sort<T>>(
val filter: Filter<T, F>?,
val sort: List<S>?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ package io.getstream.feeds.android.client.api.state.query

import io.getstream.android.core.api.filter.Filter
import io.getstream.android.core.api.filter.FilterField
import io.getstream.android.core.api.filter.Sort
import io.getstream.android.core.api.filter.SortDirection
import io.getstream.android.core.api.filter.SortField
import io.getstream.android.core.api.filter.toRequest
import io.getstream.android.core.api.sort.Sort
import io.getstream.android.core.api.sort.SortDirection
import io.getstream.android.core.api.sort.SortField
import io.getstream.feeds.android.client.api.model.ActivityData
import io.getstream.feeds.android.client.api.model.QueryConfiguration
import io.getstream.feeds.android.client.internal.model.mapping.toRequest
import io.getstream.feeds.android.network.models.QueryActivitiesRequest

Expand Down Expand Up @@ -60,73 +61,94 @@ public data class ActivitiesQuery(
public val previous: String? = null,
)

public typealias ActivitiesFilter = Filter<ActivitiesFilterField>
public typealias ActivitiesFilter = Filter<ActivityData, ActivitiesFilterField>

public data class ActivitiesFilterField(override val remote: String) : FilterField {
internal typealias ActivitiesQueryConfig =
QueryConfiguration<ActivityData, ActivitiesFilterField, ActivitiesSort>

public data class ActivitiesFilterField(
override val remote: String,
override val localValue: (ActivityData) -> Any?,
) : FilterField<ActivityData> {
public companion object {
/**
* Filter by activity creation timestamp.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
*/
public val createdAt: ActivitiesFilterField = ActivitiesFilterField("created_at")
public val createdAt: ActivitiesFilterField =
ActivitiesFilterField("created_at", ActivityData::createdAt)

/**
* Filter by activity ID.
*
* Supported operators: `equal`, `in`
*/
public val id: ActivitiesFilterField = ActivitiesFilterField("id")
public val id: ActivitiesFilterField = ActivitiesFilterField("id", ActivityData::id)

/**
* Filter by activity filter tags.
*
* Supported operators: `equal`, `in`, `contains`
*/
public val filterTags: ActivitiesFilterField = ActivitiesFilterField("filter_tags")
public val filterTags: ActivitiesFilterField =
ActivitiesFilterField("filter_tags", ActivityData::filterTags)

/**
* Filter by activity popularity score.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
* Supported operators: `equal`, `notEqual`, `greater`, `greaterOrEqual`, `less`,
* `lessOrEqual`
*/
public val popularity: ActivitiesFilterField = ActivitiesFilterField("popularity")
public val popularity: ActivitiesFilterField =
ActivitiesFilterField("popularity", ActivityData::popularity)

/**
* Filter by activity search data.
*
* Supported operators: `equal`, `q`, `autocomplete`
* Supported operators: `q`, `autocomplete`
*/
public val searchData: ActivitiesFilterField = ActivitiesFilterField("search_data")
public val searchData: ActivitiesFilterField =
ActivitiesFilterField("search_data", ActivityData::searchData)

/**
* Filter by activity text content.
*
* Supported operators: `equal`, `q`, `autocomplete`
*/
public val text: ActivitiesFilterField = ActivitiesFilterField("text")
public val text: ActivitiesFilterField = ActivitiesFilterField("text", ActivityData::text)

/**
* Filter by activity type.
*
* Supported operators: `equal`, `in`
*/
public val type: ActivitiesFilterField = ActivitiesFilterField("type")
public val type: ActivitiesFilterField =
ActivitiesFilterField("activity_type", ActivityData::type)

/**
* Filter by user ID who created the activity.
*
* Supported operators: `equal`, `in`
*/
public val userId: ActivitiesFilterField = ActivitiesFilterField("user_id")
public val userId: ActivitiesFilterField = ActivitiesFilterField("user_id") { it.user.id }

/**
* Filter by activity expiration timestamp.
*
* Supported operators: `equal`, `notEqual`, `greater`, `greaterOrEqual`, `less`,
* `lessOrEqual`, `exists`
*/
public val expiresAt: ActivitiesFilterField = ActivitiesFilterField("expires_at")
public val expiresAt: ActivitiesFilterField =
ActivitiesFilterField("expires_at", ActivityData::expiresAt)

/**
* Filter by activity interest tags.
*
* Supported operators: `equal`, `in`, `contains`
*/
public val interestTags: ActivitiesFilterField =
ActivitiesFilterField("interest_tags", ActivityData::interestTags)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ package io.getstream.feeds.android.client.api.state.query

import io.getstream.android.core.api.filter.Filter
import io.getstream.android.core.api.filter.FilterField
import io.getstream.android.core.api.filter.Sort
import io.getstream.android.core.api.filter.SortDirection
import io.getstream.android.core.api.filter.SortField
import io.getstream.android.core.api.filter.toRequest
import io.getstream.android.core.api.sort.Sort
import io.getstream.android.core.api.sort.SortDirection
import io.getstream.android.core.api.sort.SortField
import io.getstream.feeds.android.client.api.model.FeedsReactionData
import io.getstream.feeds.android.client.api.model.QueryConfiguration
import io.getstream.feeds.android.client.internal.model.mapping.toRequest
import io.getstream.feeds.android.network.models.QueryActivityReactionsRequest

Expand Down Expand Up @@ -53,32 +54,39 @@ public data class ActivityReactionsQuery(
public val sort: List<ActivityReactionsSort>? = null,
)

public typealias ActivityReactionsFilter = Filter<ActivityReactionsFilterField>
public typealias ActivityReactionsFilter = Filter<FeedsReactionData, ActivityReactionsFilterField>

public data class ActivityReactionsFilterField(override val remote: String) : FilterField {
internal typealias ActivityReactionsQueryConfig =
QueryConfiguration<FeedsReactionData, ActivityReactionsFilterField, ActivityReactionsSort>

public data class ActivityReactionsFilterField(
override val remote: String,
override val localValue: (FeedsReactionData) -> Any?,
) : FilterField<FeedsReactionData> {
public companion object {
/**
* Filter by reaction type.
*
* Supported operators: `equal`, `in`
*/
public val reactionType: ActivityReactionsFilterField =
ActivityReactionsFilterField("reaction_type")
ActivityReactionsFilterField("reaction_type", FeedsReactionData::type)

/**
* Filter by user ID who created the reaction.
*
* Supported operators: `equal`, `in`
*/
public val userId: ActivityReactionsFilterField = ActivityReactionsFilterField("user_id")
public val userId: ActivityReactionsFilterField =
ActivityReactionsFilterField("user_id") { it.user.id }

/**
* Filter by creation timestamp.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
*/
public val createdAt: ActivityReactionsFilterField =
ActivityReactionsFilterField("created_at")
ActivityReactionsFilterField("created_at", FeedsReactionData::createdAt)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ package io.getstream.feeds.android.client.api.state.query

import io.getstream.android.core.api.filter.Filter
import io.getstream.android.core.api.filter.FilterField
import io.getstream.android.core.api.filter.Sort
import io.getstream.android.core.api.filter.SortDirection
import io.getstream.android.core.api.filter.SortField
import io.getstream.android.core.api.filter.toRequest
import io.getstream.android.core.api.sort.Sort
import io.getstream.android.core.api.sort.SortDirection
import io.getstream.android.core.api.sort.SortField
import io.getstream.feeds.android.client.api.model.BookmarkFolderData
import io.getstream.feeds.android.client.api.model.QueryConfiguration
import io.getstream.feeds.android.client.internal.model.mapping.toRequest
import io.getstream.feeds.android.network.models.QueryBookmarkFoldersRequest

Expand Down Expand Up @@ -51,45 +52,39 @@ public data class BookmarkFoldersQuery(
public val previous: String? = null,
)

public typealias BookmarkFoldersFilter = Filter<BookmarkFoldersFilterField>
public typealias BookmarkFoldersFilter = Filter<BookmarkFolderData, BookmarkFoldersFilterField>

public data class BookmarkFoldersFilterField(override val remote: String) : FilterField {
public companion object {
/**
* Filter by folder ID.
*
* Supported operators: `equal`, `in`
*/
public val folderId: BookmarkFoldersFilterField = BookmarkFoldersFilterField("folder_id")
internal typealias BookmarkFoldersQueryConfig =
QueryConfiguration<BookmarkFolderData, BookmarkFoldersFilterField, BookmarkFoldersSort>

public data class BookmarkFoldersFilterField(
override val remote: String,
override val localValue: (BookmarkFolderData) -> Any?,
) : FilterField<BookmarkFolderData> {
public companion object {
/**
* Filter by folder name.
*
* Supported operators: `equal`, `in`, `contains`
*/
public val folderName: BookmarkFoldersFilterField =
BookmarkFoldersFilterField("folder_name")

/**
* Filter by user ID.
*
* Supported operators: `equal`, `in`
*/
public val userId: BookmarkFoldersFilterField = BookmarkFoldersFilterField("user_id")
BookmarkFoldersFilterField("folder_name", BookmarkFolderData::name)

/**
* Filter by creation timestamp.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
*/
public val createdAt: BookmarkFoldersFilterField = BookmarkFoldersFilterField("created_at")
public val createdAt: BookmarkFoldersFilterField =
BookmarkFoldersFilterField("created_at", BookmarkFolderData::createdAt)

/**
* Filter by last update timestamp.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
*/
public val updatedAt: BookmarkFoldersFilterField = BookmarkFoldersFilterField("updated_at")
public val updatedAt: BookmarkFoldersFilterField =
BookmarkFoldersFilterField("updated_at", BookmarkFolderData::updatedAt)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ package io.getstream.feeds.android.client.api.state.query

import io.getstream.android.core.api.filter.Filter
import io.getstream.android.core.api.filter.FilterField
import io.getstream.android.core.api.filter.Sort
import io.getstream.android.core.api.filter.SortDirection
import io.getstream.android.core.api.filter.SortField
import io.getstream.android.core.api.filter.toRequest
import io.getstream.android.core.api.sort.Sort
import io.getstream.android.core.api.sort.SortDirection
import io.getstream.android.core.api.sort.SortField
import io.getstream.feeds.android.client.api.model.BookmarkData
import io.getstream.feeds.android.client.api.model.QueryConfiguration
import io.getstream.feeds.android.client.internal.model.mapping.toRequest
import io.getstream.feeds.android.network.models.QueryBookmarksRequest

Expand Down Expand Up @@ -51,44 +52,54 @@ public data class BookmarksQuery(
public val previous: String? = null,
)

public typealias BookmarksFilter = Filter<BookmarksFilterField>
public typealias BookmarksFilter = Filter<BookmarkData, BookmarksFilterField>

public data class BookmarksFilterField(override val remote: String) : FilterField {
internal typealias BookmarksQueryConfig =
QueryConfiguration<BookmarkData, BookmarksFilterField, BookmarksSort>

public data class BookmarksFilterField(
override val remote: String,
override val localValue: (BookmarkData) -> Any?,
) : FilterField<BookmarkData> {
public companion object {
/**
* Filter by activity ID.
*
* Supported operators: `equal`, `in`
*/
public val activityId: BookmarksFilterField = BookmarksFilterField("activity_id")
public val activityId: BookmarksFilterField =
BookmarksFilterField("activity_id") { it.activity.id }

/**
* Filter by folder ID.
*
* Supported operators: `equal`, `in`, `exists`
*/
public val folderId: BookmarksFilterField = BookmarksFilterField("folder_id")
public val folderId: BookmarksFilterField =
BookmarksFilterField("folder_id") { it.folder?.id }

/**
* Filter by user ID.
*
* Supported operators: `equal`, `in`
*/
public val userId: BookmarksFilterField = BookmarksFilterField("user_id")
public val userId: BookmarksFilterField = BookmarksFilterField("user_id") { it.user.id }

/**
* Filter by creation timestamp.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
*/
public val createdAt: BookmarksFilterField = BookmarksFilterField("created_at")
public val createdAt: BookmarksFilterField =
BookmarksFilterField("created_at", BookmarkData::createdAt)

/**
* Filter by last update timestamp.
*
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`
*/
public val updatedAt: BookmarksFilterField = BookmarksFilterField("updated_at")
public val updatedAt: BookmarksFilterField =
BookmarksFilterField("updated_at", BookmarkData::updatedAt)
}
}

Expand Down
Loading
Loading