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.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121import ComposableArchitectureimport Modelsimport Routingimport SwiftUIimport TweetEngagementimport TwitterClientimport TwitterUI
package struct TweetMenu: View { let tweet: Tweet let engagement: Engagement let store: StoreOf<FeedFeature> @Environment(\.openWindow) private var openWindow @Environment(\.supportsMultipleWindows) private var supportsMultipleWindows @SharedReader(.viewer) private var viewer
package var body: some View { Button { store.send(.replyButtonTapped(tweet)) } label: { Label("Reply", twitterIcon: .replyStroke) } .disabled(!tweet.viewerCanReply)
Button { store.send(.repostButtonTapped(tweet)) } label: { Label(engagement.repost.isOn ? "Undo Retweet" : "Retweet", twitterIcon: .repostStroke) }
Button { store.send(.quoteButtonTapped(tweet)) } label: { Label("Quote Tweet", twitterIcon: .quoteTweet) }
PostActivityMenu(tweet: tweet, isOwnPost: tweet.author.id == viewer?.id, store: store)
Button { store.send(.authorTapped(tweet.author)) } label: { Label("View @\(tweet.author.screenName)", twitterIcon: .personStroke) }
if tweet.author.id == viewer?.id { Button { store.send(.pinButtonTapped(tweet)) } label: { Label( viewer?.pinnedTweetID == tweet.id ? "Unpin from Profile" : "Pin to Profile", twitterIcon: .pin) }
Button(role: .destructive) { store.send(.deleteButtonTapped(tweet)) } label: { Label("Delete Tweet", twitterIcon: .trash) } } else { Button { store.send(.muteButtonTapped(tweet.author)) } label: { Label( tweet.author.isMuting ? "Unmute @\(tweet.author.screenName)" : "Mute @\(tweet.author.screenName)", twitterIcon: tweet.author.isMuting ? .unmute : .mute) }
Button { store.send(.blockButtonTapped(tweet.author)) } label: { Label( tweet.author.isBlocking ? "Unblock @\(tweet.author.screenName)" : "Block @\(tweet.author.screenName)", twitterIcon: tweet.author.isBlocking ? .unblock : .block) } }
if supportsMultipleWindows { Divider()
Button { openWindow(value: Route.thread(tweet).window) } label: { Label("Open in New Window", twitterIcon: .newWindow) }
Button { openWindow(value: Route.profile(tweet.author).window) } label: { Label("Open @\(tweet.author.screenName) in New Window", twitterIcon: .newWindow) } }
Divider()
ShareLink(item: tweet.url)
Button { UIPasteboard.general.url = tweet.url } label: { Label("Copy Link", twitterIcon: .link) }
if tweet.isInAnotherLanguage() { Button { store.send(.translateButtonTapped(tweet)) } label: { Label("Translate Tweet", twitterIcon: .globe) } }
if !tweet.text.isEmpty { Button { UIPasteboard.general.string = tweet.text } label: { Label("Copy Text", twitterIcon: .copyStroke) } } }}