messenger-android

Android graphical user interfaces for GNUnet Messenger
Log | Files | Refs | README | LICENSE

GnunetChat.kt (4160B)


      1 package org.gnunet.gnunetmessenger.service
      2 
      3 import org.gnunet.gnunetmessenger.model.ChatAccount
      4 import org.gnunet.gnunetmessenger.model.ChatContact
      5 import org.gnunet.gnunetmessenger.model.ChatContext
      6 import org.gnunet.gnunetmessenger.model.ChatGroup
      7 import org.gnunet.gnunetmessenger.model.ChatHandle
      8 import org.gnunet.gnunetmessenger.model.ChatMessage
      9 import org.gnunet.gnunetmessenger.model.ChatUri
     10 import org.gnunet.gnunetmessenger.model.GnunetReturnValue
     11 import org.gnunet.gnunetmessenger.model.MessageKind
     12 import org.gnunet.gnunetmessenger.model.MessengerApp
     13 
     14 interface GnunetChat {
     15     fun startChat(
     16         messengerApp: MessengerApp,
     17         callback: (ChatContext, ChatMessage) -> Unit
     18     ): ChatHandle
     19 
     20     suspend fun awaitReady(handle: ChatHandle)
     21 
     22     suspend fun reset()
     23 
     24     fun iterateAccounts(handle: ChatHandle, callback: (ChatAccount) -> Unit)
     25     suspend fun listAccounts(handle: ChatHandle): List<ChatAccount>
     26 
     27     suspend fun createAccount(handle: ChatHandle, name: String): GnunetReturnValue
     28     suspend fun connect(handle: ChatHandle, account: ChatAccount)
     29     suspend fun disconnect(handle: ChatHandle)
     30     suspend fun stopChat(handle: ChatHandle)
     31     suspend fun getProfileName(handle: ChatHandle): String
     32     suspend fun setProfileName(handle: ChatHandle, name: String)
     33 
     34     fun getProfileKey(handle: ChatHandle): String
     35     fun isContactBlocked(contact: ChatContact): Boolean
     36     fun setContactBlocked(contact: ChatContact, isBlocked: Boolean)
     37     fun setAttribute(handle: ChatHandle, key: String, value: String)
     38     fun getAttributes(handle: ChatHandle, callback: (String, String) -> Unit)
     39 
     40     fun lobbyOpen(handle: ChatHandle, callback: (String) -> Unit)
     41     suspend fun lobbyJoin(handle: ChatHandle, uri: String)
     42 
     43     fun setGroupName(group: ChatGroup, name: String)
     44     fun createGroup(handle: ChatHandle, topic: String): ChatGroup
     45 
     46     fun parseUri(uri: String): ChatUri
     47     fun destroyUri(uri: ChatUri)
     48 
     49     fun inviteContactToGroup(group: ChatGroup, contact: ChatContact)
     50     fun getUserPointerForContext(context: ChatContext): String?
     51     fun setUserPointerForContext(context: ChatContext, userPointer: String)
     52 
     53     fun getSenderFromMessage(message: ChatMessage): ChatContact
     54     fun getGroupFromContext(context: ChatContext): ChatGroup?
     55     fun getMessageForGroupContact(group: ChatGroup, contact: ChatContact): ChatMessage
     56     fun getMessageKind(message: ChatMessage): MessageKind
     57     fun isMessageRecent(message: ChatMessage): GnunetReturnValue
     58     fun getMessageTimestamp(message: ChatMessage): Long
     59     fun setMessageForGroupContact(group: ChatGroup, contact: ChatContact, message: ChatMessage)
     60 
     61     fun iterateContacts(handle: ChatHandle, callback: (ChatContact) -> Int)
     62     fun iterateGroups(handle: ChatHandle, callback: (ChatGroup) -> Int)
     63     suspend fun listContacts(handle: ChatHandle): List<ChatContact>
     64     suspend fun listGroups(handle: ChatHandle): List<ChatGroup>
     65 
     66     fun getContactContext(chatContact: ChatContact): ChatContext
     67     fun getGroupContext(chatGroup: ChatGroup): ChatContext
     68     fun getContactUserPointer(chatContact: ChatContact): String
     69     fun setContactUserPointer(chatContact: ChatContact, userPointer: String)
     70     fun getGroupUserPointer(chatGroup: ChatGroup): String
     71     fun setGroupUserPointer(chatGroup: ChatGroup, userPointer: String)
     72 
     73     fun sendText(chatContext: ChatContext, text: String)
     74     fun getContactKey(chatContact: ChatContact): String
     75     fun getContextContact(context: ChatContext): ChatContact
     76     fun deleteContact(chatContact: ChatContact)
     77     fun isGroup(context: ChatContext): Boolean
     78     fun isPlatform(context: ChatContext): Boolean
     79 
     80     fun iterateGroupContacts(chatGroup: ChatGroup, callback: (ChatGroup, ChatContact) -> Int)
     81     suspend fun listGroupContacts(group: ChatGroup): List<ChatContact>
     82 
     83     fun randomUUID(): String
     84     fun getContactAttributes(contact: ChatContact, callback: (String, String) -> Unit)
     85     fun shareAttributes(handle: ChatHandle, contact: ChatContact, key: String)
     86     fun unshareAttributes(handle: ChatHandle, contact: ChatContact, key: String)
     87 
     88     suspend fun iterateContextMessages(context: ChatContext): List<ChatMessage>
     89 }