mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			102 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			102 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Swift
		
	
import PromiseKit
 | 
						|
import Sodium
 | 
						|
import SessionSnodeKit
 | 
						|
 | 
						|
public protocol SessionMessagingKitStorageProtocol {
 | 
						|
 | 
						|
    // MARK: - Shared
 | 
						|
 | 
						|
    @discardableResult
 | 
						|
    func write(with block: @escaping (Any) -> Void) -> Promise<Void>
 | 
						|
    @discardableResult
 | 
						|
    func write(with block: @escaping (Any) -> Void, completion: @escaping () -> Void) -> Promise<Void>
 | 
						|
    func writeSync(with block: @escaping (Any) -> Void)
 | 
						|
 | 
						|
    // MARK: - General
 | 
						|
 | 
						|
    func getUserPublicKey() -> String?
 | 
						|
    func getUserKeyPair() -> ECKeyPair?
 | 
						|
    func getUserED25519KeyPair() -> Box.KeyPair?
 | 
						|
    func getUser() -> Contact?
 | 
						|
    func getUser(using transaction: YapDatabaseReadTransaction?) -> Contact?
 | 
						|
    func getAllContacts() -> Set<Contact>
 | 
						|
    func getAllContacts(with transaction: YapDatabaseReadTransaction) -> Set<Contact>
 | 
						|
 | 
						|
    // MARK: - Closed Groups
 | 
						|
 | 
						|
    func getUserClosedGroupPublicKeys() -> Set<String>
 | 
						|
    func getUserClosedGroupPublicKeys(using transaction: YapDatabaseReadTransaction) -> Set<String>
 | 
						|
    func getZombieMembers(for groupPublicKey: String) -> Set<String>
 | 
						|
    func setZombieMembers(for groupPublicKey: String, to zombies: Set<String>, using transaction: Any)
 | 
						|
    func isClosedGroup(_ publicKey: String) -> Bool
 | 
						|
    func isClosedGroup(_ publicKey: String, using transaction: YapDatabaseReadTransaction) -> Bool
 | 
						|
 | 
						|
    // MARK: - Jobs
 | 
						|
 | 
						|
    func persist(_ job: Job, using transaction: Any)
 | 
						|
    func markJobAsSucceeded(_ job: Job, using transaction: Any)
 | 
						|
    func markJobAsFailed(_ job: Job, using transaction: Any)
 | 
						|
    func getAllPendingJobs(of type: Job.Type) -> [Job]
 | 
						|
    func getAttachmentUploadJob(for attachmentID: String) -> AttachmentUploadJob?
 | 
						|
    func getMessageSendJob(for messageSendJobID: String) -> MessageSendJob?
 | 
						|
    func resumeMessageSendJobIfNeeded(_ messageSendJobID: String)
 | 
						|
    func isJobCanceled(_ job: Job) -> Bool
 | 
						|
 | 
						|
    // MARK: - Authorization
 | 
						|
 | 
						|
    func getAuthToken(for room: String, on server: String) -> String?
 | 
						|
    func setAuthToken(for room: String, on server: String, to newValue: String, using transaction: Any)
 | 
						|
    func removeAuthToken(for room: String, on server: String, using transaction: Any)
 | 
						|
 | 
						|
    // MARK: - Open Groups
 | 
						|
 | 
						|
    func getAllV2OpenGroups() -> [String:OpenGroupV2]
 | 
						|
    func getV2OpenGroup(for threadID: String) -> OpenGroupV2?
 | 
						|
    func v2GetThreadID(for v2OpenGroupID: String) -> String?
 | 
						|
    
 | 
						|
    // MARK: - Open Group Public Keys
 | 
						|
 | 
						|
    func getOpenGroupPublicKey(for server: String) -> String?
 | 
						|
    func setOpenGroupPublicKey(for server: String, to newValue: String, using transaction: Any)
 | 
						|
 | 
						|
    // MARK: - Last Message Server ID
 | 
						|
 | 
						|
    func getLastMessageServerID(for room: String, on server: String) -> Int64?
 | 
						|
    func setLastMessageServerID(for room: String, on server: String, to newValue: Int64, using transaction: Any)
 | 
						|
    func removeLastMessageServerID(for room: String, on server: String, using transaction: Any)
 | 
						|
 | 
						|
    // MARK: - Last Deletion Server ID
 | 
						|
 | 
						|
    func getLastDeletionServerID(for room: String, on server: String) -> Int64?
 | 
						|
    func setLastDeletionServerID(for room: String, on server: String, to newValue: Int64, using transaction: Any)
 | 
						|
    func removeLastDeletionServerID(for room: String, on server: String, using transaction: Any)
 | 
						|
    
 | 
						|
    // MARK: - OpenGroupServerIdToUniqueIdLookup
 | 
						|
 | 
						|
    func getOpenGroupServerIdLookup(_ serverId: UInt64, in room: String, on server: String, using transaction: YapDatabaseReadTransaction) -> OpenGroupServerIdLookup?
 | 
						|
    func addOpenGroupServerIdLookup(_ serverId: UInt64?, tsMessageId: String?, in room: String, on server: String, using transaction: YapDatabaseReadWriteTransaction)
 | 
						|
    func addOpenGroupServerIdLookup(_ lookup: OpenGroupServerIdLookup, using transaction: YapDatabaseReadWriteTransaction)
 | 
						|
    func removeOpenGroupServerIdLookup(_ serverId: UInt64, in room: String, on server: String, using transaction: YapDatabaseReadWriteTransaction)
 | 
						|
 | 
						|
    // MARK: - Open Group Metadata
 | 
						|
 | 
						|
    func setUserCount(to newValue: UInt64, forV2OpenGroupWithID openGroupID: String, using transaction: Any)
 | 
						|
 | 
						|
    // MARK: - Message Handling
 | 
						|
 | 
						|
    func getReceivedMessageTimestamps(using transaction: Any) -> [UInt64]
 | 
						|
    func addReceivedMessageTimestamp(_ timestamp: UInt64, using transaction: Any)
 | 
						|
    /// Returns the ID of the thread.
 | 
						|
    func getOrCreateThread(for publicKey: String, groupPublicKey: String?, openGroupID: String?, using transaction: Any) -> String?
 | 
						|
    /// Returns the ID of the `TSIncomingMessage` that was constructed.
 | 
						|
    func persist(_ message: VisibleMessage, quotedMessage: TSQuotedMessage?, linkPreview: OWSLinkPreview?, groupPublicKey: String?, openGroupID: String?, using transaction: Any) -> String?
 | 
						|
    /// Returns the IDs of the saved attachments.
 | 
						|
    func persist(_ attachments: [VisibleMessage.Attachment], using transaction: Any) -> [String]
 | 
						|
    /// Also touches the associated message.
 | 
						|
    func setAttachmentState(to state: TSAttachmentPointerState, for pointer: TSAttachmentPointer, associatedWith tsIncomingMessageID: String, using transaction: Any)
 | 
						|
    /// Also touches the associated message.
 | 
						|
    func persist(_ stream: TSAttachmentStream, associatedWith tsIncomingMessageID: String, using transaction: Any)
 | 
						|
}
 | 
						|
 | 
						|
extension Storage: SessionMessagingKitStorageProtocol, SessionSnodeKitStorageProtocol {}
 |