diff --git a/app/build.gradle b/app/build.gradle index 450bd42b..2f2586cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ android { compose true } composeOptions { - kotlinCompilerExtensionVersion '1.3.2' + kotlinCompilerExtensionVersion '1.4.0' } packagingOptions { resources { @@ -48,27 +48,28 @@ android { dependencies { implementation 'androidx.core:core-ktx:1.9.0' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.0-alpha04' implementation 'androidx.activity:activity-compose:1.6.1' implementation "androidx.compose.ui:ui:$compose_ui_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_ui_version" - implementation 'androidx.compose.material:material:1.3.1' // Navigation implementation("androidx.navigation:navigation-compose:$nav_version") - implementation 'androidx.lifecycle:lifecycle-runtime-compose:2.6.0-alpha05' - implementation 'androidx.compose.runtime:runtime-livedata:1.4.0-alpha04' - implementation "androidx.compose.material:material-icons-extended:1.3.1" - // Input + // Observe Live data as State + implementation 'androidx.compose.runtime:runtime-livedata:1.4.0-alpha04' + + implementation 'androidx.compose.material:material:1.4.0-alpha05' + implementation "androidx.compose.material:material-icons-extended:1.4.0-alpha05" + + // Lifecycle + implementation 'androidx.lifecycle:lifecycle-runtime-compose:2.6.0-alpha05' implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.6.0-alpha05' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.0-alpha05' + implementation 'androidx.lifecycle:lifecycle-livedata:2.6.0-alpha05' // Swipe Refresh implementation 'com.google.accompanist:accompanist-swiperefresh:0.29.0-alpha' - // Load images from the web. - implementation "io.coil-kt:coil-compose:2.2.2" - // Bitcoin secp256k1 bindings to Android implementation 'fr.acinq.secp256k1:secp256k1-kmp-jni-android:0.7.1' @@ -86,24 +87,25 @@ dependencies { // Json Serialization implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.14.1' - // Rendering clickable text - implementation "com.google.accompanist:accompanist-flowlayout:0.28.0" - // link preview implementation 'tw.com.oneup.www:Baha-UrlPreview:1.0.1' implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha04' - // upload pictures: - implementation "com.google.accompanist:accompanist-permissions:0.28.0" - // view videos implementation 'com.google.android.exoplayer:exoplayer:2.18.2' + // Load images from the web. + implementation "io.coil-kt:coil-compose:2.2.2" // view gifs implementation "io.coil-kt:coil-gif:2.2.2" // view svgs implementation("io.coil-kt:coil-svg:2.2.2") + // Rendering clickable text + implementation "com.google.accompanist:accompanist-flowlayout:$accompanist_version" + // Permission to upload pictures: + implementation "com.google.accompanist:accompanist-permissions:$accompanist_version" + // tabs for user profiles implementation "com.google.accompanist:accompanist-pager:$accompanist_version" // Pager implementation "com.google.accompanist:accompanist-pager-indicators:$accompanist_version" diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomFeedView.kt index 6e85ae92..c59f06e1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ChatroomFeedView.kt @@ -13,7 +13,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.compose.runtime.collectAsState import androidx.navigation.NavController import com.google.accompanist.swiperefresh.SwipeRefresh import com.google.accompanist.swiperefresh.rememberSwipeRefreshState @@ -22,7 +22,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @Composable fun ChatroomFeedView(viewModel: FeedViewModel, accountViewModel: AccountViewModel, navController: NavController) { - val feedState by viewModel.feedContent.collectAsStateWithLifecycle() + val feedState by viewModel.feedContent.collectAsState() var isRefreshing by remember { mutableStateOf(false) } val swipeRefreshState = rememberSwipeRefreshState(isRefreshing) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt index 2b71ef79..ef0855f2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt @@ -1,6 +1,7 @@ package com.vitorpamplona.amethyst.ui.screen import android.util.Log +import androidx.compose.runtime.remember import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.vitorpamplona.amethyst.model.LocalCache diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RelayPoolViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RelayPoolViewModel.kt index 799b259f..98a534b8 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RelayPoolViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RelayPoolViewModel.kt @@ -1,15 +1,15 @@ package com.vitorpamplona.amethyst.ui.screen import androidx.lifecycle.LiveData -import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel +import androidx.lifecycle.map import com.vitorpamplona.amethyst.service.relays.RelayPool class RelayPoolViewModel: ViewModel() { - val connectedRelaysLiveData: LiveData = Transformations.map(RelayPool.live) { + val connectedRelaysLiveData: LiveData = RelayPool.live.map { it.relays.connectedRelays() } - val availableRelaysLiveData: LiveData = Transformations.map(RelayPool.live) { + val availableRelaysLiveData: LiveData = RelayPool.live.map { it.relays.availableRelays() } } \ No newline at end of file diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt index 08b4a592..7008662d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.compose.runtime.collectAsState import androidx.navigation.NavController import coil.compose.AsyncImage import coil.compose.rememberAsyncImagePainter @@ -47,7 +47,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @Composable fun ThreadFeedView(noteId: String, viewModel: FeedViewModel, accountViewModel: AccountViewModel, navController: NavController) { - val feedState by viewModel.feedContent.collectAsStateWithLifecycle() + val feedState by viewModel.feedContent.collectAsState() var isRefreshing by remember { mutableStateOf(false) } val swipeRefreshState = rememberSwipeRefreshState(isRefreshing) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt index 02655dc7..84e77f73 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt @@ -2,17 +2,16 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn import android.content.Context import androidx.lifecycle.LiveData -import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel +import androidx.lifecycle.map import com.vitorpamplona.amethyst.LocalPreferences import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.AccountState import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.amethyst.model.UserState class AccountViewModel(private val account: Account): ViewModel() { - val accountLiveData: LiveData = Transformations.map(account.live) { it } + val accountLiveData: LiveData = account.live.map { it } fun reactTo(note: Note) { account.reactTo(note) diff --git a/build.gradle b/build.gradle index 89946fa3..fe82bb4f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,14 @@ buildscript { ext { - compose_ui_version = '1.3.3' + compose_ui_version = '1.4.0-alpha05' nav_version = "2.5.3" room_version = "2.4.3" accompanist_version = "0.28.0" } }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.3.1' apply false - id 'com.android.library' version '7.3.1' apply false - id 'org.jetbrains.kotlin.android' version '1.6.10' apply false - id 'org.jetbrains.kotlin.jvm' version '1.7.20' apply false + id 'com.android.application' version '7.4.0' apply false + id 'com.android.library' version '7.4.0' apply false + id 'org.jetbrains.kotlin.android' version '1.8.0' apply false + id 'org.jetbrains.kotlin.jvm' version '1.8.0' apply false } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 898b49ae..c1070955 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Jan 04 09:23:50 EST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME