Fix group leaving bug
This commit is contained in:
parent
700fb185f6
commit
c26e5dcba8
|
@ -34,6 +34,7 @@
|
|||
#import <SessionServiceKit/TSThread.h>
|
||||
|
||||
@import ContactsUI;
|
||||
@import PromiseKit;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
@ -1176,13 +1177,21 @@ const CGFloat kIconViewLength = 24;
|
|||
- (void)leaveGroup
|
||||
{
|
||||
TSGroupThread *gThread = (TSGroupThread *)self.thread;
|
||||
TSOutgoingMessage *message =
|
||||
[TSOutgoingMessage outgoingMessageInThread:gThread groupMetaMessage:TSGroupMetaMessageQuit expiresInSeconds:0];
|
||||
|
||||
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
[self.messageSenderJobQueue addMessage:message transaction:transaction];
|
||||
[gThread leaveGroupWithTransaction:transaction];
|
||||
} error:nil];
|
||||
if (gThread.usesSharedSenderKeys) {
|
||||
NSString *groupPublicKey = [LKGroupUtilities getDecodedGroupID:gThread.groupModel.groupId];
|
||||
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
[[LKClosedGroupsProtocol leaveGroupWithPublicKey:groupPublicKey transaction:transaction] retainUntilComplete];
|
||||
} error:nil];
|
||||
} else {
|
||||
TSOutgoingMessage *message =
|
||||
[TSOutgoingMessage outgoingMessageInThread:gThread groupMetaMessage:TSGroupMetaMessageQuit expiresInSeconds:0];
|
||||
|
||||
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
[self.messageSenderJobQueue addMessage:message transaction:transaction];
|
||||
[gThread leaveGroupWithTransaction:transaction];
|
||||
} error:nil];
|
||||
}
|
||||
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
|
|
|
@ -128,6 +128,11 @@ public final class ClosedGroupsProtocol : NSObject {
|
|||
infoMessage.save(with: transaction)
|
||||
}
|
||||
|
||||
@objc(leaveGroupWithPublicKey:transaction:)
|
||||
public static func objc_leave(_ groupPublicKey: String, using transaction: YapDatabaseReadWriteTransaction) -> AnyPromise {
|
||||
return AnyPromise.from(leave(groupPublicKey, using: transaction))
|
||||
}
|
||||
|
||||
public static func leave(_ groupPublicKey: String, using transaction: YapDatabaseReadWriteTransaction) -> Promise<Void> {
|
||||
let userPublicKey = UserDefaults.standard[.masterHexEncodedPublicKey] ?? getUserHexEncodedPublicKey()
|
||||
return removeMembers([ userPublicKey ], from: groupPublicKey, using: transaction)
|
||||
|
|
Loading…
Reference in New Issue