Skip to content

Commit ee166d7

Browse files
authored
Fix quote availability checks for reblogs (#2333)
1 parent d22e7b9 commit ee166d7

File tree

4 files changed

+18
-6
lines changed

4 files changed

+18
-6
lines changed

Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusActionButton.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff 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 {

Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowActionsView.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff 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
}

Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowContextMenu.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff 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 {

Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowSwipeView.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff 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)

0 commit comments

Comments
 (0)