Show read/viewed even after read receipts disabled
This commit is contained in:
parent
8bcf3addc7
commit
2c59c71872
6 changed files with 20 additions and 70 deletions
|
@ -3850,11 +3850,7 @@ export class ConversationModel extends window.Backbone
|
||||||
(previewMessage ? previewMessage.getNotificationText() : '') || '',
|
(previewMessage ? previewMessage.getNotificationText() : '') || '',
|
||||||
lastMessageStatus:
|
lastMessageStatus:
|
||||||
(previewMessage
|
(previewMessage
|
||||||
? getMessagePropStatus(
|
? getMessagePropStatus(previewMessage.attributes, ourConversationId)
|
||||||
previewMessage.attributes,
|
|
||||||
ourConversationId,
|
|
||||||
window.storage.get('read-receipt-setting', false)
|
|
||||||
)
|
|
||||||
: null) || null,
|
: null) || null,
|
||||||
timestamp,
|
timestamp,
|
||||||
lastMessageDeletedForEveryone: previewMessage
|
lastMessageDeletedForEveryone: previewMessage
|
||||||
|
|
|
@ -367,7 +367,6 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
||||||
this.OUR_UUID,
|
this.OUR_UUID,
|
||||||
undefined,
|
undefined,
|
||||||
undefined,
|
undefined,
|
||||||
window.storage.get('read-receipt-setting', false),
|
|
||||||
window.storage.get('regionCode', 'ZZ'),
|
window.storage.get('regionCode', 'ZZ'),
|
||||||
(identifier?: string) => {
|
(identifier?: string) => {
|
||||||
const state = window.reduxStore.getState();
|
const state = window.reduxStore.getState();
|
||||||
|
@ -3336,8 +3335,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
||||||
(isIncoming(attributes) ||
|
(isIncoming(attributes) ||
|
||||||
getMessagePropStatus(
|
getMessagePropStatus(
|
||||||
attributes,
|
attributes,
|
||||||
window.ConversationController.getOurConversationIdOrThrow(),
|
window.ConversationController.getOurConversationIdOrThrow()
|
||||||
window.storage.get('read-receipt-setting', false)
|
|
||||||
) !== 'partial-sent')
|
) !== 'partial-sent')
|
||||||
) {
|
) {
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
|
@ -35,7 +35,7 @@ import {
|
||||||
getUserNumber,
|
getUserNumber,
|
||||||
getUserUuid,
|
getUserUuid,
|
||||||
} from './user';
|
} from './user';
|
||||||
import { getPinnedConversationIds, getReadReceiptSetting } from './items';
|
import { getPinnedConversationIds } from './items';
|
||||||
import { getPropsForBubble } from './message';
|
import { getPropsForBubble } from './message';
|
||||||
import {
|
import {
|
||||||
CallSelectorType,
|
CallSelectorType,
|
||||||
|
@ -671,7 +671,6 @@ export const getMessageSelector = createSelector(
|
||||||
getSelectedMessage,
|
getSelectedMessage,
|
||||||
getConversationSelector,
|
getConversationSelector,
|
||||||
getRegionCode,
|
getRegionCode,
|
||||||
getReadReceiptSetting,
|
|
||||||
getUserNumber,
|
getUserNumber,
|
||||||
getUserUuid,
|
getUserUuid,
|
||||||
getUserConversationId,
|
getUserConversationId,
|
||||||
|
@ -684,7 +683,6 @@ export const getMessageSelector = createSelector(
|
||||||
selectedMessage: SelectedMessageType | undefined,
|
selectedMessage: SelectedMessageType | undefined,
|
||||||
conversationSelector: GetConversationByIdType,
|
conversationSelector: GetConversationByIdType,
|
||||||
regionCode: string,
|
regionCode: string,
|
||||||
readReceiptSetting: boolean,
|
|
||||||
ourNumber: string,
|
ourNumber: string,
|
||||||
ourUuid: string,
|
ourUuid: string,
|
||||||
ourConversationId: string,
|
ourConversationId: string,
|
||||||
|
@ -705,7 +703,6 @@ export const getMessageSelector = createSelector(
|
||||||
ourNumber,
|
ourNumber,
|
||||||
ourUuid,
|
ourUuid,
|
||||||
regionCode,
|
regionCode,
|
||||||
readReceiptSetting,
|
|
||||||
selectedMessage ? selectedMessage.id : undefined,
|
selectedMessage ? selectedMessage.id : undefined,
|
||||||
selectedMessage ? selectedMessage.counter : undefined,
|
selectedMessage ? selectedMessage.counter : undefined,
|
||||||
callSelector,
|
callSelector,
|
||||||
|
|
|
@ -20,11 +20,6 @@ export const getUserAgent = createSelector(
|
||||||
(state: ItemsStateType): string => state.userAgent as string
|
(state: ItemsStateType): string => state.userAgent as string
|
||||||
);
|
);
|
||||||
|
|
||||||
export const getReadReceiptSetting = createSelector(
|
|
||||||
getItems,
|
|
||||||
(state: ItemsStateType): boolean => Boolean(state['read-receipt-setting'])
|
|
||||||
);
|
|
||||||
|
|
||||||
export const getPinnedConversationIds = createSelector(
|
export const getPinnedConversationIds = createSelector(
|
||||||
getItems,
|
getItems,
|
||||||
(state: ItemsStateType): Array<string> =>
|
(state: ItemsStateType): Array<string> =>
|
||||||
|
|
|
@ -83,7 +83,6 @@ export function getPropsForBubble(
|
||||||
ourNumber: string | undefined,
|
ourNumber: string | undefined,
|
||||||
ourUuid: string | undefined,
|
ourUuid: string | undefined,
|
||||||
regionCode: string,
|
regionCode: string,
|
||||||
readReceiptSetting: boolean,
|
|
||||||
selectedMessageId: string | undefined,
|
selectedMessageId: string | undefined,
|
||||||
selectedMessageCounter: number | undefined,
|
selectedMessageCounter: number | undefined,
|
||||||
callSelector: CallSelectorType,
|
callSelector: CallSelectorType,
|
||||||
|
@ -210,7 +209,6 @@ export function getPropsForBubble(
|
||||||
ourUuid,
|
ourUuid,
|
||||||
selectedMessageId,
|
selectedMessageId,
|
||||||
selectedMessageCounter,
|
selectedMessageCounter,
|
||||||
readReceiptSetting,
|
|
||||||
regionCode,
|
regionCode,
|
||||||
accountSelector
|
accountSelector
|
||||||
),
|
),
|
||||||
|
@ -322,7 +320,6 @@ export function getPropsForMessage(
|
||||||
ourUuid: string | undefined,
|
ourUuid: string | undefined,
|
||||||
selectedMessageId: string | undefined,
|
selectedMessageId: string | undefined,
|
||||||
selectedMessageCounter: number | undefined,
|
selectedMessageCounter: number | undefined,
|
||||||
readReceiptSetting: boolean,
|
|
||||||
regionCode: string,
|
regionCode: string,
|
||||||
accountSelector: (identifier?: string) => boolean
|
accountSelector: (identifier?: string) => boolean
|
||||||
): Omit<PropsForMessage, 'renderingContext'> {
|
): Omit<PropsForMessage, 'renderingContext'> {
|
||||||
|
@ -393,11 +390,7 @@ export function getPropsForMessage(
|
||||||
quote: getPropsForQuote(message, conversationSelector, ourConversationId),
|
quote: getPropsForQuote(message, conversationSelector, ourConversationId),
|
||||||
reactions,
|
reactions,
|
||||||
selectedReaction,
|
selectedReaction,
|
||||||
status: getMessagePropStatus(
|
status: getMessagePropStatus(message, ourConversationId),
|
||||||
message,
|
|
||||||
ourConversationId,
|
|
||||||
readReceiptSetting
|
|
||||||
),
|
|
||||||
text: createNonBreakingLastSeparator(message.body),
|
text: createNonBreakingLastSeparator(message.body),
|
||||||
textPending: message.bodyPending,
|
textPending: message.bodyPending,
|
||||||
timestamp: message.sent_at,
|
timestamp: message.sent_at,
|
||||||
|
@ -901,8 +894,7 @@ export function getMessagePropStatus(
|
||||||
MessageAttributesType,
|
MessageAttributesType,
|
||||||
'type' | 'errors' | 'sendStateByConversationId'
|
'type' | 'errors' | 'sendStateByConversationId'
|
||||||
>,
|
>,
|
||||||
ourConversationId: string,
|
ourConversationId: string
|
||||||
readReceiptSetting: boolean
|
|
||||||
): LastMessageStatus | undefined {
|
): LastMessageStatus | undefined {
|
||||||
if (!isOutgoing(message)) {
|
if (!isOutgoing(message)) {
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@ -936,7 +928,7 @@ export function getMessagePropStatus(
|
||||||
if (hasErrors(message)) {
|
if (hasErrors(message)) {
|
||||||
return isSent(highestSuccessfulStatus) ? 'partial-sent' : 'error';
|
return isSent(highestSuccessfulStatus) ? 'partial-sent' : 'error';
|
||||||
}
|
}
|
||||||
if (readReceiptSetting && isRead(highestSuccessfulStatus)) {
|
if (isRead(highestSuccessfulStatus)) {
|
||||||
return 'read';
|
return 'read';
|
||||||
}
|
}
|
||||||
if (isDelivered(highestSuccessfulStatus)) {
|
if (isDelivered(highestSuccessfulStatus)) {
|
||||||
|
|
|
@ -146,9 +146,7 @@ describe('state/selectors/messages', () => {
|
||||||
it('returns undefined for incoming messages', () => {
|
it('returns undefined for incoming messages', () => {
|
||||||
const message = createMessage({ type: 'incoming' });
|
const message = createMessage({ type: 'incoming' });
|
||||||
|
|
||||||
assert.isUndefined(
|
assert.isUndefined(getMessagePropStatus(message, ourConversationId));
|
||||||
getMessagePropStatus(message, ourConversationId, true)
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns "paused" for messages with challenges', () => {
|
it('returns "paused" for messages with challenges', () => {
|
||||||
|
@ -163,7 +161,7 @@ describe('state/selectors/messages', () => {
|
||||||
const message = createMessage({ errors: [challengeError] });
|
const message = createMessage({ errors: [challengeError] });
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, true),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'paused'
|
'paused'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -188,7 +186,7 @@ describe('state/selectors/messages', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, true),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'partial-sent'
|
'partial-sent'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -213,7 +211,7 @@ describe('state/selectors/messages', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, true),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'error'
|
'error'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -228,15 +226,13 @@ describe('state/selectors/messages', () => {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
[true, false].forEach(readReceiptSetting => {
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, readReceiptSetting),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'read'
|
'read'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
it('returns "read" if the message was read by at least one person and you have read receipts enabled', () => {
|
it('returns "read" if the message was read by at least one person', () => {
|
||||||
const readMessage = createMessage({
|
const readMessage = createMessage({
|
||||||
sendStateByConversationId: {
|
sendStateByConversationId: {
|
||||||
[ourConversationId]: {
|
[ourConversationId]: {
|
||||||
|
@ -258,7 +254,7 @@ describe('state/selectors/messages', () => {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(readMessage, ourConversationId, true),
|
getMessagePropStatus(readMessage, ourConversationId),
|
||||||
'read'
|
'read'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -271,35 +267,11 @@ describe('state/selectors/messages', () => {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(viewedMessage, ourConversationId, true),
|
getMessagePropStatus(viewedMessage, ourConversationId),
|
||||||
'read'
|
'read'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns "delivered" if the message was read by at least one person and you have read receipts disabled', () => {
|
|
||||||
const message = createMessage({
|
|
||||||
sendStateByConversationId: {
|
|
||||||
[ourConversationId]: {
|
|
||||||
status: SendStatus.Sent,
|
|
||||||
updatedAt: Date.now(),
|
|
||||||
},
|
|
||||||
[uuid()]: {
|
|
||||||
status: SendStatus.Pending,
|
|
||||||
updatedAt: Date.now(),
|
|
||||||
},
|
|
||||||
[uuid()]: {
|
|
||||||
status: SendStatus.Read,
|
|
||||||
updatedAt: Date.now(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
assert.strictEqual(
|
|
||||||
getMessagePropStatus(message, ourConversationId, false),
|
|
||||||
'delivered'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns "delivered" if the message was delivered to at least one person, but no "higher"', () => {
|
it('returns "delivered" if the message was delivered to at least one person, but no "higher"', () => {
|
||||||
const message = createMessage({
|
const message = createMessage({
|
||||||
sendStateByConversationId: {
|
sendStateByConversationId: {
|
||||||
|
@ -323,7 +295,7 @@ describe('state/selectors/messages', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, true),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'delivered'
|
'delivered'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -347,7 +319,7 @@ describe('state/selectors/messages', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, true),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'sent'
|
'sent'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -371,7 +343,7 @@ describe('state/selectors/messages', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
getMessagePropStatus(message, ourConversationId, true),
|
getMessagePropStatus(message, ourConversationId),
|
||||||
'sending'
|
'sending'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue