mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-10-10 01:12:32 +02:00
Turns out the lifecycle owner changes quite a bit and thus it's a requirement to make it the key of a Disposable Effect.
This commit is contained in:
@@ -194,7 +194,7 @@ private fun RenderSearch(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(Unit) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Join Start")
|
println("Join Start")
|
||||||
|
@@ -614,7 +614,7 @@ fun ZoomableImageDialog(
|
|||||||
) {
|
) {
|
||||||
val view = LocalView.current
|
val view = LocalView.current
|
||||||
|
|
||||||
DisposableEffect(key1 = Unit) {
|
DisposableEffect(key1 = view) {
|
||||||
if (Build.VERSION.SDK_INT >= 30) {
|
if (Build.VERSION.SDK_INT >= 30) {
|
||||||
view.windowInsetsController?.hide(
|
view.windowInsetsController?.hide(
|
||||||
android.view.WindowInsets.Type.systemBars()
|
android.view.WindowInsets.Type.systemBars()
|
||||||
|
@@ -284,7 +284,7 @@ fun AppNavigation(
|
|||||||
actionableNextPage = null
|
actionableNextPage = null
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(navController) {
|
DisposableEffect(activity) {
|
||||||
val consumer = Consumer<Intent> { intent ->
|
val consumer = Consumer<Intent> { intent ->
|
||||||
val uri = intent?.data?.toString()
|
val uri = intent?.data?.toString()
|
||||||
val newPage = uriToRoute(uri)
|
val newPage = uriToRoute(uri)
|
||||||
|
@@ -4,7 +4,6 @@ import android.util.Log
|
|||||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.google.zxing.client.android.Intents
|
import com.google.zxing.client.android.Intents
|
||||||
import com.journeyapps.barcodescanner.ScanContract
|
import com.journeyapps.barcodescanner.ScanContract
|
||||||
@@ -40,8 +39,6 @@ fun NIP19QrCodeScanner(onScan: (String?) -> Unit) {
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SimpleQrCodeScanner(onScan: (String?) -> Unit) {
|
fun SimpleQrCodeScanner(onScan: (String?) -> Unit) {
|
||||||
val lifecycleOwner = LocalLifecycleOwner.current
|
|
||||||
|
|
||||||
val qrLauncher =
|
val qrLauncher =
|
||||||
rememberLauncherForActivityResult(ScanContract()) {
|
rememberLauncherForActivityResult(ScanContract()) {
|
||||||
if (it.contents != null) {
|
if (it.contents != null) {
|
||||||
@@ -59,7 +56,7 @@ fun SimpleQrCodeScanner(onScan: (String?) -> Unit) {
|
|||||||
addExtra(Intents.Scan.SCAN_TYPE, Intents.Scan.MIXED_SCAN)
|
addExtra(Intents.Scan.SCAN_TYPE, Intents.Scan.MIXED_SCAN)
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(lifecycleOwner) {
|
DisposableEffect(Unit) {
|
||||||
qrLauncher.launch(scanOptions)
|
qrLauncher.launch(scanOptions)
|
||||||
onDispose { }
|
onDispose { }
|
||||||
}
|
}
|
||||||
|
@@ -70,16 +70,20 @@ class RelayFeedViewModel : ViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun subscribeTo(user: User) {
|
fun subscribeTo(user: User) {
|
||||||
currentUser = user
|
if (currentUser != user) {
|
||||||
user.live().relays.observeForever(listener)
|
currentUser = user
|
||||||
user.live().relayInfo.observeForever(listener)
|
user.live().relays.observeForever(listener)
|
||||||
invalidateData()
|
user.live().relayInfo.observeForever(listener)
|
||||||
|
invalidateData()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun unsubscribeTo(user: User) {
|
fun unsubscribeTo(user: User) {
|
||||||
user.live().relays.removeObserver(listener)
|
if (currentUser == user) {
|
||||||
user.live().relayInfo.removeObserver(listener)
|
user.live().relays.removeObserver(listener)
|
||||||
currentUser = null
|
user.live().relayInfo.removeObserver(listener)
|
||||||
|
currentUser = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val bundler = BundledUpdate(250, Dispatchers.IO)
|
private val bundler = BundledUpdate(250, Dispatchers.IO)
|
||||||
|
@@ -47,7 +47,7 @@ fun rememberForeverLazyListState(
|
|||||||
savedOffset.roundToInt()
|
savedOffset.roundToInt()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
DisposableEffect(Unit) {
|
DisposableEffect(scrollState) {
|
||||||
onDispose {
|
onDispose {
|
||||||
val lastIndex = scrollState.firstVisibleItemIndex
|
val lastIndex = scrollState.firstVisibleItemIndex
|
||||||
val lastOffset = scrollState.firstVisibleItemScrollOffset
|
val lastOffset = scrollState.firstVisibleItemScrollOffset
|
||||||
|
@@ -196,9 +196,6 @@ fun ChannelScreen(
|
|||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
|
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
NostrChannelDataSource.start()
|
|
||||||
feedViewModel.invalidateData(true)
|
|
||||||
|
|
||||||
launch(Dispatchers.IO) {
|
launch(Dispatchers.IO) {
|
||||||
newPostModel.imageUploadingError.collect { error ->
|
newPostModel.imageUploadingError.collect { error ->
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
@@ -209,6 +206,17 @@ fun ChannelScreen(
|
|||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(accountViewModel) {
|
||||||
|
NostrChannelDataSource.loadMessagesBetween(accountViewModel.account, channel)
|
||||||
|
NostrChannelDataSource.start()
|
||||||
|
feedViewModel.invalidateData(true)
|
||||||
|
|
||||||
|
onDispose {
|
||||||
|
NostrChannelDataSource.clear()
|
||||||
|
NostrChannelDataSource.stop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Channel Start")
|
println("Channel Start")
|
||||||
|
@@ -67,7 +67,7 @@ fun ChatroomListScreen(
|
|||||||
WatchAccountForListScreen(knownFeedViewModel, newFeedViewModel, accountViewModel)
|
WatchAccountForListScreen(knownFeedViewModel, newFeedViewModel, accountViewModel)
|
||||||
|
|
||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
NostrChatroomListDataSource.start()
|
NostrChatroomListDataSource.start()
|
||||||
|
@@ -234,9 +234,6 @@ fun ChatroomScreen(
|
|||||||
|
|
||||||
LaunchedEffect(room, accountViewModel) {
|
LaunchedEffect(room, accountViewModel) {
|
||||||
launch(Dispatchers.IO) {
|
launch(Dispatchers.IO) {
|
||||||
NostrChatroomDataSource.start()
|
|
||||||
feedViewModel.invalidateData()
|
|
||||||
|
|
||||||
newPostModel.imageUploadingError.collect { error ->
|
newPostModel.imageUploadingError.collect { error ->
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
Toast.makeText(context, error, Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, error, Toast.LENGTH_SHORT).show()
|
||||||
@@ -246,6 +243,16 @@ fun ChatroomScreen(
|
|||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(room, accountViewModel) {
|
DisposableEffect(room, accountViewModel) {
|
||||||
|
NostrChatroomDataSource.loadMessagesBetween(accountViewModel.account, room)
|
||||||
|
NostrChatroomDataSource.start()
|
||||||
|
feedViewModel.invalidateData()
|
||||||
|
|
||||||
|
onDispose {
|
||||||
|
NostrChatroomDataSource.stop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Private Message Start")
|
println("Private Message Start")
|
||||||
|
@@ -56,7 +56,7 @@ fun CommunityScreen(note: AddressableNote, feedViewModel: NostrCommunityFeedView
|
|||||||
feedViewModel.invalidateData()
|
feedViewModel.invalidateData()
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Community Start")
|
println("Community Start")
|
||||||
|
@@ -88,7 +88,7 @@ fun DiscoverScreen(
|
|||||||
accountViewModel = accountViewModel
|
accountViewModel = accountViewModel
|
||||||
)
|
)
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Discovery Start")
|
println("Discovery Start")
|
||||||
|
@@ -65,12 +65,16 @@ fun GeoHashScreen(tag: String, feedViewModel: NostrGeoHashFeedViewModel, account
|
|||||||
|
|
||||||
NostrGeohashDataSource.loadHashtag(tag)
|
NostrGeohashDataSource.loadHashtag(tag)
|
||||||
|
|
||||||
LaunchedEffect(tag) {
|
DisposableEffect(tag) {
|
||||||
NostrGeohashDataSource.start()
|
NostrGeohashDataSource.start()
|
||||||
feedViewModel.invalidateData()
|
feedViewModel.invalidateData()
|
||||||
|
onDispose {
|
||||||
|
NostrGeohashDataSource.loadHashtag(null)
|
||||||
|
NostrGeohashDataSource.stop()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Hashtag Start")
|
println("Hashtag Start")
|
||||||
@@ -88,8 +92,6 @@ fun GeoHashScreen(tag: String, feedViewModel: NostrGeoHashFeedViewModel, account
|
|||||||
lifeCycleOwner.lifecycle.addObserver(observer)
|
lifeCycleOwner.lifecycle.addObserver(observer)
|
||||||
onDispose {
|
onDispose {
|
||||||
lifeCycleOwner.lifecycle.removeObserver(observer)
|
lifeCycleOwner.lifecycle.removeObserver(observer)
|
||||||
NostrGeohashDataSource.loadHashtag(null)
|
|
||||||
NostrGeohashDataSource.stop()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@ import androidx.compose.material.Divider
|
|||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.livedata.observeAsState
|
import androidx.compose.runtime.livedata.observeAsState
|
||||||
@@ -61,12 +60,17 @@ fun HashtagScreen(tag: String, feedViewModel: NostrHashtagFeedViewModel, account
|
|||||||
|
|
||||||
NostrHashtagDataSource.loadHashtag(tag)
|
NostrHashtagDataSource.loadHashtag(tag)
|
||||||
|
|
||||||
LaunchedEffect(tag) {
|
DisposableEffect(tag) {
|
||||||
NostrHashtagDataSource.start()
|
NostrHashtagDataSource.start()
|
||||||
feedViewModel.invalidateData()
|
feedViewModel.invalidateData()
|
||||||
|
|
||||||
|
onDispose {
|
||||||
|
NostrHashtagDataSource.loadHashtag(null)
|
||||||
|
NostrHashtagDataSource.stop()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Hashtag Start")
|
println("Hashtag Start")
|
||||||
@@ -84,8 +88,6 @@ fun HashtagScreen(tag: String, feedViewModel: NostrHashtagFeedViewModel, account
|
|||||||
lifeCycleOwner.lifecycle.addObserver(observer)
|
lifeCycleOwner.lifecycle.addObserver(observer)
|
||||||
onDispose {
|
onDispose {
|
||||||
lifeCycleOwner.lifecycle.removeObserver(observer)
|
lifeCycleOwner.lifecycle.removeObserver(observer)
|
||||||
NostrHashtagDataSource.loadHashtag(null)
|
|
||||||
NostrHashtagDataSource.stop()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@ fun HiddenUsersScreen(
|
|||||||
) {
|
) {
|
||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Hidden Users Start")
|
println("Hidden Users Start")
|
||||||
|
@@ -63,7 +63,7 @@ fun HomeScreen(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
NostrHomeDataSource.invalidateFilters()
|
NostrHomeDataSource.invalidateFilters()
|
||||||
|
@@ -16,6 +16,7 @@ import androidx.compose.foundation.layout.padding
|
|||||||
import androidx.compose.foundation.layout.statusBarsPadding
|
import androidx.compose.foundation.layout.statusBarsPadding
|
||||||
import androidx.compose.material.*
|
import androidx.compose.material.*
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
@@ -33,7 +34,10 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.NavBackStackEntry
|
import androidx.navigation.NavBackStackEntry
|
||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
@@ -323,6 +327,20 @@ fun WatchNavStateToUpdateBarVisibility(navState: State<NavBackStackEntry?>, bott
|
|||||||
LaunchedEffect(key1 = navState.value) {
|
LaunchedEffect(key1 = navState.value) {
|
||||||
bottomBarOffsetHeightPx.value = 0f
|
bottomBarOffsetHeightPx.value = 0f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
|
DisposableEffect(lifeCycleOwner) {
|
||||||
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
|
bottomBarOffsetHeightPx.value = 0f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lifeCycleOwner.lifecycle.addObserver(observer)
|
||||||
|
onDispose {
|
||||||
|
lifeCycleOwner.lifecycle.removeObserver(observer)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
@@ -75,7 +75,7 @@ fun NotificationScreen(
|
|||||||
CheckifItNeedsToRequestNotificationPermission()
|
CheckifItNeedsToRequestNotificationPermission()
|
||||||
|
|
||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
NostrAccountDataSource.invalidateFilters()
|
NostrAccountDataSource.invalidateFilters()
|
||||||
|
@@ -238,11 +238,15 @@ fun ProfileScreen(
|
|||||||
|
|
||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
|
|
||||||
LaunchedEffect(Unit) {
|
DisposableEffect(accountViewModel) {
|
||||||
NostrUserProfileDataSource.start()
|
NostrUserProfileDataSource.start()
|
||||||
|
onDispose {
|
||||||
|
NostrUserProfileDataSource.loadUserProfile(null)
|
||||||
|
NostrUserProfileDataSource.stop()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Profidle Start")
|
println("Profidle Start")
|
||||||
@@ -259,9 +263,6 @@ fun ProfileScreen(
|
|||||||
lifeCycleOwner.lifecycle.addObserver(observer)
|
lifeCycleOwner.lifecycle.addObserver(observer)
|
||||||
onDispose {
|
onDispose {
|
||||||
lifeCycleOwner.lifecycle.removeObserver(observer)
|
lifeCycleOwner.lifecycle.removeObserver(observer)
|
||||||
println("Profile Dispose")
|
|
||||||
NostrUserProfileDataSource.loadUserProfile(null)
|
|
||||||
NostrUserProfileDataSource.stop()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1567,6 +1568,13 @@ fun TabRelays(user: User, accountViewModel: AccountViewModel, nav: (String) -> U
|
|||||||
val lifeCycleOwner = LocalLifecycleOwner.current
|
val lifeCycleOwner = LocalLifecycleOwner.current
|
||||||
|
|
||||||
DisposableEffect(user) {
|
DisposableEffect(user) {
|
||||||
|
feedViewModel.subscribeTo(user)
|
||||||
|
onDispose {
|
||||||
|
feedViewModel.unsubscribeTo(user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Profile Relay Start")
|
println("Profile Relay Start")
|
||||||
|
@@ -104,7 +104,7 @@ fun SearchScreen(
|
|||||||
|
|
||||||
WatchAccountForSearchScreen(accountViewModel)
|
WatchAccountForSearchScreen(accountViewModel)
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Search Start")
|
println("Search Start")
|
||||||
|
@@ -4,7 +4,6 @@ import androidx.compose.foundation.layout.Column
|
|||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||||
@@ -28,11 +27,15 @@ fun ThreadScreen(noteId: String?, accountViewModel: AccountViewModel, nav: (Stri
|
|||||||
|
|
||||||
NostrThreadDataSource.loadThread(noteId)
|
NostrThreadDataSource.loadThread(noteId)
|
||||||
|
|
||||||
LaunchedEffect(noteId) {
|
DisposableEffect(noteId) {
|
||||||
feedViewModel.invalidateData(true)
|
feedViewModel.invalidateData(true)
|
||||||
|
onDispose {
|
||||||
|
NostrThreadDataSource.loadThread(null)
|
||||||
|
NostrThreadDataSource.stop()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Thread Start")
|
println("Thread Start")
|
||||||
|
@@ -89,7 +89,7 @@ fun VideoScreen(
|
|||||||
|
|
||||||
WatchAccountForVideoScreen(videoFeedView = videoFeedView, accountViewModel = accountViewModel)
|
WatchAccountForVideoScreen(videoFeedView = videoFeedView, accountViewModel = accountViewModel)
|
||||||
|
|
||||||
DisposableEffect(accountViewModel) {
|
DisposableEffect(lifeCycleOwner) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = LifecycleEventObserver { _, event ->
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
if (event == Lifecycle.Event.ON_RESUME) {
|
||||||
println("Video Start")
|
println("Video Start")
|
||||||
|
Reference in New Issue
Block a user