Fix crash & clean
This commit is contained in:
parent
740291cceb
commit
5622c08124
|
@ -66,10 +66,21 @@
|
|||
}
|
||||
addSubview(mainStackView)
|
||||
mainStackView.autoPin(toEdgesOf: self)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(handleFriendRequestStatusChangedNotification), name: .messageFriendRequestStatusChanged, object: nil)
|
||||
}
|
||||
|
||||
deinit {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
}
|
||||
|
||||
// MARK: Updating
|
||||
@objc func handleMessageChanged() {
|
||||
@objc private func handleFriendRequestStatusChangedNotification(_ notification: Notification) {
|
||||
guard let messageID = notification.object as? String, messageID == message?.uniqueId else { return }
|
||||
message.reload()
|
||||
handleMessageChanged()
|
||||
}
|
||||
|
||||
@objc private func handleMessageChanged() {
|
||||
precondition(message != nil)
|
||||
switch kind {
|
||||
case .incoming:
|
||||
|
@ -108,7 +119,6 @@
|
|||
guard let message = message as? TSIncomingMessage else { preconditionFailure() }
|
||||
message.saveFriendRequestStatus(.declined, with: nil)
|
||||
delegate?.declineFriendRequest(message)
|
||||
handleMessageChanged() // Update UI
|
||||
}
|
||||
|
||||
// MARK: Measuring
|
||||
|
|
|
@ -480,16 +480,9 @@ typedef enum : NSUInteger {
|
|||
// Ensure thread instance is up to date
|
||||
[self.thread reload];
|
||||
// Update UI
|
||||
id<ConversationViewItem> lastItem = self.viewItems.lastObject;
|
||||
[lastItem clearCachedLayoutState];
|
||||
UICollectionViewCell *cell = self.collectionView.visibleCells.lastObject;
|
||||
OWSMessageCell *messageCell = (OWSMessageCell *)[cell as:OWSMessageCell.class];
|
||||
if (messageCell != nil) {
|
||||
[messageCell.friendRequestView.message reload];
|
||||
[messageCell.friendRequestView handleMessageChanged];
|
||||
}
|
||||
[self resetContentAndLayout];
|
||||
[self.viewItems.lastObject clearCachedLayoutState];
|
||||
[self updateInputToolbar];
|
||||
[self resetContentAndLayout];
|
||||
}
|
||||
|
||||
- (void)peekSetup
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
|
||||
public extension Notification.Name {
|
||||
public static let threadFriendRequestStatusChanged = Notification.Name("threadFriendRequestStatusChanged")
|
||||
public static let messageFriendRequestStatusChanged = Notification.Name("messageFriendRequestStatusChanged")
|
||||
}
|
||||
|
||||
// MARK: - Obj-C
|
||||
|
||||
@objc public extension NSNotification {
|
||||
@objc public static let threadFriendRequestStatusChanged = Notification.Name.threadFriendRequestStatusChanged.rawValue as NSString // Obj-C
|
||||
@objc public static let threadFriendRequestStatusChanged = Notification.Name.threadFriendRequestStatusChanged.rawValue as NSString
|
||||
@objc public static let messageFriendRequestStatusChanged = Notification.Name.messageFriendRequestStatusChanged.rawValue as NSString
|
||||
}
|
||||
|
|
|
@ -444,10 +444,15 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
|
|||
- (void)saveFriendRequestStatus:(TSMessageFriendRequestStatus)friendRequestStatus withTransaction:(YapDatabaseReadWriteTransaction *_Nullable)transaction
|
||||
{
|
||||
self.friendRequestStatus = friendRequestStatus;
|
||||
void (^postNotification)() = ^() {
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:NSNotification.messageFriendRequestStatusChanged object:self.uniqueId];
|
||||
};
|
||||
if (transaction == nil) {
|
||||
[self save];
|
||||
[self.dbReadWriteConnection flushTransactionsWithCompletionQueue:dispatch_get_main_queue() completionBlock:^{ postNotification(); }];
|
||||
} else {
|
||||
[self saveWithTransaction:transaction];
|
||||
[transaction.connection flushTransactionsWithCompletionQueue:dispatch_get_main_queue() completionBlock:^{ postNotification(); }];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1122,7 +1122,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[message.thread saveFriendRequestStatus:TSThreadFriendRequestStatusRequestSent withTransaction:transaction];
|
||||
[message.thread removeOutgoingFriendRequestMessagesWithTransaction:transaction];
|
||||
[message saveFriendRequestStatus:TSMessageFriendRequestStatusPending withTransaction:nil];
|
||||
[message saveFriendRequestStatus:TSMessageFriendRequestStatusPending withTransaction:transaction];
|
||||
// Set the expiration date
|
||||
NSTimeInterval expirationInterval = 72 * kHourInterval;
|
||||
NSDate *expireDate = [[NSDate new] dateByAddingTimeInterval:expirationInterval];
|
||||
|
|
Loading…
Reference in New Issue