Private
Public Access
1
0

build: Move Previews to separate debug-only module

This commit is contained in:
2024-03-23 23:08:44 -07:00
parent f8ee8458ef
commit aa8acb3fe0
5 changed files with 99 additions and 107 deletions

View File

@@ -0,0 +1,99 @@
package previews
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import net.buzzert.kordophonedroid.R
import net.buzzert.kordophonedroid.ui.conversationlist.ConversationListItem
import net.buzzert.kordophonedroid.ui.conversationlist.ConversationListScreen
import net.buzzert.kordophonedroid.ui.conversationlist.NoContentView
import net.buzzert.kordophonedroid.ui.messagelist.MessageListItem
import net.buzzert.kordophonedroid.ui.messagelist.MessageMetadata
import net.buzzert.kordophonedroid.ui.messagelist.MessageTranscript
import net.buzzert.kordophonedroid.ui.settings.SettingsScreen
import java.util.Date
// - Conversation List
@Preview
@Composable
fun ConversationListItemPreview() {
Column(modifier = Modifier.background(MaterialTheme.colors.background)) {
ConversationListItem(name = "James Magahern", id = "asdf", lastMessagePreview = "This is a test", date = Date(), isUnread = true) {}
}
}
@Preview
@Composable
fun ConversationListScreenPreview() {
ConversationListScreen()
}
// - Message List
private fun testMessageMetadata(fromMe: Boolean, delivered: Boolean): MessageMetadata {
return MessageMetadata(
fromMe = fromMe,
fromAddress = if (fromMe) "<me>" else "cool@cool.com",
date = Date(),
delivered = delivered,
)
}
private fun makeTestTextMessageItem(text: String, fromMe: Boolean, delivered: Boolean = true): MessageListItem {
return MessageListItem.TextMessage(
text = text,
metadata = testMessageMetadata(fromMe = fromMe, delivered = delivered)
)
}
private fun makeTestImageMessageItem(fromMe: Boolean, delivered: Boolean = true): MessageListItem {
return MessageListItem.ImageAttachmentMessage(
guid = "asdf",
metadata = testMessageMetadata(fromMe, delivered)
)
}
@Preview
@Composable
private fun MessageListScreenPreview() {
val messages = listOf<MessageListItem>(
makeTestImageMessageItem(false),
makeTestTextMessageItem("Hello", false),
makeTestTextMessageItem( "Hey there, this is a longer text message that might wrap to another line", true),
makeTestTextMessageItem("How's it going", fromMe = true, delivered = false)
).reversed()
Scaffold() {
MessageTranscript(messages = messages, paddingValues = it, showSenders = true, onSendMessage = {})
}
}
// - No content
@Preview
@Composable
fun NoContentPreview() {
Scaffold {
NoContentView(
icon = R.drawable.storage,
text = "Server not configured",
onSettings = {},
modifier = Modifier.padding(it)
)
}
}
// - Settings
@Preview
@Composable
fun SettingsPreview() {
SettingsScreen()
}

View File

@@ -24,7 +24,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
@@ -207,18 +206,3 @@ fun UnreadIndicator(size: Dp, modifier: Modifier = Modifier) {
)
}
// -
@Preview
@Composable
fun ConversationListItemPreview() {
Column(modifier = Modifier.background(MaterialTheme.colors.background)) {
ConversationListItem(name = "James Magahern", id = "asdf", lastMessagePreview = "This is a test", date = Date(), isUnread = true) {}
}
}
@Preview
@Composable
fun ConversationListScreenPreview() {
ConversationListScreen()
}

View File

@@ -7,24 +7,17 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material.Button
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em
import net.buzzert.kordophonedroid.R
@Composable
fun NoContentView(
@@ -66,15 +59,3 @@ fun NoContentView(
}
}
@Preview
@Composable
fun NoContentPreview() {
Scaffold {
NoContentView(
icon = R.drawable.storage,
text = "Server not configured",
onSettings = {},
modifier = Modifier.padding(it)
)
}
}

View File

@@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@@ -29,7 +28,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
@@ -41,21 +39,12 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.compose.rememberNavController
import coil.Coil
import coil.ImageLoader
import coil.ImageLoaderFactory
import coil.compose.AsyncImage
import coil.compose.SubcomposeAsyncImage
import coil.imageLoader
import coil.request.ImageRequest
import coil.size.Size
import net.buzzert.kordophone.backend.model.GUID
import net.buzzert.kordophonedroid.R
import net.buzzert.kordophonedroid.ui.Destination
import net.buzzert.kordophonedroid.ui.LocalNavController
import net.buzzert.kordophonedroid.ui.attachments.AttachmentFetchData
@@ -63,10 +52,6 @@ import net.buzzert.kordophonedroid.ui.attachments.AttachmentViewModel
import net.buzzert.kordophonedroid.ui.shared.LINK_ANNOTATION_TAG
import net.buzzert.kordophonedroid.ui.shared.linkify
import net.buzzert.kordophonedroid.ui.theme.KordophoneTopAppBar
import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import java.net.URL
import java.text.SimpleDateFormat
import java.time.Duration
import java.util.Date
@@ -386,44 +371,3 @@ fun ImageBubble(
)
}
}
// -
private fun testMessageMetadata(fromMe: Boolean, delivered: Boolean): MessageMetadata {
return MessageMetadata(
fromMe = fromMe,
fromAddress = if (fromMe) "<me>" else "cool@cool.com",
date = Date(),
delivered = delivered,
)
}
private fun makeTestTextMessageItem(text: String, fromMe: Boolean, delivered: Boolean = true): MessageListItem {
return MessageListItem.TextMessage(
text = text,
metadata = testMessageMetadata(fromMe = fromMe, delivered = delivered)
)
}
private fun makeTestImageMessageItem(fromMe: Boolean, delivered: Boolean = true): MessageListItem {
return MessageListItem.ImageAttachmentMessage(
guid = "asdf",
metadata = testMessageMetadata(fromMe, delivered)
)
}
@Preview
@Composable
private fun MessageListScreenPreview() {
val messages = listOf<MessageListItem>(
makeTestImageMessageItem(false),
makeTestTextMessageItem("Hello", false),
makeTestTextMessageItem( "Hey there, this is a longer text message that might wrap to another line", true),
makeTestTextMessageItem("How's it going", fromMe = true, delivered = false)
).reversed()
Scaffold() {
MessageTranscript(messages = messages, paddingValues = it, showSenders = true, onSendMessage = {})
}
}

View File

@@ -2,7 +2,6 @@ package net.buzzert.kordophonedroid.ui.settings
import android.provider.Settings
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -24,30 +23,22 @@ import androidx.compose.material.Scaffold
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.TextField
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountBox
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.hilt.navigation.compose.hiltViewModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapNotNull
import net.buzzert.kordophonedroid.R
import net.buzzert.kordophonedroid.ui.LocalNavController
import net.buzzert.kordophonedroid.ui.theme.KordophoneTopAppBar
@@ -233,10 +224,3 @@ private fun EditDialog(
}
}
}
@Preview
@Composable
fun SettingsPreview() {
SettingsScreen()
}