fix: disable typing and message request on sogs without `write`

This commit is contained in:
Audric Ackermann 2022-09-15 09:58:41 +10:00
parent 336baf6528
commit 179f872679
6 changed files with 34 additions and 6 deletions

View File

@ -79,7 +79,7 @@ textarea {
overflow: hidden;
outline: none;
color: $textAndBorderColor;
border: 2px solid $textAndBorderColor;
border: 1px solid $textAndBorderColor;
}
width: auto;

View File

@ -14,7 +14,7 @@ const StyledTypingContainer = styled.div`
const StyledTypingDot = styled.div<{ index: number }>`
border-radius: 50%;
background-color: var(--color-text-subtle); // TODO Theming update
background-color: var(--color-text-subtle); // TODO Theming update
height: 6px;
width: 6px;

View File

@ -9,6 +9,7 @@ import { PubKey } from '../../../../session/types';
import { openConversationWithMessages } from '../../../../state/ducks/conversations';
import { updateUserDetailsModal } from '../../../../state/ducks/modalDialog';
import {
getIsTypingEnabled,
getMessageAvatarProps,
getSelectedConversationKey,
} from '../../../../state/selectors/conversations';
@ -37,6 +38,8 @@ export const MessageAvatar = (props: Props) => {
const avatarProps = useSelector(state => getMessageAvatarProps(state as any, messageId));
const selectedConvoKey = useSelector(getSelectedConversationKey);
const isTypingEnabled = useSelector(getIsTypingEnabled);
if (!avatarProps) {
return null;
}
@ -75,6 +78,11 @@ export const MessageAvatar = (props: Props) => {
}
}
if (isPublic && !isTypingEnabled) {
window.log.info('onMessageAvatarClick: no typing enabled. Dropping...');
return;
}
if (isPublic && selectedConvoKey) {
const convoOpen = getConversationController().get(selectedConvoKey);
const room = OpenGroupData.getV2OpenGroupRoom(convoOpen.id);

View File

@ -416,6 +416,23 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
toRet.currentNotificationSetting = currentNotificationSetting;
}
if (this.isOpenGroupV2()) {
const room = OpenGroupData.getV2OpenGroupRoom(this.id);
if (room && isArray(room.capabilities) && room.capabilities.length) {
toRet.capabilities = room.capabilities;
}
if (this.get('writeCapability')) {
toRet.writeCapability = this.get('writeCapability');
}
if (this.get('readCapability')) {
toRet.readCapability = this.get('readCapability');
}
if (this.get('uploadCapability')) {
toRet.uploadCapability = this.get('uploadCapability');
}
}
const lastMessageText = this.get('lastMessage');
if (lastMessageText && lastMessageText.length) {
const lastMessageStatus = this.get('lastMessageStatus');

View File

@ -268,8 +268,11 @@ export interface ReduxConversationType {
isApproved?: boolean;
didApproveMe?: boolean;
/** Should only be present on open groups - the key (stored as hex) that should be used when sending messages to an open group */
blindedPublicKey?: string;
// Should only be present on opengroups - the capabilities we have on this room.
capabilities?: Array<string>;
readCapability?: boolean;
writeCapability?: boolean;
uploadCapability?: boolean;
}
export interface NotificationForConvoOption {

View File

@ -85,9 +85,9 @@ export const getIsTypingEnabled = createSelector(
if (!selectedConvo) {
return false;
}
const { isBlocked, isKickedFromGroup, left } = selectedConvo;
const { isBlocked, isKickedFromGroup, left, isPublic, writeCapability } = selectedConvo;
return !(isBlocked || isKickedFromGroup || left);
return !(isBlocked || isKickedFromGroup || left || (isPublic && !writeCapability));
}
);
/**