Skip to content

Commit b40f6ac

Browse files
roostrmichaelkirk
authored andcommitted
Voiceover fix: Message author read as thread name (signalapp#1437) FREEBIE
There was a bug in voiceover mode. When reading messages, Voiceover would read out "message author: message content" for each chat bubble, but the message author was always the name of the chat. So if it was a contact chat, every message would be read as if from the other party, and if it was a group chat, every message would be from the title of the group. This patch looks up the display name for the given signal id so Voiceover reads the correct name for each message. It will read "Me" if the message is outgoing.
1 parent 8945101 commit b40f6ac

File tree

3 files changed

+8
-14
lines changed

3 files changed

+8
-14
lines changed

Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#import "OWSMessageData.h"
1010
#import "OWSMessageEditing.h"
1111
#import "TSInfoMessage.h"
12+
#import "ContactsManagerProtocol.h"
1213

1314
NS_ASSUME_NONNULL_BEGIN
1415

@@ -19,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
1920

2021
@interface TSMessageAdapter : NSObject <OWSMessageData>
2122

22-
+ (id<OWSMessageData>)messageViewDataWithInteraction:(TSInteraction *)interaction inThread:(TSThread *)thread;
23+
+ (id<OWSMessageData>)messageViewDataWithInteraction:(TSInteraction *)interaction inThread:(TSThread *)thread contactsManager:(id<ContactsManagerProtocol>)contactsManager;
2324

2425
@property (nonatomic) TSInteraction *interaction;
2526
@property (readonly) TSInfoMessageType infoMessageType;

Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ @interface TSMessageAdapter ()
2828

2929
// OR for groups
3030

31-
@property (nonatomic, retain) NSString *senderId;
32-
@property (nonatomic, retain) NSString *senderDisplayName;
31+
@property (nonatomic, copy) NSString *senderId;
32+
@property (nonatomic, copy) NSString *senderDisplayName;
3333

3434
// for InfoMessages
3535

@@ -91,7 +91,7 @@ - (instancetype)initWithInteraction:(TSInteraction *)interaction
9191
return self;
9292
}
9393

94-
+ (id<OWSMessageData>)messageViewDataWithInteraction:(TSInteraction *)interaction inThread:(TSThread *)thread
94+
+ (id<OWSMessageData>)messageViewDataWithInteraction:(TSInteraction *)interaction inThread:(TSThread *)thread contactsManager:(id<ContactsManagerProtocol>)contactsManager
9595
{
9696
TSMessageAdapter *adapter = [[TSMessageAdapter alloc] initWithInteraction:interaction];
9797

@@ -100,7 +100,7 @@ - (instancetype)initWithInteraction:(TSInteraction *)interaction
100100
if ([interaction isKindOfClass:[TSIncomingMessage class]]) {
101101
NSString *contactId = ((TSContactThread *)thread).contactIdentifier;
102102
adapter.senderId = contactId;
103-
adapter.senderDisplayName = contactId;
103+
adapter.senderDisplayName = [contactsManager nameStringForPhoneIdentifier:contactId];
104104
adapter.messageType = TSIncomingMessageAdapter;
105105
} else {
106106
adapter.senderId = ME_MESSAGE_IDENTIFIER;
@@ -111,7 +111,7 @@ - (instancetype)initWithInteraction:(TSInteraction *)interaction
111111
if ([interaction isKindOfClass:[TSIncomingMessage class]]) {
112112
TSIncomingMessage *message = (TSIncomingMessage *)interaction;
113113
adapter.senderId = message.authorId;
114-
adapter.senderDisplayName = message.authorId;
114+
adapter.senderDisplayName = [contactsManager nameStringForPhoneIdentifier:message.authorId];
115115
adapter.messageType = TSIncomingMessageAdapter;
116116
} else {
117117
adapter.senderId = ME_MESSAGE_IDENTIFIER;
@@ -216,13 +216,6 @@ - (NSString *)senderId {
216216
}
217217
}
218218

219-
- (NSString *)senderDisplayName {
220-
if (self.thread) {
221-
return _thread.name;
222-
}
223-
return _senderDisplayName;
224-
}
225-
226219
- (NSDate *)date {
227220
return self.messageDate;
228221
}

Signal/src/view controllers/MessagesViewController.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1957,7 +1957,7 @@ - (TSInteraction *)interactionAtIndexPath:(NSIndexPath *)indexPath {
19571957
id<OWSMessageData> messageAdapter = [self.messageAdapterCache objectForKey:interaction.uniqueId];
19581958

19591959
if (!messageAdapter) {
1960-
messageAdapter = [TSMessageAdapter messageViewDataWithInteraction:interaction inThread:self.thread];
1960+
messageAdapter = [TSMessageAdapter messageViewDataWithInteraction:interaction inThread:self.thread contactsManager:self.contactsManager];
19611961
[self.messageAdapterCache setObject:messageAdapter forKey: interaction.uniqueId];
19621962
}
19631963

0 commit comments

Comments
 (0)