iOS client for Grain grain.social
ios photography atproto
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: profile pull-to-refresh now updates favorites and story archive

Reset favoritesLoaded/archiveLoaded flags on refresh and re-fetch
when the user is currently on those tabs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+7 -1
+2 -1
Grain/ViewModels/ProfileDetailViewModel.swift
··· 39 39 let response = try? await client.getKnownFollowers(actor: did, viewer: viewer, auth: auth) 40 40 return response?.items ?? [] 41 41 }() 42 - 43 42 let profileResult = try await profileFetch 44 43 let feedResult = try await feedFetch 45 44 let storiesResult = try await storiesFetch ··· 50 49 hasMoreGalleries = feedResult.cursor != nil 51 50 stories = storiesResult.stories 52 51 knownFollowers = await knownFollowersFetch 52 + favoritesLoaded = false 53 + archiveLoaded = false 53 54 } catch { 54 55 self.error = error 55 56 }
+5
Grain/Views/Profile/ProfileView.swift
··· 366 366 .background(Color(.systemBackground)) 367 367 .refreshable { 368 368 await viewModel.load(did: actor, viewer: auth.userDID, auth: auth.authContext()) 369 + if viewMode == .favorites { 370 + await viewModel.loadFavorites(did: actor, auth: auth.authContext()) 371 + } else if viewMode == .stories { 372 + await viewModel.loadStoryArchive(did: actor, auth: auth.authContext()) 373 + } 369 374 } 370 375 .task { 371 376 guard !isPreview else {