messenger-android

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

commit 09b5314c83b7dedd4bc6c4222cf49635d7b41d27
parent 5062582e46254a83da45bd85a29a7efc248c2f6f
Author: t3sserakt <t3ss@posteo.de>
Date:   Tue, 24 Mar 2026 14:33:49 +0100

feat: stop chat implementation

Diffstat:
MGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt | 15+++++++++++++++
MGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/GnunetChat.kt | 1+
MGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/boundimpl/GnunetChatBoundService.kt | 6++++++
3 files changed, 22 insertions(+), 0 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 @@ -128,6 +128,21 @@ class MainActivity : AppCompatActivity() { NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration) } + override fun onStop() { + super.onStop() + + lifecycleScope.launch { + try { + if (::handle.isInitialized && handle.pointer != 0L) { + Log.i(TAG, "Stopping chat session on onStop") + gnunetChat.stopChat(handle) + } + } catch (t: Throwable) { + Log.e(TAG, "Failed to stop chat session in onStop", t) + } + } + } + private suspend fun awaitHandlePointerReady(): ChatHandle { while (lifecycleScope.coroutineContext.isActive && handle.pointer == 0L) { delay(CHAT_READY_POLL_MS) diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/GnunetChat.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/GnunetChat.kt @@ -27,6 +27,7 @@ interface GnunetChat { suspend fun createAccount(handle: ChatHandle, name: String): GnunetReturnValue suspend fun connect(handle: ChatHandle, account: ChatAccount) suspend fun disconnect(handle: ChatHandle) + suspend fun stopChat(handle: ChatHandle) suspend fun getProfileName(handle: ChatHandle): String suspend fun setProfileName(handle: ChatHandle, name: String) diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/boundimpl/GnunetChatBoundService.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/boundimpl/GnunetChatBoundService.kt @@ -372,6 +372,12 @@ class GnunetChatBoundService( } } + override suspend fun stopChat(handle: ChatHandle) { + withReadyRemote(handle) { remote, h -> + withContext(Dispatchers.IO) { remote.stopChat(h) } + } + } + override suspend fun getProfileName(handle: ChatHandle): String { return withReadyRemote(handle) { remote, h -> withContext(Dispatchers.IO) { remote.getProfileName(h) ?: "" }