Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package co.touchlab.droidcon.ui

import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.isSystemInDarkTheme
Copy link

Copilot AI Oct 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The isSystemInDarkTheme import is unused and should be removed. The code uses MaterialTheme.colorScheme for theming instead.

Suggested change
import androidx.compose.foundation.isSystemInDarkTheme

Copilot uses AI. Check for mistakes.
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
Expand All @@ -11,13 +12,15 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.RadioButton
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import co.touchlab.droidcon.domain.entity.Conference
import co.touchlab.droidcon.ui.theme.DroidconTheme
Copy link

Copilot AI Oct 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The DroidconTheme import is unused and should be removed. The dialog relies on MaterialTheme which is already provided by the parent composable hierarchy.

Suggested change
import co.touchlab.droidcon.ui.theme.DroidconTheme

Copilot uses AI. Check for mistakes.

@Composable
fun FirstRunConferenceSelector(
Expand All @@ -27,56 +30,57 @@ fun FirstRunConferenceSelector(
selectedConference: Conference? = null,
) {
Dialog(onDismissRequest = onDismiss) {
Column(
modifier = Modifier
.fillMaxWidth()
.background(
color = MaterialTheme.colorScheme.surface,
shape = RoundedCornerShape(16.dp),
)
.padding(16.dp),
Surface(
shape = RoundedCornerShape(16.dp),
) {
Text(
text = "Welcome to Droidcon!",
style = MaterialTheme.typography.headlineSmall,
modifier = Modifier.padding(bottom = 16.dp),
)
Column(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp),
) {
Text(
text = "Welcome to Droidcon!",
style = MaterialTheme.typography.headlineSmall,
color = MaterialTheme.colorScheme.onBackground,
modifier = Modifier.padding(bottom = 16.dp),
)

Text(
text = "Please select a conference to get started:",
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(bottom = 16.dp),
)
Text(
text = "Please select a conference to get started:",
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(bottom = 16.dp),
)

LazyColumn {
items(conferences) { conference ->
val isSelected = conference.id == selectedConference?.id
Row(
modifier = Modifier
.fillMaxWidth()
.clickable {
// Explicitly call selection function
onConferenceSelected(conference)
}
.padding(vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
RadioButton(
selected = isSelected,
onClick = {
// Handle radio button click separately
onConferenceSelected(conference)
},
)
Text(
text = if (isSelected) {
"${conference.name} (Selected)"
} else {
conference.name
},
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(start = 8.dp),
)
LazyColumn {
items(conferences) { conference ->
val isSelected = conference.id == selectedConference?.id
Row(
modifier = Modifier
.fillMaxWidth()
.clickable {
// Explicitly call selection function
onConferenceSelected(conference)
}
.padding(vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
RadioButton(
selected = isSelected,
onClick = {
// Handle radio button click separately
onConferenceSelected(conference)
},
)
Text(
text = if (isSelected) {
"${conference.name} (Selected)"
} else {
conference.name
},
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(start = 8.dp),
)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,9 @@ private fun MainAppBody(waitForLoadedContextModel: WaitForLoadedContextModel, se
}

if (conferences.size == 1) {
onConferenceSelected(conferences.get(0))
LaunchedEffect(conferences) {
onConferenceSelected(conferences.first())
}
} else if (conferences.size > 1) {
FirstRunConferenceSelector(
conferences = conferences,
Expand Down
Loading