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.

refactor: drop vestigial launch signposters from Profile/Search

ProfileViewModelInit, SearchViewModelInit, ProfileViewBodyBegin, and
SearchViewBodyBegin were launch-path instrumentation that outlived their
measurement window. Removing the signposters keeps their view init paths
focused on actual setup.

authored by

Hima Aramona and committed by
Chad Miller
f98f8c66 f77545d0

-14
-7
Grain/Views/Profile/ProfileView.swift
··· 1 1 import Nuke 2 2 import NukeUI 3 - import OSLog 4 3 import SwiftUI 5 - 6 - private let profileLaunchSignposter = OSSignposter(subsystem: "social.grain.grain", category: "AppLaunch") 7 4 8 5 enum ProfileViewMode: String, CaseIterable { 9 6 case grid, favorites, stories ··· 43 40 44 41 init(client: XRPCClient, did: String, isRoot: Bool = false) { 45 42 self.client = client 46 - let _spid = profileLaunchSignposter.makeSignpostID() 47 - let _state = profileLaunchSignposter.beginInterval("ProfileViewModelInit", id: _spid) 48 43 _viewModel = State(initialValue: ProfileDetailViewModel(client: client)) 49 - profileLaunchSignposter.endInterval("ProfileViewModelInit", _state) 50 44 actor = did 51 45 self.isRoot = isRoot 52 46 } 53 47 54 48 var body: some View { 55 - let _ = profileLaunchSignposter.emitEvent("ProfileViewBodyBegin") 56 49 ZStack { 57 50 if isRoot { 58 51 NavigationStack {
-7
Grain/Views/Search/SearchView.swift
··· 1 - import os 2 1 import SwiftUI 3 - 4 - private let searchLaunchSignposter = OSSignposter(subsystem: "social.grain.grain", category: "AppLaunch") 5 2 6 3 struct SearchView: View { 7 4 @Environment(AuthManager.self) private var auth ··· 25 22 26 23 init(client: XRPCClient) { 27 24 self.client = client 28 - let _spid = searchLaunchSignposter.makeSignpostID() 29 - let _state = searchLaunchSignposter.beginInterval("SearchViewModelInit", id: _spid) 30 25 _viewModel = State(initialValue: SearchViewModel(client: client)) 31 26 _recentSearches = State(initialValue: RecentSearchStorage()) 32 - searchLaunchSignposter.endInterval("SearchViewModelInit", _state) 33 27 } 34 28 35 29 var body: some View { 36 - let _ = searchLaunchSignposter.emitEvent("SearchViewBodyBegin") 37 30 NavigationStack { 38 31 Group { 39 32 if viewModel.searchText.isEmpty {