fix: group member list is all unselected by default

pull/3052/head
Audric Ackermann 6 months ago
parent eff4d13b9a
commit 9c098ff3a8
No known key found for this signature in database

@ -18,7 +18,7 @@ import {
useIsPrivate,
useIsPublic,
useSortedGroupMembers,
useWeAreAdmin
useWeAreAdmin,
} from '../../hooks/useParamSelector';
import { useSet } from '../../hooks/useSet';
@ -151,11 +151,7 @@ export const UpdateGroupMembersDialog = (props: Props) => {
const isProcessingUIChange = useMemberGroupChangePending();
const [alsoRemoveMessages, setAlsoRemoveMessages] = useState(false);
const {
addTo,
removeFrom,
uniqueValues: membersToKeepWithUpdate,
} = useSet<string>(existingMembers);
const { addTo, removeFrom, uniqueValues: membersToRemove } = useSet<string>([]);
const dispatch = useDispatch();
@ -173,7 +169,7 @@ export const UpdateGroupMembersDialog = (props: Props) => {
groupPk: conversationId,
addMembersWithHistory: [],
addMembersWithoutHistory: [],
removeMembers: difference(existingMembers, membersToKeepWithUpdate) as Array<PubkeyType>,
removeMembers: membersToRemove as Array<PubkeyType>,
alsoRemoveMessages,
});
dispatch(groupv2Action as any);
@ -181,7 +177,10 @@ export const UpdateGroupMembersDialog = (props: Props) => {
return; // keeping the dialog open until the async thunk is done
}
await onSubmit(conversationId, membersToKeepWithUpdate);
await onSubmit(
conversationId,
difference(existingMembers, membersToRemove) as Array<PubkeyType>
);
closeDialog();
};
@ -190,43 +189,40 @@ export const UpdateGroupMembersDialog = (props: Props) => {
return event.key === 'Esc' || event.key === 'Escape';
}, closeDialog);
const onAdd = (member: string) => {
const onSelect = (member: string) => {
if (!weAreAdmin) {
window?.log?.warn('Only group admin can add members!');
window?.log?.warn('Only group admin can select!');
return;
}
addTo(member);
};
const onRemove = (member: string) => {
if (!weAreAdmin) {
window?.log?.warn('Only group admin can remove members!');
return;
}
if (groupAdmins?.includes(member)) {
if (PubKey.is03Pubkey(conversationId)) {
window?.log?.warn(`User ${member} cannot be removed as they are an admin.`);
window?.log?.warn(`User ${member} cannot be selected as they are an admin.`);
return;
}
ToastUtils.pushCannotRemoveCreatorFromGroup();
window?.log?.warn(
`User ${member} cannot be removed as they are the creator of the closed group.`
`User ${member} cannot be selected as they are the creator of the closed group.`
);
return;
}
addTo(member);
};
const onUnselect = (member: string) => {
if (!weAreAdmin) {
window?.log?.warn('Only group admin can unselect members!');
return;
}
removeFrom(member);
};
const showNoMembersMessage = existingMembers.length === 0;
const okText = window.i18n('okay');
const cancelText = window.i18n('cancel');
const titleText = window.i18n('groupMembers');
return (
<SessionWrapperModal title={titleText} onClose={closeDialog}>
<SessionWrapperModal title={window.i18n('groupMembers')} onClose={closeDialog}>
{hasClosedGroupV2QAButtons() && weAreAdmin ? (
<>
Also remove messages:
@ -241,9 +237,9 @@ export const UpdateGroupMembersDialog = (props: Props) => {
<StyledClassicMemberList className="contact-selection-list">
<ClassicMemberList
convoId={conversationId}
onSelect={onAdd}
onUnselect={onRemove}
selectedMembers={membersToKeepWithUpdate}
onSelect={onSelect}
onUnselect={onUnselect}
selectedMembers={membersToRemove}
/>
</StyledClassicMemberList>
{showNoMembersMessage && <p>{window.i18n('groupMembersNone')}</p>}
@ -255,16 +251,16 @@ export const UpdateGroupMembersDialog = (props: Props) => {
<div className="session-modal__button-group">
{weAreAdmin && (
<SessionButton
text={okText}
text={window.i18n('remove')}
onClick={onClickOK}
buttonType={SessionButtonType.Simple}
buttonColor={SessionButtonColor.Danger}
disabled={isProcessingUIChange}
dataTestId="session-confirm-ok-button"
/>
)}
<SessionButton
text={cancelText}
buttonColor={weAreAdmin ? SessionButtonColor.Danger : undefined}
text={window.i18n('cancel')}
buttonType={SessionButtonType.Simple}
onClick={closeDialog}
disabled={isProcessingUIChange}

@ -198,7 +198,7 @@ export const OverlayClosedGroupV2 = () => {
{isDevProd() && (
<>
<span style={{ display: 'flex', alignItems: 'center' }}>
Invite as admin Plop?{' '}
Invite as admin?{' '}
<SessionToggle
active={window.sessionFeatureFlags.useGroupV2InviteAsAdmin}
onClick={() => {

@ -299,7 +299,6 @@ const decryptBlindedMessage = async (
const version = data[0];
if (version !== 0) {
console.warn('decryptBlindedMessage - Dropping message due to unsupported encryption version');
return undefined;
}

Loading…
Cancel
Save