File tree Expand file tree Collapse file tree 4 files changed +18
-6
lines changed
Packages/StatusKit/Sources/StatusKit/Row/Subviews Expand file tree Collapse file tree 4 files changed +18
-6
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ struct StatusActionButton: View {
88 let configuration : StatusRowActionsView . ActionButtonConfiguration
99 let statusDataController : StatusDataController
1010 let status : Status
11+ let quoteStatus : any AnyStatus
1112 let theme : Theme
1213 let isFocused : Bool
1314 let isNarrow : Bool
@@ -17,7 +18,7 @@ struct StatusActionButton: View {
1718 let handleAction : ( StatusRowActionsView . Action ) -> Void
1819
1920 var isQuoteDisabled : Bool {
20- status . quoteApproval? . currentUser == . denied || status . visibility != . pub
21+ quoteStatus . quoteApproval? . currentUser == . denied || quoteStatus . visibility != . pub
2122 }
2223
2324 var body : some View {
Original file line number Diff line number Diff line change @@ -310,18 +310,25 @@ struct StatusRowActionsView: View {
310310 @ViewBuilder
311311 private func actionButton( action: Action ) -> some View {
312312 let configuration = configuration ( for: action)
313+ let finalStatus = viewModel. finalStatus
314+ let isQuoteUnavailable =
315+ finalStatus. visibility != . pub
316+ || finalStatus. quoteApproval? . currentUser == . denied
317+ let shouldDisableAction =
318+ ( configuration. trigger == . boost && viewModel. status. visibility != . pub)
319+ || ( configuration. trigger == . quote && isQuoteUnavailable)
320+
313321 StatusActionButton (
314322 configuration: configuration,
315323 statusDataController: statusDataController,
316324 status: viewModel. status,
325+ quoteStatus: finalStatus,
317326 theme: theme,
318327 isFocused: isFocused,
319328 isNarrow: isNarrow,
320329 isRemoteStatus: viewModel. isRemote,
321330 privateBoost: privateBoost ( ) ,
322- isDisabled: ( configuration. trigger == . boost
323- || configuration. trigger == . quote)
324- && viewModel. status. visibility != . pub,
331+ isDisabled: shouldDisableAction,
325332 handleAction: handleAction ( action: )
326333 )
327334 }
Original file line number Diff line number Diff line change @@ -34,7 +34,8 @@ struct StatusRowContextMenu: View {
3434 }
3535
3636 var isQuoteDisabled : Bool {
37- viewModel. status. quoteApproval? . currentUser == . denied || viewModel. status. visibility != . pub
37+ viewModel. finalStatus. quoteApproval? . currentUser == . denied
38+ || viewModel. finalStatus. visibility != . pub
3839 }
3940
4041 var body : some View {
Original file line number Diff line number Diff line change @@ -74,10 +74,13 @@ struct StatusRowSwipeView: View {
7474 makeSwipeButtonForRouterPath (
7575 action: action, destination: . replyToStatusEditor( status: viewModel. status) )
7676 case . quote:
77+ let finalStatus = viewModel. finalStatus
7778 makeSwipeButtonForRouterPath (
7879 action: action, destination: . quoteStatusEditor( status: viewModel. status)
7980 )
80- . disabled ( viewModel. status. visibility == . direct || viewModel. status. visibility == . priv)
81+ . disabled (
82+ finalStatus. visibility != . pub
83+ || finalStatus. quoteApproval? . currentUser == . denied)
8184 case . favorite:
8285 makeSwipeButtonForTask ( action: action) {
8386 await statusDataController. toggleFavorite ( remoteStatus: nil )
You can’t perform that action at this time.
0 commit comments