session-android/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt

119 lines
4.8 KiB
Kotlin
Raw Normal View History

2020-12-02 06:38:30 +01:00
package org.session.libsession.messaging
import org.session.libsession.messaging.jobs.AttachmentUploadJob
import org.session.libsession.messaging.jobs.Job
import org.session.libsession.messaging.jobs.MessageSendJob
2020-12-18 06:43:19 +01:00
import org.session.libsession.messaging.messages.Message
import org.session.libsession.messaging.messages.visible.Attachment
2020-12-02 06:38:30 +01:00
import org.session.libsession.messaging.opengroups.OpenGroup
2020-12-10 05:30:32 +01:00
import org.session.libsession.messaging.threads.Address
import org.session.libsession.messaging.threads.GroupRecord
2021-01-08 01:11:50 +01:00
import org.session.libsession.messaging.threads.recipients.Recipient.RecipientSettings
2020-12-02 06:38:30 +01:00
import org.session.libsignal.libsignal.ecc.ECKeyPair
import org.session.libsignal.libsignal.ecc.ECPrivateKey
2020-12-10 05:30:32 +01:00
import org.session.libsignal.service.api.messages.SignalServiceAttachmentPointer
2020-12-18 06:43:19 +01:00
import java.security.PublicKey
2020-12-02 06:38:30 +01:00
interface StorageProtocol {
// General
fun getUserPublicKey(): String?
fun getUserKeyPair(): ECKeyPair?
fun getUserDisplayName(): String?
fun getUserProfileKey(): ByteArray?
fun getUserProfilePictureURL(): String?
fun getProfileKeyForRecipient(recipientPublicKey: String): ByteArray?
// Signal Protocol
2020-12-10 05:30:32 +01:00
fun getOrGenerateRegistrationID(): Int
2020-12-02 06:38:30 +01:00
// Shared Sender Keys
fun getClosedGroupPrivateKey(publicKey: String): ECPrivateKey?
fun isClosedGroup(publicKey: String): Boolean
// Jobs
fun persist(job: Job)
fun markJobAsSucceeded(job: Job)
fun markJobAsFailed(job: Job)
fun getAllPendingJobs(type: String): List<Job>
2020-12-15 05:45:44 +01:00
fun getAttachmentUploadJob(attachmentID: Long): AttachmentUploadJob?
2020-12-02 06:38:30 +01:00
fun getMessageSendJob(messageSendJobID: String): MessageSendJob?
fun resumeMessageSendJobIfNeeded(messageSendJobID: String)
fun isJobCanceled(job: Job): Boolean
// Authorization
fun getAuthToken(server: String): String?
fun setAuthToken(server: String, newValue: String?)
fun removeAuthToken(server: String)
// Open Groups
fun getOpenGroup(threadID: String): OpenGroup?
fun getThreadID(openGroupID: String): String?
// Open Group Public Keys
fun getOpenGroupPublicKey(server: String): String?
fun setOpenGroupPublicKey(server: String, newValue: String)
2020-12-18 06:43:19 +01:00
// Open Group User Info
fun setOpenGroupDisplayName(publicKey: String, channel: Long, server: String, displayName: String)
fun getOpenGroupDisplayName(publicKey: String, channel: Long, server: String): String?
2020-12-02 06:38:30 +01:00
// Last Message Server ID
fun getLastMessageServerID(group: Long, server: String): Long?
fun setLastMessageServerID(group: Long, server: String, newValue: Long)
fun removeLastMessageServerID(group: Long, server: String)
// Last Deletion Server ID
fun getLastDeletionServerID(group: Long, server: String): Long?
fun setLastDeletionServerID(group: Long, server: String, newValue: Long)
fun removeLastDeletionServerID(group: Long, server: String)
// Open Group Metadata
fun setUserCount(group: Long, server: String, newValue: Int)
fun setOpenGroupProfilePictureURL(group: Long, server: String, newValue: String)
fun getOpenGroupProfilePictureURL(group: Long, server: String): String?
fun updateTitle(groupID: String, newValue: String)
fun updateProfilePicture(groupID: String, newValue: ByteArray)
// Message Handling
fun getReceivedMessageTimestamps(): Set<Long>
fun addReceivedMessageTimestamp(timestamp: Long)
2020-12-18 06:43:19 +01:00
// Returns the IDs of the saved attachments.
2020-12-18 06:59:37 +01:00
fun persist(attachments: List<Attachment>): List<Long>
2020-12-18 06:43:19 +01:00
fun insertMessageOutbox(message: Message)
fun insertMessageInbox(message: Message)
fun setErrorMessage(message: Message, error: Exception)
2020-12-10 05:30:32 +01:00
// Closed Groups
fun getGroup(groupID: String): GroupRecord?
fun createGroup(groupId: String, title: String?, members: List<Address>, avatar: SignalServiceAttachmentPointer?, relay: String?, admins: List<Address>)
fun setActive(groupID: String, value: Boolean)
fun removeMember(groupID: String, member: Address)
fun updateMembers(groupID: String, members: List<Address>)
2020-12-02 06:38:30 +01:00
2020-12-10 05:30:32 +01:00
// Settings
fun setProfileSharing(address: Address, value: Boolean)
// Thread
fun getOrCreateThreadIdFor(address: Address): String
2020-12-18 06:43:19 +01:00
fun getOrCreateThreadIdFor(publicKey: String, groupPublicKey: String?, openGroupID: String?): String?
2020-12-10 05:30:32 +01:00
fun getThreadIdFor(address: Address): String?
2020-12-02 06:38:30 +01:00
2020-12-18 06:43:19 +01:00
// Session Request
2020-12-02 06:38:30 +01:00
fun getSessionRequestSentTimestamp(publicKey: String): Long?
fun setSessionRequestSentTimestamp(publicKey: String, newValue: Long)
fun getSessionRequestProcessedTimestamp(publicKey: String): Long?
fun setSessionRequestProcessedTimestamp(publicKey: String, newValue: Long)
2021-01-08 01:11:50 +01:00
// Loki User
fun getDisplayName(publicKey: String): String?
fun getServerDisplayName(serverID: String, publicKey: String): String?
fun getProfilePictureURL(publicKey: String): String?
//Recipient
fun getRecipientSettings(address: Address): RecipientSettings?
2020-12-02 06:38:30 +01:00
}