More explicit function names, shifted friend request sent logic to more sensible place

pull/63/head
Beaudan 6 years ago
parent 91a8a82e39
commit 28fc5793a7

@ -281,7 +281,7 @@
lastUpdated: this.get('timestamp'), lastUpdated: this.get('timestamp'),
unreadCount: this.get('unreadCount') || 0, unreadCount: this.get('unreadCount') || 0,
isSelected: this.isSelected, isSelected: this.isSelected,
showFriendRequestIndicator: this.isPending(), showFriendRequestIndicator: this.isPendingFriendRequest(),
isBlocked: this.isBlocked(), isBlocked: this.isBlocked(),
lastMessage: { lastMessage: {
status: this.lastMessageStatus, status: this.lastMessageStatus,
@ -434,20 +434,15 @@
return contact.isVerified(); return contact.isVerified();
}); });
}, },
isNone() { isFriendRequestStatusNone() {
return this.get('friendRequestStatus') === FriendRequestStatusEnum.none; return this.get('friendRequestStatus') === FriendRequestStatusEnum.none;
}, },
hasInputBlocked() { isPendingFriendRequest() {
const status = this.get('friendRequestStatus'); const status = this.get('friendRequestStatus');
return status === FriendRequestStatusEnum.requestSent || return status === FriendRequestStatusEnum.requestSent ||
status === FriendRequestStatusEnum.requestReceived || status === FriendRequestStatusEnum.requestReceived ||
status === FriendRequestStatusEnum.pendingSend; status === FriendRequestStatusEnum.pendingSend;
}, },
isPending() {
const status = this.get('friendRequestStatus');
return status === FriendRequestStatusEnum.requestSent ||
status === FriendRequestStatusEnum.requestReceived;
},
hasSentFriendRequest() { hasSentFriendRequest() {
return this.get('friendRequestStatus') === FriendRequestStatusEnum.requestSent; return this.get('friendRequestStatus') === FriendRequestStatusEnum.requestSent;
}, },
@ -479,7 +474,7 @@
}, },
async setFriendRequestStatus(newStatus) { async setFriendRequestStatus(newStatus) {
// Ensure that the new status is a valid FriendStatusEnum value // Ensure that the new status is a valid FriendStatusEnum value
if (!Object.values(FriendRequestStatusEnum).some(v => v === newStatus)) if (!(newStatus in Object.values(FriendRequestStatusEnum)))
return; return;
if (this.get('friendRequestStatus') !== newStatus) { if (this.get('friendRequestStatus') !== newStatus) {
this.set({ friendRequestStatus: newStatus }); this.set({ friendRequestStatus: newStatus });
@ -563,7 +558,7 @@
await this.setFriendRequestStatus(FriendRequestStatusEnum.none); await this.setFriendRequestStatus(FriendRequestStatusEnum.none);
}, },
async onFriendRequestReceived() { async onFriendRequestReceived() {
if (this.isNone()) { if (this.isFriendRequestStatusNone()) {
this.setFriendRequestStatus(FriendRequestStatusEnum.requestReceived); this.setFriendRequestStatus(FriendRequestStatusEnum.requestReceived);
} else if (this.hasSentFriendRequest()) { } else if (this.hasSentFriendRequest()) {
await Promise.all([ await Promise.all([
@ -966,7 +961,7 @@
async sendMessage(body, attachments, quote) { async sendMessage(body, attachments, quote) {
// Input should be blocked if there is a pending friend request // Input should be blocked if there is a pending friend request
if (this.hasInputBlocked()) if (this.isPendingFriendRequest())
return; return;
const destination = this.id; const destination = this.id;
const expireTimer = this.get('expireTimer'); const expireTimer = this.get('expireTimer');
@ -1107,8 +1102,7 @@
expireTimer, expireTimer,
profileKey, profileKey,
options options
), )
message.isFriendRequest()
) )
) )
); );
@ -1116,34 +1110,39 @@
return true; return true;
}); });
}, },
wrapSend(promise, isFriendRequest = false) { wrapSend(promise) {
return promise.then( return promise.then(
async result => { async result => {
// success // success
if (result) { if (result) {
if (isFriendRequest) await this.handleMessageSendResult({
this.onFriendRequestSent(); ...result,
await this.handleMessageSendResult( success: true,
result.failoverNumbers, });
result.unidentifiedDeliveries
);
} }
return result; return result;
}, },
async result => { async result => {
// failure // failure
if (result) { if (result) {
await this.handleMessageSendResult( await this.handleMessageSendResult({
result.failoverNumbers, ...result,
result.unidentifiedDeliveries success: false,
); });
} }
throw result; throw result;
} }
); );
}, },
async handleMessageSendResult(failoverNumbers, unidentifiedDeliveries) { async handleMessageSendResult({
failoverNumbers,
unidentifiedDeliveries,
messageType,
success,
}) {
if (success && messageType === 'friend-request')
await this.onFriendRequestSent();
await Promise.all( await Promise.all(
(failoverNumbers || []).map(async number => { (failoverNumbers || []).map(async number => {
const conversation = ConversationController.get(number); const conversation = ConversationController.get(number);

@ -1383,7 +1383,7 @@
message.set({ friendStatus: 'accepted' }); message.set({ friendStatus: 'accepted' });
await conversation.onFriendRequestAccepted(); await conversation.onFriendRequestAccepted();
window.libloki.sendFriendRequestAccepted(message.get('source')); window.libloki.sendFriendRequestAccepted(message.get('source'));
} else if (conversation.isNone()) { } else if (conversation.isFriendRequestStatusNone()) {
await conversation.onFriendRequestReceived(); await conversation.onFriendRequestReceived();
} }
} else { } else {

@ -60,6 +60,7 @@ OutgoingMessage.prototype = {
failoverNumbers: this.failoverNumbers, failoverNumbers: this.failoverNumbers,
errors: this.errors, errors: this.errors,
unidentifiedDeliveries: this.unidentifiedDeliveries, unidentifiedDeliveries: this.unidentifiedDeliveries,
messageType: this.messageType,
}); });
} }
}, },

Loading…
Cancel
Save