mirror of
https://github.com/pawelorzech/Swoosh.git
synced 2026-03-31 11:55:47 +00:00
feat: show "Publishing to" chip in Composer for multi-account users
When more than one account is configured, display an informational AssistChip at the top of the Composer showing the active blog name and site icon. Uses SiteMetadataCache for the blog title, falls back to account name. Non-clickable, only shown for disambiguation.
This commit is contained in:
parent
0679b18b8e
commit
ac461c3e6f
1 changed files with 37 additions and 0 deletions
|
|
@ -42,8 +42,12 @@ import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import coil.compose.AsyncImage
|
import coil.compose.AsyncImage
|
||||||
|
import com.swoosh.microblog.data.AccountManager
|
||||||
import com.swoosh.microblog.data.HashtagParser
|
import com.swoosh.microblog.data.HashtagParser
|
||||||
|
import com.swoosh.microblog.data.SiteMetadataCache
|
||||||
import com.swoosh.microblog.data.model.FeedPost
|
import com.swoosh.microblog.data.model.FeedPost
|
||||||
import com.swoosh.microblog.data.model.PostStats
|
import com.swoosh.microblog.data.model.PostStats
|
||||||
import com.swoosh.microblog.ui.animation.SwooshMotion
|
import com.swoosh.microblog.ui.animation.SwooshMotion
|
||||||
|
|
@ -209,6 +213,39 @@ fun ComposerScreen(
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.padding(padding)
|
.padding(padding)
|
||||||
) {
|
) {
|
||||||
|
// "Publishing to" chip when multiple accounts exist
|
||||||
|
val composerContext = LocalContext.current
|
||||||
|
val composerAccountManager = remember { AccountManager(composerContext) }
|
||||||
|
val composerAccounts = remember { composerAccountManager.getAccounts() }
|
||||||
|
val composerActiveAccount = remember { composerAccountManager.getActiveAccount() }
|
||||||
|
|
||||||
|
if (composerAccounts.size > 1 && composerActiveAccount != null) {
|
||||||
|
val composerSiteCache = remember { SiteMetadataCache(composerContext) }
|
||||||
|
val composerSiteData = remember {
|
||||||
|
composerSiteCache.get(composerActiveAccount.id)
|
||||||
|
}
|
||||||
|
val siteName = composerSiteData?.title ?: composerActiveAccount.name
|
||||||
|
val siteIconUrl = composerSiteData?.icon ?: composerSiteData?.logo
|
||||||
|
|
||||||
|
AssistChip(
|
||||||
|
onClick = { },
|
||||||
|
label = { Text("Publishing to: $siteName") },
|
||||||
|
leadingIcon = if (siteIconUrl != null) {
|
||||||
|
{
|
||||||
|
AsyncImage(
|
||||||
|
model = siteIconUrl,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = Modifier
|
||||||
|
.size(18.dp)
|
||||||
|
.clip(CircleShape),
|
||||||
|
contentScale = ContentScale.Crop
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else null,
|
||||||
|
modifier = Modifier.padding(horizontal = 16.dp, vertical = 4.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// Hashtag visual transformation for edit mode text field
|
// Hashtag visual transformation for edit mode text field
|
||||||
val hashtagColor = MaterialTheme.colorScheme.primary
|
val hashtagColor = MaterialTheme.colorScheme.primary
|
||||||
val hashtagTransformation = remember(hashtagColor) {
|
val hashtagTransformation = remember(hashtagColor) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue