diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5d80ed5..97dd757 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,8 @@
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/java/dev/lonami/talaria/MainActivity.kt b/app/src/main/java/dev/lonami/talaria/MainActivity.kt
index 0bea9d9..53f8b58 100644
--- a/app/src/main/java/dev/lonami/talaria/MainActivity.kt
+++ b/app/src/main/java/dev/lonami/talaria/MainActivity.kt
@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.ui.Modifier
+import dev.lonami.talaria.bindings.Native
import dev.lonami.talaria.ui.theme.TalariaTheme
class MainActivity : ComponentActivity() {
@@ -23,5 +24,7 @@ class MainActivity : ComponentActivity() {
}
}
}
+
+ Native.initClient()
}
}
diff --git a/app/src/main/java/dev/lonami/talaria/TalariaApp.kt b/app/src/main/java/dev/lonami/talaria/TalariaApp.kt
index 262a63d..4952b7f 100644
--- a/app/src/main/java/dev/lonami/talaria/TalariaApp.kt
+++ b/app/src/main/java/dev/lonami/talaria/TalariaApp.kt
@@ -5,8 +5,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
+import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.navigation.compose.NavHost
@@ -47,6 +46,8 @@ fun TalariaApp() {
val currentScreen =
TalariaScreen.valueOf(backStackEntry?.destination?.route ?: TalariaScreen.Login.name)
+ var selectedDialog by remember { mutableStateOf("") }
+
Scaffold(
topBar = {
TalariaAppBar(
@@ -58,16 +59,17 @@ fun TalariaApp() {
) { innerPadding ->
NavHost(
navController = navController,
- startDestination = TalariaScreen.Dialog.name,
+ startDestination = TalariaScreen.Login.name,
Modifier.padding(innerPadding)
) {
composable(route = TalariaScreen.Dialog.name) {
DialogScreen(onDialogSelected = {
+ selectedDialog = it
navController.navigate(TalariaScreen.Chat.name)
})
}
composable(route = TalariaScreen.Chat.name) {
- ChatScreen()
+ ChatScreen(selectedDialog)
}
composable(route = TalariaScreen.Login.name) {
LoginScreen(onConfirmOtp = {
diff --git a/app/src/main/java/dev/lonami/talaria/bindings/Native.kt b/app/src/main/java/dev/lonami/talaria/bindings/Native.kt
new file mode 100644
index 0000000..607fdaf
--- /dev/null
+++ b/app/src/main/java/dev/lonami/talaria/bindings/Native.kt
@@ -0,0 +1,18 @@
+package dev.lonami.talaria.bindings
+
+object Native {
+ init {
+ System.loadLibrary("talaria")
+ }
+
+ external fun initClient()
+ external fun needLogin(): Boolean
+ external fun requestLoginCode(phone: String): Long
+ external fun signIn(tokenPtr: Long, code: String)
+ external fun getDialogs(): Long
+ external fun dialogCount(dialogsPtr: Long): Int
+ external fun dialogPacked(dialogsPtr: Long, index: Int): String
+ external fun dialogTitle(dialogsPtr: Long, index: Int): String
+ external fun freeDialogs(dialogsPtr: Long)
+ external fun sendMessage(packed: String, text: String)
+}
diff --git a/app/src/main/java/dev/lonami/talaria/data/DialogSource.kt b/app/src/main/java/dev/lonami/talaria/data/DialogSource.kt
index ed513c2..beb5e5f 100644
--- a/app/src/main/java/dev/lonami/talaria/data/DialogSource.kt
+++ b/app/src/main/java/dev/lonami/talaria/data/DialogSource.kt
@@ -1,20 +1,25 @@
package dev.lonami.talaria.data
+import dev.lonami.talaria.bindings.Native
import dev.lonami.talaria.model.Dialog
object DialogSource {
fun loadDialogs(): List