Merge branch 'mkirk/fix-session-reset'
This commit is contained in:
commit
e8056fcbb2
|
@ -1,5 +1,6 @@
|
|||
// Created by Michael Kirk on 10/31/16.
|
||||
// Copyright © 2016 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import PromiseKit
|
||||
|
@ -24,32 +25,33 @@ class SessionResetJob: NSObject {
|
|||
func run() {
|
||||
Logger.info("\(TAG) Local user reset session.")
|
||||
|
||||
let endSessionMessage = EndSessionMessage(timestamp:NSDate.ows_millisecondTimeStamp(), in: thread)
|
||||
self.messageSender.send(endSessionMessage, success: {
|
||||
Logger.info("\(self.TAG) successfully sent EndSession<essage.")
|
||||
|
||||
Logger.info("\(self.TAG) deleting sessions for recipient: \(self.recipientId)")
|
||||
OWSDispatch.sessionStoreQueue().async {
|
||||
self.storageManager.deleteAllSessions(forContact: self.recipientId)
|
||||
|
||||
let message = TSInfoMessage(timestamp: NSDate.ows_millisecondTimeStamp(),
|
||||
in: self.thread,
|
||||
messageType: TSInfoMessageType.typeSessionDidEnd)
|
||||
message.save()
|
||||
}, failure: {error in
|
||||
Logger.error("\(self.TAG) failed to send EndSesionMessage with error: \(error.localizedDescription)")
|
||||
});
|
||||
DispatchQueue.main.async {
|
||||
let endSessionMessage = EndSessionMessage(timestamp:NSDate.ows_millisecondTimeStamp(), in: self.thread)
|
||||
|
||||
self.messageSender.send(endSessionMessage, success: {
|
||||
Logger.info("\(self.TAG) successfully sent EndSession<essage.")
|
||||
|
||||
Logger.info("\(self.TAG) deleting sessions for recipient: \(self.recipientId)")
|
||||
|
||||
let message = TSInfoMessage(timestamp: NSDate.ows_millisecondTimeStamp(),
|
||||
in: self.thread,
|
||||
messageType: TSInfoMessageType.typeSessionDidEnd)
|
||||
message.save()
|
||||
}, failure: {error in
|
||||
Logger.error("\(self.TAG) failed to send EndSesionMessage with error: \(error.localizedDescription)")
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class func run(corruptedMessage: TSErrorMessage, contactThread: TSContactThread, messageSender: MessageSender, storageManager: TSStorageManager) {
|
||||
class func run(contactThread: TSContactThread, messageSender: MessageSender, storageManager: TSStorageManager) {
|
||||
let job = self.init(recipientId: contactThread.contactIdentifier(),
|
||||
thread: contactThread,
|
||||
messageSender: messageSender,
|
||||
storageManager: storageManager)
|
||||
job.run()
|
||||
}
|
||||
|
||||
class func run(recipientId: String, thread: TSThread, messageSender: MessageSender, storageManager: TSStorageManager) {
|
||||
let job = self.init(recipientId: recipientId, thread: thread, messageSender: messageSender, storageManager: storageManager)
|
||||
job.run()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,17 +77,34 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[[TSStorageManager sharedManager] printAllSessions];
|
||||
});
|
||||
}],
|
||||
[OWSTableItem itemWithTitle:@"Delete session (Contact Thread Only)"
|
||||
actionBlock:^{
|
||||
if (![thread isKindOfClass:[TSContactThread class]]) {
|
||||
DDLogError(@"Trying to delete session for group thread.");
|
||||
OWSAssert(NO);
|
||||
}
|
||||
dispatch_async([OWSDispatch sessionStoreQueue], ^{
|
||||
[[TSStorageManager sharedManager]
|
||||
deleteAllSessionsForContact:thread.contactIdentifier];
|
||||
});
|
||||
}],
|
||||
[OWSTableItem
|
||||
itemWithTitle:@"Delete session (Contact Thread Only)"
|
||||
actionBlock:^{
|
||||
if (![thread isKindOfClass:[TSContactThread class]]) {
|
||||
DDLogError(@"Refusing to delete session for group thread.");
|
||||
OWSAssert(NO);
|
||||
return;
|
||||
}
|
||||
TSContactThread *contactThread = (TSContactThread *)thread;
|
||||
dispatch_async([OWSDispatch sessionStoreQueue], ^{
|
||||
[[TSStorageManager sharedManager]
|
||||
deleteAllSessionsForContact:contactThread.contactIdentifier];
|
||||
});
|
||||
}],
|
||||
[OWSTableItem
|
||||
itemWithTitle:@"Send session reset (Contact Thread Only)"
|
||||
actionBlock:^{
|
||||
if (![thread isKindOfClass:[TSContactThread class]]) {
|
||||
DDLogError(@"Refusing to reset session for group thread.");
|
||||
OWSAssert(NO);
|
||||
return;
|
||||
}
|
||||
TSContactThread *contactThread = (TSContactThread *)thread;
|
||||
[OWSSessionResetJob
|
||||
runWithContactThread:contactThread
|
||||
messageSender:[Environment getCurrent].messageSender
|
||||
storageManager:[TSStorageManager sharedManager]];
|
||||
}]
|
||||
|
||||
]]];
|
||||
|
||||
|
|
|
@ -2002,10 +2002,10 @@ typedef enum : NSUInteger {
|
|||
return;
|
||||
}
|
||||
TSContactThread *contactThread = (TSContactThread *)self.thread;
|
||||
[OWSSessionResetJob runWithCorruptedMessage:message
|
||||
contactThread:contactThread
|
||||
messageSender:self.messageSender
|
||||
storageManager:self.storageManager];
|
||||
[OWSSessionResetJob
|
||||
runWithContactThread:contactThread
|
||||
messageSender:self.messageSender
|
||||
storageManager:self.storageManager];
|
||||
}];
|
||||
[alertController addAction:resetSessionAction];
|
||||
|
||||
|
|
Loading…
Reference in New Issue