Fix contact sharing (Avatar TODO)

// FREEBIE
pull/1/head
Michael Kirk 7 years ago
parent e520451996
commit adabf02732

@ -31,6 +31,7 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
@property (nonatomic) TSThread *thread; @property (nonatomic) TSThread *thread;
@property (nonatomic, readonly, weak) id<ShareViewDelegate> shareViewDelegate; @property (nonatomic, readonly, weak) id<ShareViewDelegate> shareViewDelegate;
@property (nonatomic, readonly) UIProgressView *progressView; @property (nonatomic, readonly) UIProgressView *progressView;
@property (nonatomic, readonly) YapDatabaseConnection *editingDBConnection;
@property (atomic, nullable) TSOutgoingMessage *outgoingMessage; @property (atomic, nullable) TSOutgoingMessage *outgoingMessage;
@end @end
@ -46,6 +47,7 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
return self; return self;
} }
_editingDBConnection = [OWSPrimaryStorage.sharedManager newDatabaseConnection];
_shareViewDelegate = shareViewDelegate; _shareViewDelegate = shareViewDelegate;
self.selectThreadViewDelegate = self; self.selectThreadViewDelegate = self;
@ -282,29 +284,37 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
#pragma mark - ApproveContactShareViewControllerDelegate #pragma mark - ApproveContactShareViewControllerDelegate
- (void)approveContactShare:(ApproveContactShareViewController *)approvalViewController - (void)approveContactShare:(ApproveContactShareViewController *)approvalViewController
didApproveContactShare:(OWSContact *)contactShare didApproveContactShare:(ContactShareViewModel *)contactShare
{ {
DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__);
[ThreadUtil addThreadToProfileWhitelistIfEmptyContactThread:self.thread]; [ThreadUtil addThreadToProfileWhitelistIfEmptyContactThread:self.thread];
[self tryToSendMessageWithBlock:^(SendCompletionBlock sendCompletion) { [self tryToSendMessageWithBlock:^(SendCompletionBlock sendCompletion) {
OWSAssertIsOnMainThread(); OWSAssertIsOnMainThread();
[self.editingDBConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
__block TSOutgoingMessage *outgoingMessage = nil; if (contactShare.avatarImage) {
outgoingMessage = [ThreadUtil sendMessageWithContactShare:contactShare [contactShare.dbRecord saveAvatarImage:contactShare.avatarImage transaction:transaction];
inThread:self.thread }
messageSender:self.messageSender }
completion:^(NSError *_Nullable error) { completionBlock:^{
sendCompletion(error, outgoingMessage); __block TSOutgoingMessage *outgoingMessage = nil;
}]; outgoingMessage = [ThreadUtil sendMessageWithContactShare:contactShare.dbRecord
// This is necessary to show progress. inThread:self.thread
self.outgoingMessage = outgoingMessage; messageSender:self.messageSender
completion:^(NSError *_Nullable error) {
sendCompletion(error, outgoingMessage);
}];
// This is necessary to show progress.
self.outgoingMessage = outgoingMessage;
}];
} }
fromViewController:approvalViewController]; fromViewController:approvalViewController];
} }
- (void)approveContactShare:(ApproveContactShareViewController *)approvalViewController - (void)approveContactShare:(ApproveContactShareViewController *)approvalViewController
didCancelContactShare:(OWSContact *)contactShare didCancelContactShare:(ContactShareViewModel *)contactShare
{ {
DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__);

Loading…
Cancel
Save