Something went wrong. Try again.
A slopfork of Sam Henri Gold's Twitter client, reskinned like Tweetie 2 / Twitter for iPhone circa 2012. Personal use.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566import ComposableArchitectureimport ComposeFeatureimport Routingimport SwiftUIimport TabStackFeatureimport TwitterUI
package struct RouteWindowView: View { @Bindable var store: StoreOf<RouteWindowFeature> @Environment(\.dismissWindow) private var dismissWindow
package init(store: StoreOf<RouteWindowFeature>) { self.store = store }
package var body: some View { Group { switch store.status { case .signedOutElsewhere: Color.clear case .failed(let message): ContentUnavailableView { Label("Couldn't reach Twitter", twitterIcon: .cloudOff) } description: { Text(message) } actions: { Button("Try Again") { store.send(.task) } .buttonStyle(.classicProminent) } case .ready: TabStackView(store: store.scope(state: \.stack, action: \.stack), title: store.route.windowTitle) case .restoring: ProgressView() case .signedOut: ContentUnavailableView( "Signed Out", twitterIcon: .signOut, description: Text("Sign in from the main Twitter window to see this.") ) } } .task { store.send(.task) } .onChange(of: store.status) { if store.status == .signedOutElsewhere { dismissWindow() } } .sheet(item: $store.scope(state: \.compose, action: \.compose)) { composeStore in ComposeView(store: composeStore) } }}
extension WindowRoute { fileprivate var windowTitle: LocalizedStringKey { switch self { case .list(let list): "\(list.name)" case .lists: "Lists" case .profile(let screenName): "@\(screenName)" case .quotes: "Quote Tweets" case .search(let query): "Search: \(query)" case .thread: "Tweet" case .userList(let source): "\(source.title)" case .web(let url): "\(url.host() ?? url.absoluteString)" } }}