Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,32 @@ import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.AssistChip
import androidx.compose.material3.AssistChipDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalClipboard
import androidx.compose.ui.text.font.FontWeight
import com.xiaoyv.bangumi.core_resource.resources.Res
import com.xiaoyv.bangumi.core_resource.resources.global_copy_success
import com.xiaoyv.bangumi.core_resource.resources.profile_network_service
import com.xiaoyv.bangumi.features.user.business.UserEvent
import com.xiaoyv.bangumi.features.user.business.UserState
import com.xiaoyv.bangumi.shared.System
import com.xiaoyv.bangumi.shared.core.utils.bbcodeToHtml
import com.xiaoyv.bangumi.shared.core.utils.parseHtmlHexColor
import com.xiaoyv.bangumi.shared.ui.component.action.LocalActionHandler
import com.xiaoyv.bangumi.shared.ui.component.popup.LocalPopupTipState
import com.xiaoyv.bangumi.shared.ui.component.space.LayoutPadding
import com.xiaoyv.bangumi.shared.ui.component.space.LayoutPaddingHalf
import com.xiaoyv.bangumi.shared.ui.component.text.BgmLinkedText
import com.xiaoyv.bangumi.shared.ui.component.text.SectionTitle
import kotlinx.coroutines.launch
import org.jetbrains.compose.resources.getString
import org.jetbrains.compose.resources.stringResource

@Composable
Expand Down Expand Up @@ -66,18 +72,32 @@ fun UserBioScreen(
verticalArrangement = Arrangement.spacedBy(LayoutPaddingHalf)
) {
val actionHandler = LocalActionHandler.current
val clipboard = LocalClipboard.current
val scope = rememberCoroutineScope()
val popupTipState = LocalPopupTipState.current

state.user.networkServices.forEach { service ->
val hasLink = service.url.isNotBlank()

state.user.networkServices.forEach {
AssistChip(
colors = AssistChipDefaults.assistChipColors(
containerColor = remember(it.color) { parseHtmlHexColor(it.color) ?: Color.Unspecified },
labelColor = MaterialTheme.colorScheme.onPrimary
containerColor = remember(service.color) { parseHtmlHexColor(service.color) ?: Color.Unspecified },
labelColor = Color.White
),
onClick = { actionHandler.openInBrowser(it.url) },
onClick = {
if (hasLink) {
actionHandler.openInBrowser(service.url + service.account)
} else {
scope.launch {
clipboard.setClipEntry(System.createClipEntry(service.account))
popupTipState.showToast(getString(Res.string.global_copy_success))
}
}
},
shape = CircleShape,
label = {
Text(
text = it.title + ": " + it.account,
text = service.title + ": " + service.account,
fontWeight = FontWeight.Medium
)
}
Expand All @@ -90,10 +110,7 @@ fun UserBioScreen(
modifier = Modifier
.fillMaxWidth()
.padding(LayoutPadding),
text = summary,
textStyle = MaterialTheme.typography.bodyLarge.copy(
color = MaterialTheme.colorScheme.onSurface
)
text = summary
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,14 @@ fun BgmLinkedText(
minLines: Int = 1,
actionHandler: AppActionHandler = LocalActionHandler.current,
) {
// 如果没有显式传文字颜色,则自动回退到 onSurface
val resolvedTextStyle = textStyle.copy(
color = textStyle.color.takeOrElse { MaterialTheme.colorScheme.onSurface }
)
Html(
modifier = modifier,
html = remember(text) { if (text.contains("[")) bbcodeToHtml(text, true) else text },
textStyle = resolvedTextStyle,
onClickUrl = { actionHandler.openBgmLink(it) },
inlineImage = {
StateImage(
Expand Down
Loading