Skip to content

Commit 034a5d9

Browse files
ref(feedback): when bulk resolve/unresolve, header checkbox unchecks (#59147)
when bulk resolve/unresolve clicked, the header checkbox is no longer selected since we can't see the selected feedbacks anymore (they're in the other mailbox). however, when bulk mark as read/unread, the checkbox stays selected because we can still see the feedbacks. https://github.com/getsentry/sentry/assets/56095982/0bcc423e-6ecf-4255-b9a9-081d5aa5461a
1 parent 2fbc462 commit 034a5d9

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

static/app/components/feedback/list/feedbackList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default function FeedbackList() {
4343
const {setParamValue} = useUrlParams('query');
4444
const clearSearchTerm = () => setParamValue('');
4545

46-
const {checked, toggleChecked} = useListItemCheckboxState();
46+
const {checked, uncheckAll, toggleChecked} = useListItemCheckboxState();
4747

4848
const listRef = useRef<ReactVirtualizedList>(null);
4949

@@ -87,7 +87,7 @@ export default function FeedbackList() {
8787

8888
return (
8989
<Fragment>
90-
<FeedbackListHeader checked={checked} toggleChecked={toggleChecked} />
90+
<FeedbackListHeader checked={checked} uncheckAll={uncheckAll} />
9191
<OverflowPanelItem noPadding>
9292
<InfiniteLoader
9393
isRowLoaded={isRowLoaded}

static/app/components/feedback/list/feedbackListHeader.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ import useUrlParams from 'sentry/utils/useUrlParams';
2424

2525
interface Props {
2626
checked: string[];
27-
toggleChecked: (id: string) => void;
27+
uncheckAll: (ids: string[]) => void;
2828
}
2929

30-
export default function FeedbackListHeader({checked, toggleChecked}: Props) {
30+
export default function FeedbackListHeader({checked, uncheckAll}: Props) {
3131
const {mailbox} = useLocationQuery({
3232
fields: {
3333
mailbox: decodeMailbox,
@@ -40,19 +40,19 @@ export default function FeedbackListHeader({checked, toggleChecked}: Props) {
4040
<Checkbox
4141
checked={checked.length ? 'indeterminate' : false}
4242
onChange={() => {
43-
checked.length ? checked.forEach(c => toggleChecked(c)) : null;
43+
checked.length ? uncheckAll(checked) : null;
4444
}}
4545
/>
4646
{checked.length ? (
47-
<HasSelection checked={checked} mailbox={mailbox} />
47+
<HasSelection checked={checked} mailbox={mailbox} uncheckAll={uncheckAll} />
4848
) : (
4949
<MailboxPicker value={mailbox} onChange={setMailbox} />
5050
)}
5151
</HeaderPanelItem>
5252
);
5353
}
5454

55-
function HasSelection({checked, mailbox}) {
55+
function HasSelection({checked, mailbox, uncheckAll}) {
5656
const organization = useOrganization();
5757
const {markAsRead, resolve} = useMutateFeedback({
5858
feedbackIds: checked,
@@ -81,6 +81,7 @@ function HasSelection({checked, mailbox}) {
8181
const newStatus =
8282
mailbox === 'resolved' ? GroupStatus.UNRESOLVED : GroupStatus.RESOLVED;
8383
resolve(newStatus, mutationOptions);
84+
uncheckAll(checked);
8485
}}
8586
>
8687
{mailbox === 'resolved' ? t('Unresolve') : t('Resolve')}

static/app/components/feedback/list/useListItemCheckboxState.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,13 @@ export default function useListItemCheckboxState() {
1717
});
1818
}, []);
1919

20+
const uncheckAll = useCallback(() => {
21+
setState({});
22+
}, []);
23+
2024
return {
2125
checked,
2226
toggleChecked,
27+
uncheckAll,
2328
};
2429
}

0 commit comments

Comments
 (0)