The Cloud view only had provider and type filters, so finding a specific
release in a large debrid account meant scrolling the whole list, even
though the item names and file names are already loaded on the client.
Adds a local search field under the toolbar that narrows the already
loaded items. It matches the item name or any of its file names, since
the useful identifier is often in the filename rather than the title,
and it stacks on top of the existing provider and type filters.
1. TraktAuthStorage: Added profileId parameter to loadPayload(profileId)
and savePayload(profileId, payload) in Android and iOS actual
implementations, passing it explicitly to ProfileScopedKey.of().
2. TraktAuthRepository: Added currentProfileId and profileGeneration
for cross-profile operation detection. Methods now accept explicit
profileId to isolate auth state per profile. loadFromDisk() and
persist() use the scoped storage key.
3. TraktCredentialSync: Updated to pass profileId to currentStateForSync()
and replaceStateFromSync().
4. ProfileRepository/LibraryRepository: Updated calls to
TraktAuthRepository.onProfileChanged(profileId).
5. WatchedRepository/WatchProgressRepository: Fixed
pullFromServer/forceSnapshotRefreshFromServer to pass profileId
to TraktAuthRepository.ensureLoaded() before checking
activeOperationGeneration.
6. SyncManager: Passes profileId to ensureLoaded().
1. TraktAuthStorage: Added profileId parameter to loadPayload(profileId)
and savePayload(profileId, payload) in Android and iOS actual
implementations, passing it explicitly to ProfileScopedKey.of().
2. TraktAuthRepository: Added currentProfileId and profileGeneration
for cross-profile operation detection. Methods now accept explicit
profileId to isolate auth state per profile. loadFromDisk() and
persist() use the scoped storage key.
3. TraktCredentialSync: Updated to pass profileId to currentStateForSync()
and replaceStateFromSync().
4. ProfileRepository/LibraryRepository: Updated calls to
TraktAuthRepository.onProfileChanged(profileId).
5. WatchedRepository/WatchProgressRepository: Fixed
pullFromServer/forceSnapshotRefreshFromServer to pass profileId
to TraktAuthRepository.ensureLoaded() before checking
activeOperationGeneration.
6. SyncManager: Passes profileId to ensureLoaded().