@@ -47,6 +47,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
47
47
import androidx.compose.ui.input.pointer.pointerInput
48
48
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
49
49
import androidx.compose.ui.res.stringResource
50
+ import androidx.compose.ui.tooling.preview.Preview
50
51
import androidx.compose.ui.unit.dp
51
52
import androidx.lifecycle.compose.collectAsStateWithLifecycle
52
53
import io.jja08111.gemini.core.ui.rememberPrevious
@@ -59,7 +60,10 @@ import io.jja08111.gemini.feature.chat.ui.component.rememberModelResponseDropdow
59
60
import io.jja08111.gemini.model.MessageGroup
60
61
import io.jja08111.gemini.model.ModelResponse
61
62
import io.jja08111.gemini.model.ModelResponseState
63
+ import io.jja08111.gemini.model.Prompt
64
+ import kotlinx.coroutines.flow.flowOf
62
65
import kotlinx.coroutines.launch
66
+ import java.time.LocalDateTime
63
67
64
68
// TODO: Show keyboard when enter this screen
65
69
@Composable
@@ -336,3 +340,118 @@ private fun ScrollPositionSideEffect(messageGroups: List<MessageGroup>, listStat
336
340
}
337
341
}
338
342
}
343
+
344
+ @Preview
345
+ @Composable
346
+ private fun EmptyChatScreenPreview () {
347
+ val uiState = ChatUiState (messageGroupStream = flowOf(listOf ()))
348
+
349
+ MaterialTheme {
350
+ ChatScreen (
351
+ uiState = uiState,
352
+ snackbarHostState = SnackbarHostState (),
353
+ onBackClick = {},
354
+ onInputUpdate = {},
355
+ onCameraClick = {},
356
+ onAlbumClick = {},
357
+ onRemoveImageClick = {},
358
+ onSendClick = {},
359
+ onRegenerateOnErrorClick = {},
360
+ onSelectResponseClick = {},
361
+ onRegenerateResponseClick = {},
362
+ )
363
+ }
364
+ }
365
+
366
+ @Preview
367
+ @Composable
368
+ private fun ChatScreenPreview () {
369
+ val messageGroups = listOf (
370
+ MessageGroup (
371
+ responseCount = 1 ,
372
+ prompt = Prompt (
373
+ roomId = " id" ,
374
+ text = " Hello" ,
375
+ images = emptyList(),
376
+ ),
377
+ selectedResponse = ModelResponse (
378
+ text = " Hi nice to meet you." ,
379
+ roomId = " id" ,
380
+ selected = true ,
381
+ state = ModelResponseState .Generated ,
382
+ createdAt = LocalDateTime .of(2024 , 8 , 30 , 8 , 10 ),
383
+ ),
384
+ ),
385
+ MessageGroup (
386
+ responseCount = 1 ,
387
+ prompt = Prompt (
388
+ roomId = " id" ,
389
+ text = " Okay" ,
390
+ images = emptyList(),
391
+ ),
392
+ selectedResponse = ModelResponse (
393
+ text = " Good. How can I help you?" ,
394
+ roomId = " id" ,
395
+ state = ModelResponseState .Generated ,
396
+ selected = true ,
397
+ createdAt = LocalDateTime .of(2024 , 8 , 30 , 8 , 10 ),
398
+ ),
399
+ ),
400
+ )
401
+ val uiState = ChatUiState (messageGroupStream = flowOf(messageGroups))
402
+
403
+ MaterialTheme {
404
+ ChatScreen (
405
+ uiState = uiState,
406
+ snackbarHostState = SnackbarHostState (),
407
+ onBackClick = {},
408
+ onInputUpdate = {},
409
+ onCameraClick = {},
410
+ onAlbumClick = {},
411
+ onRemoveImageClick = {},
412
+ onSendClick = {},
413
+ onRegenerateOnErrorClick = {},
414
+ onSelectResponseClick = {},
415
+ onRegenerateResponseClick = {},
416
+ )
417
+ }
418
+ }
419
+
420
+ @Preview
421
+ @Composable
422
+ private fun ErrorChatScreenPreview () {
423
+ val messageGroups = listOf (
424
+ MessageGroup (
425
+ responseCount = 1 ,
426
+ prompt = Prompt (
427
+ roomId = " id" ,
428
+ text = " Okay" ,
429
+ images = emptyList(),
430
+ ),
431
+ selectedResponse = ModelResponse (
432
+ text = " Good. How ca" ,
433
+ roomId = " id" ,
434
+ state = ModelResponseState .Error ,
435
+ selected = true ,
436
+ createdAt = LocalDateTime .of(2024 , 8 , 30 , 8 , 10 ),
437
+ ),
438
+ ),
439
+ )
440
+ val uiState = ChatUiState (messageGroupStream = flowOf(messageGroups))
441
+
442
+ MaterialTheme {
443
+ ChatScreen (
444
+ uiState = uiState,
445
+ snackbarHostState = SnackbarHostState (),
446
+ onBackClick = {},
447
+ onInputUpdate = {},
448
+ onCameraClick = {},
449
+ onAlbumClick = {},
450
+ onRemoveImageClick = {},
451
+ onSendClick = {},
452
+ onRegenerateOnErrorClick = {},
453
+ onSelectResponseClick = {},
454
+ onRegenerateResponseClick = {},
455
+ )
456
+ }
457
+ }
0 commit comments