From aa8acb3fe06a8ca0cca71913dfe91a97a290db1c Mon Sep 17 00:00:00 2001 From: James Magahern Date: Sat, 23 Mar 2024 23:08:44 -0700 Subject: [PATCH] build: Move Previews to separate debug-only module --- app/src/debug/kotlin/previews/Previews.kt | 99 +++++++++++++++++++ .../ConversationListScreen.kt | 16 --- .../ui/conversationlist/NoContentView.kt | 19 ---- .../ui/messagelist/MessageListScreen.kt | 56 ----------- .../ui/settings/SettingsScreen.kt | 16 --- 5 files changed, 99 insertions(+), 107 deletions(-) create mode 100644 app/src/debug/kotlin/previews/Previews.kt diff --git a/app/src/debug/kotlin/previews/Previews.kt b/app/src/debug/kotlin/previews/Previews.kt new file mode 100644 index 0000000..ea00df6 --- /dev/null +++ b/app/src/debug/kotlin/previews/Previews.kt @@ -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) "" 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( + 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() +} \ No newline at end of file diff --git a/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/ConversationListScreen.kt b/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/ConversationListScreen.kt index 1d45194..3cc3ed2 100644 --- a/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/ConversationListScreen.kt +++ b/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/ConversationListScreen.kt @@ -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() -} \ No newline at end of file diff --git a/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/NoContentView.kt b/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/NoContentView.kt index 301b21c..2f26fd4 100644 --- a/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/NoContentView.kt +++ b/app/src/main/java/net/buzzert/kordophonedroid/ui/conversationlist/NoContentView.kt @@ -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) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/net/buzzert/kordophonedroid/ui/messagelist/MessageListScreen.kt b/app/src/main/java/net/buzzert/kordophonedroid/ui/messagelist/MessageListScreen.kt index 8b0d3b9..170d76d 100644 --- a/app/src/main/java/net/buzzert/kordophonedroid/ui/messagelist/MessageListScreen.kt +++ b/app/src/main/java/net/buzzert/kordophonedroid/ui/messagelist/MessageListScreen.kt @@ -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) "" 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( - 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 newline at end of file diff --git a/app/src/main/java/net/buzzert/kordophonedroid/ui/settings/SettingsScreen.kt b/app/src/main/java/net/buzzert/kordophonedroid/ui/settings/SettingsScreen.kt index 412b2c3..748e9d0 100644 --- a/app/src/main/java/net/buzzert/kordophonedroid/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/net/buzzert/kordophonedroid/ui/settings/SettingsScreen.kt @@ -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() -} \ No newline at end of file