Skip to content

Commit

Permalink
Move files into the correct repositories
Browse files Browse the repository at this point in the history
  • Loading branch information
pauljohanneskraft committed Nov 11, 2024
1 parent e3baa1b commit 0a94bc5
Show file tree
Hide file tree
Showing 38 changed files with 96 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package edu.stanford.bdh.engagehf.contact.data

import com.google.firebase.firestore.DocumentSnapshot
import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import edu.stanford.spezi.modules.contact.model.Contact
import edu.stanford.spezi.modules.contact.model.ContactOption
import edu.stanford.spezi.modules.contact.model.call
Expand All @@ -19,11 +19,12 @@ class ContactDocumentToContactMapper @Inject constructor() {
}
val components = contactName.split(", ")
val nameComponents = components.firstOrNull()?.split(" ")
val personNameComponents = PersonNameComponents(
givenName = nameComponents?.getOrNull(0),
familyName = nameComponents?.drop(1)
?.joinToString(" ") // assigning everything besides given name here
)
val personNameComponents =
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents(
givenName = nameComponents?.getOrNull(0),
familyName = nameComponents?.drop(1)
?.joinToString(" ") // assigning everything besides given name here
)
val title = components.lastOrNull()
val contactEmail = document.getString(CONTACT_EMAIL_FIELD)
val phone = document.getString(CONTACT_PHONE_FIELD)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import edu.stanford.spezi.core.design.theme.Spacings
import edu.stanford.spezi.core.design.theme.SpeziTheme
import edu.stanford.spezi.core.design.theme.TextStyles
import edu.stanford.spezi.core.design.theme.ThemePreviews
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.notification.R
import edu.stanford.spezi.modules.contact.ContactComposable
import edu.stanford.spezi.modules.contact.model.Contact
Expand Down Expand Up @@ -109,7 +109,10 @@ private class ContactUiStateProvider : PreviewParameterProvider<ContactScreenVie
ContactScreenViewModel.UiState.Error("An error occurred"),
ContactScreenViewModel.UiState.ContactLoaded(
contact = Contact(
name = PersonNameComponents(givenName = "Leland", familyName = "Stanford"),
name = edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents(
givenName = "Leland",
familyName = "Stanford"
),
image = ImageResource.Vector(Icons.Default.AccountBox),
title = StringResource("University Founder"),
description = StringResource(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package edu.stanford.bdh.engagehf.contact.data
import com.google.common.truth.Truth.assertThat
import com.google.firebase.firestore.DocumentSnapshot
import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import io.mockk.every
import io.mockk.mockk
import org.junit.Test
Expand Down Expand Up @@ -60,7 +60,7 @@ class ContactDocumentToContactMapperTest {
// then
with(result) {
assertThat(name).isEqualTo(
PersonNameComponents(
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents(
givenName = givenGivenName,
familyName = givenFamilyName,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.validation.personalInfo.fields.NameFieldRow

@Composable
fun NameFieldsTestComposable() {
val name = remember { mutableStateOf(PersonNameComponents()) }
val name = remember { mutableStateOf(edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents()) }

Column {
NameFieldRow(StringResource("First Name"), name, PersonNameComponents::givenName) {
NameFieldRow(StringResource("First Name"), name, edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents::givenName) {

Check warning on line 18 in core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt#L18 <detekt.MaximumLineLength>

Exceeded max line length (140)
Raw output
/github/workspace/core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt:18:1: warning: Exceeded max line length (140) (detekt.MaximumLineLength)

Check warning on line 18 in core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt#L18 <detekt.MaxLineLength>

Line detected, which is longer than the defined maximum line length in the code style.
Raw output
/github/workspace/core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt:18:1: warning: Line detected, which is longer than the defined maximum line length in the code style. (detekt.MaxLineLength)
Text("enter your first name")
}

HorizontalDivider()

NameFieldRow(StringResource("Last Name"), name, PersonNameComponents::familyName) {
NameFieldRow(StringResource("Last Name"), name, edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents::familyName) {

Check warning on line 24 in core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt#L24 <detekt.MaximumLineLength>

Exceeded max line length (140)
Raw output
/github/workspace/core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt:24:1: warning: Exceeded max line length (140) (detekt.MaximumLineLength)

Check warning on line 24 in core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt#L24 <detekt.MaxLineLength>

Line detected, which is longer than the defined maximum line length in the code style.
Raw output
/github/workspace/core/design/src/androidTest/kotlin/edu/stanford/spezi/core/design/personalInfo/composables/NameFieldsTestComposable.kt:24:1: warning: Line detected, which is longer than the defined maximum line length in the code style. (detekt.MaxLineLength)
Text("enter your last name")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import edu.stanford.spezi.core.design.component.ImageResource
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.validation.personalInfo.UserProfileComposable
import kotlinx.coroutines.delay
import kotlin.time.Duration.Companion.seconds
Expand All @@ -18,11 +18,17 @@ fun UserProfileTestComposable() {
Column {
UserProfileComposable(
Modifier.height(100.dp),
PersonNameComponents(givenName = "Paul", familyName = "Schmiedmayer")
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents(
givenName = "Paul",
familyName = "Schmiedmayer"
)
)
UserProfileComposable(
Modifier.height(200.dp),
PersonNameComponents(givenName = "Leland", familyName = "Stanford")
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents(
givenName = "Leland",
familyName = "Stanford"
)
) {
delay(0.5.seconds)
return@UserProfileComposable ImageResource.Vector(Icons.Default.Person)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.personalInfo
package edu.stanford.spezi.core.design.views.personalInfo

data class PersonNameComponents(
var namePrefix: String? = null,
Expand All @@ -12,21 +12,21 @@ data class PersonNameComponents(
ABBREVIATED, SHORT, MEDIUM, LONG
}

fun formatted(style: FormatStyle = FormatStyle.LONG): String {
fun formatted(style: edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle = edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle.LONG): String {

Check warning on line 15 in core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/PersonNameComponents.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/PersonNameComponents.kt#L15 <detekt.MaximumLineLength>

Exceeded max line length (140)
Raw output
/github/workspace/core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/PersonNameComponents.kt:15:1: warning: Exceeded max line length (140) (detekt.MaximumLineLength)

Check warning on line 15 in core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/PersonNameComponents.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/PersonNameComponents.kt#L15 <detekt.MaxLineLength>

Line detected, which is longer than the defined maximum line length in the code style.
Raw output
/github/workspace/core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/PersonNameComponents.kt:15:1: warning: Line detected, which is longer than the defined maximum line length in the code style. (detekt.MaxLineLength)
return when (style) {
FormatStyle.LONG -> listOfNotNull(
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle.LONG -> listOfNotNull(
namePrefix,
givenName,
nickname?.let { "\"$it\"" },
middleName,
familyName,
nameSuffix
).joinToString(" ")
FormatStyle.MEDIUM ->
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle.MEDIUM ->
TODO("Not yet implemented.")
FormatStyle.SHORT ->
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle.SHORT ->
TODO("Not yet implemented.")
FormatStyle.ABBREVIATED -> listOfNotNull(
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle.ABBREVIATED -> listOfNotNull(
givenName,
middleName,
familyName,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.personalInfo
package edu.stanford.spezi.core.design.views.personalInfo

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
Expand Down Expand Up @@ -30,7 +30,7 @@ import kotlin.math.min
@Composable
fun UserProfileComposable(
modifier: Modifier = Modifier,
name: PersonNameComponents,
name: edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents,
imageLoader: suspend () -> ImageResource? = { null },
) {
var size by remember { mutableStateOf(IntSize.Zero) }
Expand All @@ -43,7 +43,7 @@ fun UserProfileComposable(
}

val formattedName = remember(name) {
name.formatted(PersonNameComponents.FormatStyle.ABBREVIATED)
name.formatted(edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents.FormatStyle.ABBREVIATED)
}

Box(modifier.onSizeChanged { size = it }.aspectRatio(1f)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.personalInfo.fields
package edu.stanford.spezi.core.design.views.personalInfo.fields

import androidx.compose.foundation.layout.Column

Check warning on line 3 in core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/fields/NameFieldRow.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/fields/NameFieldRow.kt#L3 <detekt.ImportOrdering>

Imports must be ordered in lexicographic order without any empty lines in-between with "java", "javax", "kotlin" and aliases in the end
Raw output
/github/workspace/core/design/src/main/kotlin/edu/stanford/spezi/core/design/views/personalInfo/fields/NameFieldRow.kt:3:1: warning: Imports must be ordered in lexicographic order without any empty lines in-between with "java", "javax", "kotlin" and aliases in the end (detekt.ImportOrdering)
import androidx.compose.foundation.layout.padding
Expand All @@ -12,15 +12,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.theme.ThemePreviews
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.validation.views.layout.DescriptionGridRow
import kotlin.reflect.KMutableProperty1

@Composable
fun NameFieldRow(
description: StringResource,
name: MutableState<PersonNameComponents>,
component: KMutableProperty1<PersonNameComponents, String?>,
name: MutableState<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents>,
component: KMutableProperty1<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents, String?>,
label: @Composable () -> Unit,
) {
NameFieldRow(
Expand All @@ -33,8 +33,8 @@ fun NameFieldRow(

@Composable
fun NameFieldRow(
name: MutableState<PersonNameComponents>,
component: KMutableProperty1<PersonNameComponents, String?>,
name: MutableState<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents>,
component: KMutableProperty1<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents, String?>,
description: @Composable () -> Unit,
label: @Composable () -> Unit,
) {
Expand All @@ -51,12 +51,12 @@ fun NameFieldRow(
@ThemePreviews
@Composable
private fun NameFieldRowPreview() {
val name = remember { mutableStateOf(PersonNameComponents()) }
val name = remember { mutableStateOf(edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents()) }

Column {
NameFieldRow(
name,
PersonNameComponents::givenName,
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents::givenName,
description = { Text("First") }
) {
Text("enter first name")
Expand All @@ -67,7 +67,7 @@ private fun NameFieldRowPreview() {
// Last Name Field
NameFieldRow(
name,
PersonNameComponents::familyName,
edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents::familyName,
description = { Text("Last") }
) {
Text("enter last name")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.personalInfo.fields
package edu.stanford.spezi.core.design.views.personalInfo.fields

import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.Text
Expand All @@ -9,14 +9,14 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.theme.ThemePreviews
import edu.stanford.spezi.core.design.validation.personalInfo.PersonNameComponents
import edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents
import kotlin.reflect.KMutableProperty1

@Composable
fun NameTextField(
label: StringResource,
name: MutableState<PersonNameComponents>,
component: KMutableProperty1<PersonNameComponents, String?>,
name: MutableState<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents>,
component: KMutableProperty1<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents, String?>,
prompt: StringResource? = null,
) {
NameTextField(name, component, prompt) {
Expand All @@ -26,8 +26,8 @@ fun NameTextField(

@Composable
fun NameTextField(
name: MutableState<PersonNameComponents>,
component: KMutableProperty1<PersonNameComponents, String?>,
name: MutableState<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents>,
component: KMutableProperty1<edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents, String?>,
prompt: StringResource? = null,
label: @Composable () -> Unit,
) {
Expand All @@ -53,9 +53,9 @@ fun NameTextField(
@ThemePreviews
@Composable
private fun NameTextFieldPreview() {
val name = remember { mutableStateOf(PersonNameComponents()) }
val name = remember { mutableStateOf(edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents()) }

NameTextField(name, PersonNameComponents::givenName) {
NameTextField(name, edu.stanford.spezi.core.design.views.personalInfo.PersonNameComponents::givenName) {
Text("Enter first name")
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation
package edu.stanford.spezi.core.design.views.validation

enum class CascadingValidationEffect {
CONTINUE, INTERCEPT
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation
package edu.stanford.spezi.core.design.views.validation

import androidx.compose.runtime.mutableStateOf
import edu.stanford.spezi.core.design.validation.validation.configuration.DEFAULT_VALIDATION_DEBOUNCE_DURATION
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation
package edu.stanford.spezi.core.design.views.validation

import android.annotation.SuppressLint
import androidx.compose.runtime.Composable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation
package edu.stanford.spezi.core.design.views.validation

import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.validation.validation.state.FailedValidationResult
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation
package edu.stanford.spezi.core.design.views.validation

import edu.stanford.spezi.core.design.component.StringResource
import java.nio.charset.StandardCharsets
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.configuration
package edu.stanford.spezi.core.design.views.validation.configuration

import androidx.compose.runtime.compositionLocalOf
import kotlin.time.Duration.Companion.seconds
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.configuration
package edu.stanford.spezi.core.design.views.validation.configuration

import androidx.compose.runtime.compositionLocalOf
import edu.stanford.spezi.core.design.validation.validation.ValidationEngine
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.configuration
package edu.stanford.spezi.core.design.views.validation.configuration

import androidx.compose.runtime.compositionLocalOf
import edu.stanford.spezi.core.design.validation.validation.ValidationEngine
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.state
package edu.stanford.spezi.core.design.views.validation.state

import androidx.compose.runtime.MutableState
import edu.stanford.spezi.core.design.validation.validation.ValidationEngine
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.state
package edu.stanford.spezi.core.design.views.validation.state

import androidx.compose.runtime.compositionLocalOf

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.state
package edu.stanford.spezi.core.design.views.validation.state

import edu.stanford.spezi.core.design.component.StringResource
import edu.stanford.spezi.core.design.validation.validation.ValidationRule
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.state
package edu.stanford.spezi.core.design.views.validation.state

import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.state
package edu.stanford.spezi.core.design.views.validation.state

data class ValidationContext internal constructor(
private val entries: List<CapturedValidationState> = emptyList(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.views
package edu.stanford.spezi.core.design.views.validation.views

import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.validation.views
package edu.stanford.spezi.core.design.views.validation.views

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.views.compositionLocal
package edu.stanford.spezi.core.design.views.views.compositionLocal

import androidx.compose.runtime.compositionLocalOf
import kotlin.time.Duration.Companion.milliseconds
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.views.layout
package edu.stanford.spezi.core.design.views.views.layout

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.views.model
package edu.stanford.spezi.core.design.views.views.model

interface OperationState {
val representation: ViewState
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package edu.stanford.spezi.core.design.validation.views.model
package edu.stanford.spezi.core.design.views.views.model

import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
Expand Down
Loading

0 comments on commit 0a94bc5

Please sign in to comment.