Skip to content

Conversation

@laevandus
Copy link
Contributor

@laevandus laevandus commented Nov 18, 2025

🔗 Issue Links

Fixes: IOS-1237

🎯 Goal

Sync filter keys to match backend updates

📝 Summary

  • Update filter keys: remove some, add missing
  • Support location based filter keys

🛠 Implementation

🎨 Showcase

🧪 Manual Testing Notes

☑️ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change should be manually QAed
  • Changelog is updated with client-facing changes
  • Changelog is updated with new localization keys
  • New code is covered by unit tests
  • Documentation has been updated in the docs-content repo

@laevandus laevandus requested a review from a team as a code owner November 18, 2025 10:23
Comment on lines +8 to +14
extension CLLocationCoordinate2D: @retroactive Equatable {
public static func == (lhs: CLLocationCoordinate2D, rhs: CLLocationCoordinate2D) -> Bool {
let epsilon = 1e-7 // ~1cm precision
return abs(lhs.latitude - rhs.latitude) < epsilon &&
abs(lhs.longitude - rhs.longitude) < epsilon
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Models are Equatable, so CLLocationCoordinate2D needs Equatable support

Comment on lines 866 to 867
branch = "add-filter-near-and-within-bounds";
kind = branch;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Create StreamCore release before merging

@laevandus laevandus enabled auto-merge (squash) November 18, 2025 12:29
@github-actions
Copy link

Public Interface

+ extension CLLocationCoordinate2D: @retroactive Equatable  
+ 
+   public static func ==(lhs: CLLocationCoordinate2D,rhs: CLLocationCoordinate2D)-> Bool

+ extension BookmarkFoldersSortField  
+ 
+   public static let createdAt
+   public static let updatedAt

+ extension ActivitiesSortField  
+ 
+   public static let createdAt
+   public static let popularity

+ extension ModerationConfigsSortField  
+ 
+   public static let key
+   public static let createdAt
+   public static let team
+   public static let updatedAt

+ extension FollowsSortField  
+ 
+   public static let createdAt

+ extension PollsSortField  
+ 
+   public static let createdAt
+   public static let updatedAt
+   public static let name
+   public static let id
+   public static let isClosed

+ extension BookmarksSortField  
+ 
+   public static let createdAt
+   public static let updatedAt

+ extension ActivityReactionsSortField  
+ 
+   public static let createdAt

+ extension PollVotesSortField  
+ 
+   public static let answerText
+   public static let id
+   public static let createdAt
+   public static let updatedAt

+ extension FeedsSortField  
+ 
+   public static let createdAt
+   public static let followerCount
+   public static let followingCount
+   public static let memberCount
+   public static let updatedAt

+ extension MembersSortField  
+ 
+   public static let createdAt
+   public static let updatedAt
+   public static let userId

+ extension CommentReactionsSortField  
+ 
+   public static let createdAt



 public struct FollowsSortField: SortField  
-   public static let createdAt
+   
-   
+ 
- 
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct PollVotesSortField: SortField  
-   public static let answerText
+   
-   public static let id
+ 
-   public static let createdAt
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   public static let updatedAt
-   
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct FeedsSortField: SortField  
-   public static let createdAt
+   
-   public static let followerCount
+ 
-   public static let followingCount
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   public static let memberCount
-   public static let updatedAt
-   
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct CommentReactionsSortField: SortField  
-   public static let createdAt
+   
-   
+ 
- 
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct ActivitiesSortField: SortField  
-   public static let createdAt
+   
-   public static let popularity
+ 
-   
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct ActivityReactionsSortField: SortField  
-   public static let createdAt
+   
-   
+ 
- 
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct MembersSortField: SortField  
-   public static let createdAt
+   
-   public static let updatedAt
+ 
-   public static let userId
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct BookmarkFoldersSortField: SortField  
-   public static let createdAt
+   
-   public static let updatedAt
+ 
-   
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 public struct ModerationConfigsSortField: SortField  
-   public static let key
+   
-   public static let createdAt
+ 
-   public static let updatedAt
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 extension ActivitiesFilterField  
-   public static let createdAt
+   public static let activityType
-   public static let expiresAt
+   public static let createdAt
-   public static let id
+   public static let expiresAt
-   public static let filterTags
+   public static let feed
-   public static let popularity
+   public static let filterTags
-   public static let searchData
+   public static let id
-   public static let text
+   public static let interestTags
-   public static let type
+   public static let near
-   public static let userId
+   public static let popularity
+   public static let searchData
+   public static let text
+   public static let userId
+   public static let withinBounds

 public struct PollsSortField: SortField  
-   public static let createdAt
+   
-   public static let updatedAt
+ 
-   public static let voteCount
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
-   public static let name
-   public static let id
-   public static let isClosed
-   
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

 extension BookmarkFoldersFilterField  
-   public static let folderId
+   public static let folderName
-   public static let folderName
+   public static let createdAt
-   public static let createdAt
+   public static let updatedAt
-   public static let updatedAt
+   public static let userId
-   public static let userId

 public struct ActivityData: Identifiable, Equatable, Sendable  
-   public let location: ActivityLocation?
+   public let location: CLLocationCoordinate2D?

 public struct BookmarksSortField: SortField  
-   public static let createdAt
+   
-   public static let updatedAt
+ 
-   
+   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)
- 
-   public init(_ rawValue: String,localValue: @escaping @Sendable (Model) -> Value)

@Stream-SDK-Bot
Copy link
Collaborator

SDK Size

title develop branch diff status
StreamFeeds 7.15 MB 7.15 MB +1 KB 🟢

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
45.9% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

@Stream-SDK-Bot
Copy link
Collaborator

StreamFeeds XCSize

Object Diff (bytes)
ActivitiesQuery.o +1716
ActivityData.o +712
Array+Extensions.o +521
ModerationConfigsQuery.o +492
StateLayerEvent.o +472
Show 13 more objects
Object Diff (bytes)
CoreLocation+Extensions.o +296
BookmarkFoldersQuery.o -188
CommentsQuery.o +185
FeedsQuery.o +184
PollsQuery.o -184
PollVotesQuery.o +184
MembersQuery.o +184
BookmarksQuery.o +184
ActivityReactionsQuery.o +184
FollowsQuery.o +184
CommentReactionsQuery.o +184
BookmarkData.o +84
StateLayerEventPublisher.o -60

@laevandus laevandus merged commit df79495 into develop Nov 18, 2025
5 of 6 checks passed
@laevandus laevandus deleted the sync-filtering-keys branch November 18, 2025 22:05
@Stream-SDK-Bot Stream-SDK-Bot mentioned this pull request Nov 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants