Moves internal content changes to derived states.
This commit is contained in:
+6
-1
@@ -13,6 +13,7 @@ import androidx.compose.material.ButtonDefaults
|
|||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@@ -50,11 +51,15 @@ fun ExpandableRichTextViewer(
|
|||||||
minOf(firstSpaceAfterCut, firstNewLineAfterCut)
|
minOf(firstSpaceAfterCut, firstNewLineAfterCut)
|
||||||
}
|
}
|
||||||
|
|
||||||
val text = if (showFullText) {
|
val text by remember {
|
||||||
|
derivedStateOf {
|
||||||
|
if (showFullText) {
|
||||||
content
|
content
|
||||||
} else {
|
} else {
|
||||||
content.take(whereToCut)
|
content.take(whereToCut)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Box {
|
Box {
|
||||||
RichTextViewer(
|
RichTextViewer(
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ import java.net.MalformedURLException
|
|||||||
import java.net.URISyntaxException
|
import java.net.URISyntaxException
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
import kotlin.time.ExperimentalTime
|
|
||||||
|
|
||||||
val imageExtensions = listOf("png", "jpg", "gif", "bmp", "jpeg", "webp", "svg")
|
val imageExtensions = listOf("png", "jpg", "gif", "bmp", "jpeg", "webp", "svg")
|
||||||
val videoExtensions = listOf("mp4", "avi", "wmv", "mpg", "amv", "webm", "mov", "mp3")
|
val videoExtensions = listOf("mp4", "avi", "wmv", "mpg", "amv", "webm", "mov", "mp3")
|
||||||
@@ -113,7 +112,6 @@ class RichTextViewerState(
|
|||||||
val imageList: List<ZoomableUrlContent>
|
val imageList: List<ZoomableUrlContent>
|
||||||
)
|
)
|
||||||
|
|
||||||
@OptIn(ExperimentalTime::class)
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun RenderRegular(
|
private fun RenderRegular(
|
||||||
content: String,
|
content: String,
|
||||||
|
|||||||
+7
-2
@@ -14,6 +14,7 @@ import androidx.compose.material.icons.Icons
|
|||||||
import androidx.compose.material.icons.filled.Check
|
import androidx.compose.material.icons.filled.Check
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
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
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
@@ -56,7 +57,7 @@ fun TranslatableRichTextViewer(
|
|||||||
var langSettingsPopupExpanded by remember { mutableStateOf(false) }
|
var langSettingsPopupExpanded by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
val accountState by accountViewModel.accountLanguagesLiveData.observeAsState()
|
val accountState by accountViewModel.accountLanguagesLiveData.observeAsState()
|
||||||
val account = accountState?.account ?: return
|
val account = remember(accountState) { accountState?.account } ?: return
|
||||||
|
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
|
|
||||||
@@ -78,7 +79,11 @@ fun TranslatableRichTextViewer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val toBeViewed = if (showOriginal) content else translatedTextState.value.result ?: content
|
val toBeViewed by remember {
|
||||||
|
derivedStateOf {
|
||||||
|
if (showOriginal) content else translatedTextState.value.result ?: content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Column() {
|
Column() {
|
||||||
ExpandableRichTextViewer(
|
ExpandableRichTextViewer(
|
||||||
|
|||||||
Reference in New Issue
Block a user