commit 2f01498d3a5f5332fe320cba4cc3af91d5e0ff42
parent 41c195465d0ae6d54650075531f129e2d54b14ff
Author: t3sserakt <t3sserakt@posteo.de>
Date: Mon, 14 Apr 2025 19:19:07 +0200
Added message callback.
Diffstat:
5 files changed, 110 insertions(+), 10 deletions(-)
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt
@@ -3,10 +3,8 @@ package org.gnunet.gnunetmessenger
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
-import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.NavController
-import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.NavigationUI
import androidx.appcompat.widget.Toolbar
@@ -14,6 +12,9 @@ import androidx.navigation.fragment.NavHostFragment
import org.gnunet.gnunetmessenger.model.ChatAccount
import org.gnunet.gnunetmessenger.model.ChatContext
import org.gnunet.gnunetmessenger.model.ChatHandle
+import org.gnunet.gnunetmessenger.model.ChatMessage
+import org.gnunet.gnunetmessenger.model.EventType
+import org.gnunet.gnunetmessenger.model.MessageKind
import org.gnunet.gnunetmessenger.model.MessengerApp
import org.gnunet.gnunetmessenger.service.GnunetChat
import org.gnunet.gnunetmessenger.service.ServiceFactory
@@ -36,7 +37,7 @@ class MainActivity : AppCompatActivity() {
val app = MessengerApp()
handle = gnunetChat.startChat(app) { chatContext, chatMessage ->
-
+ processChatMessage(chatContext, chatMessage)
}
// Initialize the NavController
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
@@ -57,6 +58,78 @@ class MainActivity : AppCompatActivity() {
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration)
}
+ fun processChatMessage(chatContext: ChatContext, chatMessage: ChatMessage){
+ requireNotNull(chatMessage)
+
+ /*if (chatMessage.isDeleted()) {
+ app.callMessageEvent(EventType.DELETE_MESSAGE, chatContext, chatMessage)
+ return true
+ }*/
+
+ when (chatMessage.kind) {
+ MessageKind.WARNING -> {
+ //app.callMessageEvent(EventType.HANDLE_WARNING, chatContext, chatMessage)
+ }
+ MessageKind.REFRESH -> {
+ //app.callEvent(EventType.REFRESH_ACCOUNTS)
+ }
+ MessageKind.LOGIN -> {
+ //app.callEvent(EventType.UPDATE_PROFILE)
+ }
+ MessageKind.LOGOUT -> {
+ //app.callSyncEvent(EventType.CLEANUP_PROFILE)
+ }
+ MessageKind.CREATED_ACCOUNT,
+ MessageKind.UPDATE_ACCOUNT -> {
+ //app.callMessageEvent(EventType.SELECT_PROFILE, chatContext, chatMessage)
+ }
+ MessageKind.UPDATE_CONTEXT -> {
+ //app.callMessageEvent(EventType.UPDATE_CHATS, chatContext, chatMessage)
+ }
+ MessageKind.JOIN,
+ MessageKind.LEAVE -> {
+ /*val event = if (chatMessage.isSent()) {
+ EventType.UPDATE_CHATS
+ } else {
+ EventType.PRESENCE_CONTACT
+ }*/
+ //app.callMessageEvent(event, chatContext, chatMessage)
+ }
+ MessageKind.CONTACT,
+ MessageKind.SHARED_ATTRIBUTES -> {
+ //app.callMessageEvent(EventType.UPDATE_CONTACTS, chatContext, chatMessage)
+ }
+ MessageKind.INVITATION -> {
+ //app.callMessageEvent(EventType.INVITATION, chatContext, chatMessage)
+ }
+ MessageKind.TEXT,
+ MessageKind.FILE -> {
+ //app.callMessageEvent(EventType.RECEIVE_MESSAGE, chatContext, chatMessage)
+ }
+ MessageKind.DELETION -> {
+ /*val target = chatMessage.getTarget()
+ if (target != null) {
+ //app.callMessageEvent(EventType.DELETE_MESSAGE, contchatContextext, target)
+ }*/
+ }
+ MessageKind.TAG -> {
+ //app.callMessageEvent(EventType.TAG_MESSAGE, chatContext, chatMessage)
+ }
+ MessageKind.ATTRIBUTES -> {
+ //app.callEvent(EventType.UPDATE_ATTRIBUTES)
+ }
+ MessageKind.DISCOURSE -> {
+ //app.callMessageEvent(EventType.DISCOURSE, chatContext, chatMessage)
+ }
+ MessageKind.DATA -> {
+ //app.callMessageEvent(EventType.DISCOURSE_DATA, chatContext, chatMessage)
+ }
+ else -> {
+ // Unbekannter Typ – nichts tun
+ }
+ }
+ }
+
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
val current = currentAccount
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/ChatMessage.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/ChatMessage.kt
@@ -1,5 +1,9 @@
package org.gnunet.gnunetmessenger.model
-class ChatMessage {
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
-}
+@Parcelize
+data class ChatMessage(
+ val kind: MessageKind
+): Parcelable
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/EventType.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/EventType.kt
@@ -0,0 +1,9 @@
+package org.gnunet.gnunetmessenger.model
+
+enum class EventType {
+ DELETE_MESSAGE, HANDLE_WARNING, REFRESH_ACCOUNTS,
+ UPDATE_PROFILE, CLEANUP_PROFILE, SELECT_PROFILE,
+ UPDATE_CHATS, PRESENCE_CONTACT, UPDATE_CONTACTS,
+ INVITATION, RECEIVE_MESSAGE, TAG_MESSAGE,
+ UPDATE_ATTRIBUTES, DISCOURSE, DISCOURSE_DATA
+}
+\ No newline at end of file
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/MessageKind.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/model/MessageKind.kt
@@ -0,0 +1,11 @@
+package org.gnunet.gnunetmessenger.model
+
+enum class MessageKind {
+ WARNING, REFRESH, LOGIN, LOGOUT,
+ CREATED_ACCOUNT, UPDATE_ACCOUNT,
+ UPDATE_CONTEXT, JOIN, LEAVE,
+ CONTACT, SHARED_ATTRIBUTES,
+ INVITATION, TEXT, FILE,
+ DELETION, TAG, ATTRIBUTES,
+ DISCOURSE, DATA
+}
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/CreateAccountFragment.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/CreateAccountFragment.kt
@@ -79,11 +79,13 @@ class CreateAccountFragment : Fragment() {
gnunetChat.iterateAccounts(handle) { account ->
if (account.name == accountName) {
gnunetChat.connect(handle, account)
- val action =
- CreateAccountFragmentDirections.actionCreateAccountFragmentToAccountOverviewFragment(
- account = account
- )
- findNavController().navigate(action)
+ requireActivity().runOnUiThread {
+ val action =
+ CreateAccountFragmentDirections.actionCreateAccountFragmentToAccountOverviewFragment(
+ account = account
+ )
+ findNavController().navigate(action)
+ }
}
}