Skip to content

Commit

Permalink
refactor(schedules-screens): create dedicated module for screen compo…
Browse files Browse the repository at this point in the history
…nents.
  • Loading branch information
GerardPaligot committed Nov 11, 2023
1 parent 821d903 commit ad9ec05
Show file tree
Hide file tree
Showing 13 changed files with 56 additions and 23 deletions.
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ include(":backend")
include(":benchmark")
include(":theme-m3:main:mobile")
include(":theme-m3:schedules:schedules-ui")
include(":theme-m3:schedules:schedules-screens")
include(":theme-m3:schedules:schedules-feature")
include(":theme-m3:speakers:speakers-ui")
include(":theme-m3:speakers:speakers-screens")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import org.gdglille.devfest.android.theme.m3.navigation.ActionIds
import org.gdglille.devfest.android.theme.m3.navigation.Screen
import org.gdglille.devfest.android.theme.m3.networking.feature.NetworkingPages
import org.gdglille.devfest.android.theme.m3.partners.feature.PartnersListVM
import org.gdglille.devfest.android.theme.m3.schedules.feature.ScheduleListVM
import org.gdglille.devfest.android.theme.m3.schedules.feature.ScheduleListOrientableVM
import org.gdglille.devfest.android.theme.m3.speakers.feature.SpeakersListOrientableVM
import org.gdglille.devfest.models.ui.ExportNetworkingUi
import org.gdglille.devfest.repositories.AgendaRepository
Expand Down Expand Up @@ -149,7 +149,7 @@ fun Home(
},
builder = {
composable(Screen.Agenda.route) {
ScheduleListVM(
ScheduleListOrientableVM(
tabs = screenUi.tabActionsUi,
agendaRepository = agendaRepository,
alarmScheduler = alarmScheduler,
Expand Down
1 change: 1 addition & 0 deletions theme-m3/schedules/schedules-feature/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ android {

dependencies {
implementation(projects.shared.core)
implementation(projects.themeM3.schedules.schedulesScreens)
implementation(projects.themeM3.schedules.schedulesUi)
implementation(projects.themeM3.navigation)
implementation(projects.themeM3.style.schedules)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.viewmodel.compose.viewModel
import org.gdglille.devfest.android.theme.m3.schedules.screens.AgendaFiltersScreen
import org.gdglille.devfest.android.theme.m3.style.R
import org.gdglille.devfest.repositories.AgendaRepository

Expand All @@ -24,7 +25,7 @@ fun AgendaFiltersVM(
is AgendaFiltersUiState.Failure -> Text(text = stringResource(id = R.string.text_error))
is AgendaFiltersUiState.Success -> {
val filtersUi = (uiState.value as AgendaFiltersUiState.Success).filters
AgendaFilters(
AgendaFiltersScreen(
filtersUi = filtersUi,
onFavoriteClick = viewModel::applyFavoriteFilter,
onCategoryClick = viewModel::applyCategoryFilter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.viewmodel.compose.viewModel
import io.openfeedback.android.viewmodels.OpenFeedbackFirebaseConfig
import org.gdglille.devfest.android.theme.m3.schedules.screens.ScheduleDetailScreen
import org.gdglille.devfest.android.theme.m3.style.R
import org.gdglille.devfest.repositories.AgendaRepository

Expand All @@ -29,7 +30,7 @@ fun ScheduleDetailVM(
when (uiState.value) {
is ScheduleUiState.Loading -> Text(text = stringResource(id = R.string.text_loading))
is ScheduleUiState.Failure -> Text(text = stringResource(id = R.string.text_error))
is ScheduleUiState.Success -> ScheduleDetail(
is ScheduleUiState.Success -> ScheduleDetailScreen(
talk = (uiState.value as ScheduleUiState.Success).talk,
openfeedbackFirebaseConfig = openfeedbackFirebaseConfig,
modifier = modifier,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.FlowPreview
import org.gdglille.devfest.AlarmScheduler
import org.gdglille.devfest.android.theme.m3.schedules.screens.ScheduleListOrientable
import org.gdglille.devfest.android.theme.m3.schedules.screens.ScheduleListVerticalScreen
import org.gdglille.devfest.android.theme.m3.style.R
import org.gdglille.devfest.android.theme.m3.style.actions.TabActionsUi
import org.gdglille.devfest.repositories.AgendaRepository
Expand All @@ -20,7 +22,7 @@ import org.gdglille.devfest.repositories.AgendaRepository
@ExperimentalCoroutinesApi
@FlowPreview
@Composable
fun ScheduleListVM(
fun ScheduleListOrientableVM(
tabs: TabActionsUi,
agendaRepository: AgendaRepository,
alarmScheduler: AlarmScheduler,
Expand All @@ -38,7 +40,7 @@ fun ScheduleListVM(
val context = LocalContext.current
val uiState = viewModel.uiState.collectAsState()
when (uiState.value) {
is ScheduleListUiState.Loading -> ScheduleListVertical(
is ScheduleListUiState.Loading -> ScheduleListVerticalScreen(
agenda = (uiState.value as ScheduleListUiState.Loading).agenda.first(),
modifier = modifier,
isLoading = true,
Expand Down
1 change: 1 addition & 0 deletions theme-m3/schedules/schedules-screens/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
24 changes: 24 additions & 0 deletions theme-m3/schedules/schedules-screens/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
plugins {
id("conferences4hall.android.library")
id("conferences4hall.android.library.compose")
id("conferences4hall.quality")
}

android {
namespace = "org.gdglille.devfest.android.theme.m3.schedules.screens"
}

dependencies {
implementation(projects.shared.core)
implementation(projects.themeM3.schedules.schedulesUi)
implementation(projects.themeM3.navigation)
implementation(projects.themeM3.style.schedules)
implementation(projects.themeM3.style.speakers)
implementation(projects.themeM3.style.theme)

implementation(libs.kotlinx.collections)

implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.tooling)
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.gdglille.devfest.android.theme.m3.schedules.feature
package org.gdglille.devfest.android.theme.m3.schedules.screens

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
Expand All @@ -20,7 +20,7 @@ import org.gdglille.devfest.models.ui.FiltersUi
import org.gdglille.devfest.models.ui.FormatUi

@Composable
fun AgendaFilters(
fun AgendaFiltersScreen(
filtersUi: FiltersUi,
onFavoriteClick: (selected: Boolean) -> Unit,
onCategoryClick: (categoryUi: CategoryUi, selected: Boolean) -> Unit,
Expand Down Expand Up @@ -57,7 +57,7 @@ fun AgendaFilters(
@Composable
private fun AgendaFiltersPreview() {
Conferences4HallTheme {
AgendaFilters(
AgendaFiltersScreen(
filtersUi = FiltersUi.fake,
onFavoriteClick = {},
onCategoryClick = { _, _ -> },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.gdglille.devfest.android.theme.m3.schedules.feature
package org.gdglille.devfest.android.theme.m3.schedules.screens

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Spacer
Expand Down Expand Up @@ -30,7 +30,7 @@ import org.gdglille.devfest.models.ui.TalkUi

@ExperimentalMaterial3Api
@Composable
fun ScheduleDetail(
fun ScheduleDetailScreen(
talk: TalkUi,
openfeedbackFirebaseConfig: OpenFeedbackFirebaseConfig,
onBackClicked: () -> Unit,
Expand Down Expand Up @@ -104,7 +104,7 @@ fun ScheduleDetail(
@Composable
private fun ScheduleDetailPreview() {
Conferences4HallTheme {
ScheduleDetail(
ScheduleDetailScreen(
talk = TalkUi.fake,
openfeedbackFirebaseConfig = OpenFeedbackFirebaseConfig(
context = LocalContext.current,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.gdglille.devfest.android.theme.m3.schedules.feature
package org.gdglille.devfest.android.theme.m3.schedules.screens

import android.annotation.SuppressLint
import androidx.compose.foundation.layout.Arrangement
Expand All @@ -24,7 +24,7 @@ import org.gdglille.devfest.models.ui.AgendaUi
import org.gdglille.devfest.models.ui.TalkItemUi

@Composable
fun ScheduleListHorizontal(
fun ScheduleListHorizontalScreen(
agenda: AgendaUi,
onTalkClicked: (id: String) -> Unit,
onFavoriteClicked: (TalkItemUi) -> Unit,
Expand Down Expand Up @@ -71,10 +71,10 @@ fun ScheduleListHorizontal(
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@Preview(device = PHONE_LANDSCAPE)
@Composable
private fun AgendaPreview() {
private fun ScheduleListHorizontalScreenPreview() {
Conferences4HallTheme {
Scaffold {
ScheduleListHorizontal(
ScheduleListHorizontalScreen(
agenda = AgendaUi.fake,
onTalkClicked = {},
onFavoriteClicked = { }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.gdglille.devfest.android.theme.m3.schedules.feature
package org.gdglille.devfest.android.theme.m3.schedules.screens

import android.content.res.Configuration
import androidx.compose.foundation.ExperimentalFoundationApi
Expand All @@ -10,6 +10,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration
import kotlinx.collections.immutable.ImmutableList
import org.gdglille.devfest.android.theme.m3.schedules.screens.ScheduleListHorizontalScreen
import org.gdglille.devfest.android.theme.m3.schedules.screens.ScheduleListVerticalScreen
import org.gdglille.devfest.models.ui.AgendaUi
import org.gdglille.devfest.models.ui.TalkItemUi

Expand All @@ -30,15 +32,15 @@ fun ScheduleListOrientable(
verticalAlignment = Alignment.Top
) { page ->
if (orientation.orientation == Configuration.ORIENTATION_LANDSCAPE) {
ScheduleListHorizontal(
ScheduleListHorizontalScreen(
agenda = agendas[page],
modifier = modifier,
onTalkClicked = onTalkClicked,
onFavoriteClicked = onFavoriteClicked,
isLoading = isLoading
)
} else {
ScheduleListVertical(
ScheduleListVerticalScreen(
agenda = agendas[page],
modifier = modifier,
onTalkClicked = onTalkClicked,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.gdglille.devfest.android.theme.m3.schedules.feature
package org.gdglille.devfest.android.theme.m3.schedules.screens

import android.annotation.SuppressLint
import androidx.compose.foundation.layout.Arrangement
Expand All @@ -21,7 +21,7 @@ import org.gdglille.devfest.models.ui.AgendaUi
import org.gdglille.devfest.models.ui.TalkItemUi

@Composable
fun ScheduleListVertical(
fun ScheduleListVerticalScreen(
agenda: AgendaUi,
onTalkClicked: (id: String) -> Unit,
onFavoriteClicked: (TalkItemUi) -> Unit,
Expand Down Expand Up @@ -66,10 +66,10 @@ fun ScheduleListVertical(
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@Preview
@Composable
private fun AgendaPreview() {
private fun ScheduleListVerticalScreenPreview() {
Conferences4HallTheme {
Scaffold {
ScheduleListVertical(
ScheduleListVerticalScreen(
agenda = AgendaUi.fake,
onTalkClicked = {},
onFavoriteClicked = { }
Expand Down

0 comments on commit ad9ec05

Please sign in to comment.