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
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 @@ -75,9 +75,9 @@ public data class FollowData(
/**
* Sealed class representing the status of a follow relationship.
*
* @property string The string representation of the follow status.
* @property value The string representation of the follow status.
*/
public sealed class FollowStatus(public val string: String) {
public sealed class FollowStatus(public val value: String) {

/** Represents a follow relationship that has been accepted. */
public object Accepted : FollowStatus("accepted")
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,97 @@ public data class ActivitiesQuery(
public val previous: String? = null,
)

public typealias ActivitiesFilter = Filter<ActivitiesFilterField>
/**
* A type alias representing a filter specifically for [ActivityData] using [ActivitiesFilterField].
*/
public typealias ActivitiesFilter = Filter<ActivityData, ActivitiesFilterField>

internal typealias ActivitiesQueryConfig =
QueryConfiguration<ActivityData, ActivitiesFilterField, ActivitiesSort>

public data class ActivitiesFilterField(override val remote: String) : FilterField {
/** Represents a field that can be used to filter activities. */
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`
*/
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`
* Supported operators: `equal`, `greater`, `greaterOrEqual`, `less`, `lessOrEqual`,
* `exists`
*/
public val expiresAt: ActivitiesFilterField =
ActivitiesFilterField("expires_at", ActivityData::expiresAt)

/**
* Filter by activity interest tags.
*
* Supported operators: `equal`, `in`, `contains`
*/
public val expiresAt: ActivitiesFilterField = ActivitiesFilterField("expires_at")
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,44 @@ public data class ActivityReactionsQuery(
public val sort: List<ActivityReactionsSort>? = null,
)

public typealias ActivityReactionsFilter = Filter<ActivityReactionsFilterField>
/**
* A type alias representing a filter specifically for [FeedsReactionData] using
* [ActivityReactionsFilterField].
*/
public typealias ActivityReactionsFilter = Filter<FeedsReactionData, ActivityReactionsFilterField>

internal typealias ActivityReactionsQueryConfig =
QueryConfiguration<FeedsReactionData, ActivityReactionsFilterField, ActivityReactionsSort>

public data class ActivityReactionsFilterField(override val remote: String) : FilterField {
/** Represents a field that can be used to filter activity reactions. */
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,44 @@ public data class BookmarkFoldersQuery(
public val previous: String? = null,
)

public typealias BookmarkFoldersFilter = Filter<BookmarkFoldersFilterField>
/**
* A type alias representing a filter specifically for [BookmarkFolderData] using
* [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>

/** Represents a field that can be used to filter bookmark folders. */
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,58 @@ public data class BookmarksQuery(
public val previous: String? = null,
)

public typealias BookmarksFilter = Filter<BookmarksFilterField>
/**
* A type alias representing a filter specifically for [BookmarkData] using [BookmarksFilterField].
*/
public typealias BookmarksFilter = Filter<BookmarkData, BookmarksFilterField>

internal typealias BookmarksQueryConfig =
QueryConfiguration<BookmarkData, BookmarksFilterField, BookmarksSort>

public data class BookmarksFilterField(override val remote: String) : FilterField {
/** Represents a field that can be used to filter bookmarks. */
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