diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index cde3e19..763e424 100755
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -49,6 +49,9 @@
+
+
+
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 4c448fb..e70d1b8 100755
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -66,6 +66,7 @@ dependencies {
implementation(libs.trixnity.client)
implementation(libs.trixnity.client.media.okio)
implementation(libs.trixnity.client.repository.room)
+ implementation(libs.trixnity.client.cryptodriver.vodozemac)
// implementation(libs.trixnity.messenger)
// Ktor - web client
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/Common.kt b/app/src/main/java/ru/risdeveau/pixeldragon/Common.kt
index c190b00..f776ec0 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/Common.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/Common.kt
@@ -6,12 +6,12 @@
package ru.risdeveau.pixeldragon
import android.util.Log
+import de.connect2x.trixnity.client.MatrixClient
import io.ktor.client.HttpClient
import io.ktor.client.plugins.cache.HttpCache
import io.ktor.client.plugins.logging.LogLevel
import io.ktor.client.plugins.logging.Logger
import io.ktor.client.plugins.logging.Logging
-import net.folivo.trixnity.client.MatrixClient
val webClient = HttpClient {
install(Logging) {
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/api/Server.kt b/app/src/main/java/ru/risdeveau/pixeldragon/api/Server.kt
index 2471da0..de16a64 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/api/Server.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/api/Server.kt
@@ -5,6 +5,7 @@
package ru.risdeveau.pixeldragon.api
+import android.util.Log
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import org.json.JSONException
@@ -14,10 +15,16 @@ import ru.risdeveau.pixeldragon.webClient
suspend fun getHomeserver(url: String): String? {
val r = try { webClient.get("https://$url/.well-known/matrix/client") }
- catch (_: Exception) { return null }
+ catch (e: Exception) {
+ Log.w("getHomeserver", "Fail sending the request", e)
+ return null
+ }
val json = try { JSONObject(r.bodyAsText()) }
- catch (_: JSONException) { return null }
+ catch (e: JSONException) {
+ Log.w("getHomeserver", "Fail parsing the JSON", e)
+ return null
+ }
if (!json.has("m.homeserver")) return null
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/api/User.kt b/app/src/main/java/ru/risdeveau/pixeldragon/api/User.kt
index 3fd3760..65e72cd 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/api/User.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/api/User.kt
@@ -6,10 +6,14 @@
package ru.risdeveau.pixeldragon.api
import android.util.Log
+import de.connect2x.trixnity.client.CryptoDriverModule
import io.ktor.http.Url
-import net.folivo.trixnity.client.MatrixClient
-import net.folivo.trixnity.client.login
-import net.folivo.trixnity.clientserverapi.model.authentication.IdentifierType
+import de.connect2x.trixnity.client.MatrixClient
+import de.connect2x.trixnity.client.create
+import de.connect2x.trixnity.client.cryptodriver.vodozemac.vodozemac
+import de.connect2x.trixnity.clientserverapi.client.MatrixClientAuthProviderData
+import de.connect2x.trixnity.clientserverapi.client.classicLogin
+import de.connect2x.trixnity.clientserverapi.model.authentication.IdentifierType
import ru.risdeveau.pixeldragon.client
import ru.risdeveau.pixeldragon.util.getMediaStore
import ru.risdeveau.pixeldragon.util.getRoomStore
@@ -24,13 +28,16 @@ suspend fun login(server: String, login: String, pass: String): Boolean {
val pinfo = appCtx.packageManager.getPackageInfo(appCtx.packageName, 0)
try {
- client = MatrixClient.login(
- baseUrl = hs,
- identifier = IdentifierType.User(login),
- password = pass,
- initialDeviceDisplayName = "PixelDragon Android v${pinfo.versionName}",
+ client = MatrixClient.create(
repositoriesModule = getRoomStore(appCtx),
- mediaStore = getMediaStore()
+ mediaStoreModule = getMediaStore(),
+ cryptoDriverModule = CryptoDriverModule.vodozemac(),
+ authProviderData = MatrixClientAuthProviderData.classicLogin(
+ baseUrl = hs,
+ identifier = IdentifierType.User(login),
+ password = pass,
+ initialDeviceDisplayName = "PixelDragon Android v${pinfo.versionName}",
+ ).getOrThrow()
).getOrThrow()
return true
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt b/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt
index b6a587e..7f39915 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt
@@ -30,12 +30,14 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
+import de.connect2x.trixnity.client.CryptoDriverModule
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
-import net.folivo.trixnity.client.MatrixClient
-import net.folivo.trixnity.client.fromStore
-import net.folivo.trixnity.clientserverapi.client.SyncState
+import de.connect2x.trixnity.client.MatrixClient
+import de.connect2x.trixnity.client.create
+import de.connect2x.trixnity.client.cryptodriver.vodozemac.vodozemac
+import de.connect2x.trixnity.clientserverapi.client.SyncState
import ru.risdeveau.pixeldragon.R
import ru.risdeveau.pixeldragon.client
import ru.risdeveau.pixeldragon.ui.layout.RoomList
@@ -111,9 +113,10 @@ class MainActivity : ComponentActivity() {
LaunchedEffect(Unit) {
if (client == null) {
- client = MatrixClient.fromStore(
- getRoomStore(appCtx),
- getMediaStore()
+ client = MatrixClient.create(
+ repositoriesModule = getRoomStore(appCtx),
+ mediaStoreModule = getMediaStore(),
+ cryptoDriverModule = CryptoDriverModule.vodozemac()
).getOrNull()
if (client == null) {
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt b/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt
index a95b8b5..5d868c8 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/ui/item/Image.kt
@@ -26,8 +26,8 @@ import androidx.compose.ui.platform.LocalContext
import coil3.compose.rememberAsyncImagePainter
import coil3.request.ImageRequest
import kotlinx.coroutines.flow.MutableStateFlow
-import net.folivo.trixnity.client.media
-import net.folivo.trixnity.clientserverapi.model.media.FileTransferProgress
+import de.connect2x.trixnity.client.media
+import de.connect2x.trixnity.clientserverapi.model.media.FileTransferProgress
import ru.risdeveau.pixeldragon.client
enum class ImageLoadState {
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/ui/layout/Rooms.kt b/app/src/main/java/ru/risdeveau/pixeldragon/ui/layout/Rooms.kt
index f61eaea..d6c3e1a 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/ui/layout/Rooms.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/ui/layout/Rooms.kt
@@ -31,11 +31,11 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
import kotlinx.coroutines.flow.map
-import net.folivo.trixnity.client.flattenValues
-import net.folivo.trixnity.client.room
-import net.folivo.trixnity.client.store.Room
-import net.folivo.trixnity.client.store.type
-import net.folivo.trixnity.core.model.events.m.room.CreateEventContent
+import de.connect2x.trixnity.client.flattenValues
+import de.connect2x.trixnity.client.room
+import de.connect2x.trixnity.client.store.Room
+import de.connect2x.trixnity.client.store.type
+import de.connect2x.trixnity.core.model.events.m.room.CreateEventContent
import ru.risdeveau.pixeldragon.client
import ru.risdeveau.pixeldragon.ui.item.MXCImage
diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/util/TrixnityStores.kt b/app/src/main/java/ru/risdeveau/pixeldragon/util/TrixnityStores.kt
index 9d67bfb..f91bc2e 100755
--- a/app/src/main/java/ru/risdeveau/pixeldragon/util/TrixnityStores.kt
+++ b/app/src/main/java/ru/risdeveau/pixeldragon/util/TrixnityStores.kt
@@ -7,21 +7,18 @@ package ru.risdeveau.pixeldragon.util
import android.content.Context
import androidx.room.Room
-import net.folivo.trixnity.client.media.okio.OkioMediaStore
-import net.folivo.trixnity.client.store.repository.room.TrixnityRoomDatabase
-import net.folivo.trixnity.client.store.repository.room.createRoomRepositoriesModule
+import de.connect2x.trixnity.client.MediaStoreModule
+import de.connect2x.trixnity.client.RepositoriesModule
+import de.connect2x.trixnity.client.media.okio.okio
+import de.connect2x.trixnity.client.store.repository.room.TrixnityRoomDatabase
+import de.connect2x.trixnity.client.store.repository.room.room
import okio.Path.Companion.toPath
-import org.koin.dsl.module
import splitties.init.appCtx
-fun getMediaStore() = OkioMediaStore(appCtx.filesDir.resolve("media").absolutePath.toPath())
-fun getRoomStore(context: Context) = module {
- includes(
- createRoomRepositoriesModule(
- Room.databaseBuilder(
- context,
- "trixnity.db"
- )
- )
+fun getMediaStore() = MediaStoreModule.okio(appCtx.filesDir.resolve("media").absolutePath.toPath())
+fun getRoomStore(context: Context) = RepositoriesModule.room(
+ databaseBuilder = Room.databaseBuilder(
+ context,
+ "trixnity.db"
)
-}
+)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index bab4b31..e341f1d 100755
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ composeBom = "2025.02.00"
navigationCompose = "2.8.8"
room = "2.6.1"
splittiesFunPackAndroidBase = "3.0.0"
-trixnityClient = "4.22.7"
+trixnityClient = "5.2.0"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@@ -47,9 +47,10 @@ ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "kto
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" }
splitties-base = { module = "com.louiscad.splitties:splitties-fun-pack-android-base", version.ref = "splittiesFunPackAndroidBase" }
-trixnity-client = { module = "net.folivo:trixnity-client", version.ref = "trixnityClient" }
-trixnity-client-media-okio = { module = "net.folivo:trixnity-client-media-okio", version.ref = "trixnityClient" }
-trixnity-client-repository-room = { module = "net.folivo:trixnity-client-repository-room", version.ref = "trixnityClient" }
+trixnity-client = { module = "de.connect2x.trixnity:trixnity-client", version.ref = "trixnityClient" }
+trixnity-client-media-okio = { module = "de.connect2x.trixnity:trixnity-client-media-okio", version.ref = "trixnityClient" }
+trixnity-client-repository-room = { module = "de.connect2x.trixnity:trixnity-client-repository-room", version.ref = "trixnityClient" }
+trixnity-client-cryptodriver-vodozemac = { module = "de.connect2x.trixnity:trixnity-client-cryptodriver-vodozemac", version.ref = "trixnityClient" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }