Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
@@ -1,3 +1,5 @@
@file:Suppress("MatchingDeclarationName")

package friends.mobile.designsystem.components

import androidx.compose.foundation.background
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import androidx.compose.material.icons.filled.Group
import androidx.compose.material.icons.filled.LocationOn
import androidx.compose.material.icons.filled.PersonOff
import androidx.compose.material.icons.filled.RadioButtonUnchecked
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
Expand All @@ -34,7 +35,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import friends.mobile.R
import friends.mobile.designsystem.components.ButtonFactory
import friends.mobile.designsystem.components.LoadingView
Expand Down Expand Up @@ -188,7 +188,11 @@ private fun EventDetailsSection(event: Event) {
}

if (!event.location.isNullOrEmpty()) {
DetailRow(icon = Icons.Default.LocationOn, label = stringResource(R.string.label_location), value = event.location!!)
DetailRow(
icon = Icons.Default.LocationOn,
label = stringResource(R.string.label_location),
value = event.location!!,
)
}
}
}
Expand Down Expand Up @@ -287,9 +291,9 @@ private fun ParticipantCard(participant: EventParticipant) {
)
Text(
text = when (participant.status) {
ParticipationStatus.INVITED -> stringResource(R.string.pending_status)
else -> participant.status.name.lowercase().replaceFirstChar { it.uppercase() }
},
ParticipationStatus.INVITED -> stringResource(R.string.pending_status)
else -> participant.status.name.lowercase().replaceFirstChar { it.uppercase() }
},
style = DesignTheme.Typography.bodySmallest,
color = statusColor,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ internal data class FriendActionCallbacks(
val onAcceptRequest: (String) -> Unit,
val onRejectRequest: (String) -> Unit,
val onRemoveFriend: (String) -> Unit,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.compose.ui.res.stringResource
import friends.mobile.R
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.designsystem.components.ButtonFactory
import friends.mobile.designsystem.components.Dimension
import friends.mobile.designsystem.components.ErrorBanner
import friends.mobile.designsystem.components.LoadingView
import friends.mobile.designsystem.components.UserView
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.feature.friends.domain.model.User
import friends.mobile.feature.friends.presentation.friendsProfile.FriendProfileAction
import friends.mobile.feature.friends.presentation.friendsProfile.FriendProfileEvent
import friends.mobile.feature.friends.presentation.friendsProfile.FriendProfileViewModel
import friends.mobile.feature.friends.presentation.friendsProfile.FriendProfileViewState
import friends.mobile.feature.friends.presentation.friendsProfile.FriendshipStatus
import friends.mobile.feature.wishplaces.domain.model.WishPlace
import friends.mobile.feature.wishplaces.WishPlaceDetailBottomSheet
import friends.mobile.feature.wishplaces.WishPlacesMode
import friends.mobile.feature.wishplaces.WishPlacesSection
import friends.mobile.feature.wishplaces.domain.model.WishPlace
import kotlinx.coroutines.flow.collectLatest
import org.koin.androidx.compose.koinViewModel

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Group
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
Expand All @@ -31,14 +32,13 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.res.stringResource
import friends.mobile.R
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.designsystem.components.IndicatorFactory
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.feature.friends.domain.model.User
import friends.mobile.feature.friends.presentation.friends.RequestTab

Expand Down Expand Up @@ -233,8 +233,7 @@ fun TabSelector(
.weight(1f)
.clip(RoundedCornerShape(DesignTheme.CornerRadius.capsule))
.background(
if (isSelected) MaterialTheme.colorScheme.surface
else Color.Transparent
if (isSelected) { MaterialTheme.colorScheme.surface } else { Color.Transparent }
)
.clickable {
localSelected = tab
Expand All @@ -249,14 +248,19 @@ fun TabSelector(
RequestTab.INCOMING -> stringResource(R.string.friends_tab_incoming)
RequestTab.OUTGOING -> stringResource(R.string.friends_tab_outgoing)
},
style = if (isSelected) DesignTheme.Typography.bodySmall.copy(fontWeight = FontWeight.SemiBold)
else DesignTheme.Typography.bodySmall,
color = if (isSelected) MaterialTheme.colorScheme.onSurface
else MaterialTheme.colorScheme.onSurfaceVariant,
style = if (isSelected) {
DesignTheme.Typography.bodySmall.copy(fontWeight = FontWeight.SemiBold)
} else {
DesignTheme.Typography.bodySmall
},
color = if (isSelected) {
MaterialTheme.colorScheme.onSurface
} else {
MaterialTheme.colorScheme.onSurfaceVariant
},
)
}
}
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
Expand All @@ -22,14 +23,13 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import friends.mobile.R
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.designsystem.components.ErrorBanner
import friends.mobile.designsystem.components.LoadingView
import friends.mobile.designsystem.components.SearchBar
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.feature.friends.domain.model.User
import friends.mobile.feature.friends.presentation.friends.FriendsAction
import friends.mobile.feature.friends.presentation.friends.FriendsEvent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import androidx.compose.material3.TimePicker
import androidx.compose.material3.TimePickerDefaults
import androidx.compose.material3.TimePickerLayoutType
import androidx.compose.material3.TimePickerState
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import androidx.compose.material3.rememberDatePickerState
import androidx.compose.material3.rememberTimePickerState
import androidx.compose.runtime.Composable
Expand All @@ -60,18 +61,17 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import friends.mobile.R
import friends.mobile.designsystem.components.ErrorBanner
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.feature.events.domain.model.Event
import friends.mobile.feature.main.presentation.MainViewAction as MainEventAction
import friends.mobile.feature.main.presentation.MainViewModel
import friends.mobile.feature.main.presentation.MainViewState
import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale
import friends.mobile.feature.main.presentation.MainViewAction as MainEventAction

@OptIn(ExperimentalMaterial3Api::class)
@Composable
Expand Down Expand Up @@ -441,7 +441,11 @@ private fun EventCard(
) {
val tintColor = if (isPending) Color(0xFFFF9800) else MaterialTheme.colorScheme.tertiary
val badgeIcon = if (isPending) Icons.Default.Schedule else Icons.Default.CheckCircle
val badgeText = if (isPending) stringResource(R.string.main_section_pending) else stringResource(R.string.main_section_active)
val badgeText = if (isPending) {
stringResource(R.string.main_section_pending)
} else {
stringResource(R.string.main_section_active)
}

Column(
modifier = Modifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,28 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
import friends.mobile.feature.calendar.BusyDaysView
import androidx.compose.ui.res.stringResource
import friends.mobile.R
import friends.mobile.designsystem.components.ButtonFactory
import friends.mobile.designsystem.components.Dimension
import friends.mobile.designsystem.components.ErrorBanner
import friends.mobile.designsystem.components.LoadingView
import friends.mobile.designsystem.components.UserView
import friends.mobile.designsystem.theme.DesignTheme
import friends.mobile.feature.calendar.BusyDaysView
import friends.mobile.feature.profile.domain.model.Profile
import friends.mobile.feature.profile.presentation.profile.ProfileAction
import friends.mobile.feature.profile.presentation.profile.ProfileEvent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ fun WishPlacesSection(
WishPlacesContentBody(
places = current.places,
mode = mode,
userId = userId,
onPlaceClick = { selectedPlace = it },
onDeletePlace = { viewModel.obtainEvent(WishPlacesEvent.ArchivePlace(userId = userId, id = it)) },
)
Expand Down Expand Up @@ -156,7 +155,6 @@ private fun WishPlacesLoadingContent() {
private fun WishPlacesContentBody(
places: List<WishPlace>,
mode: WishPlacesMode,
userId: String,
onPlaceClick: (WishPlace) -> Unit,
onDeletePlace: (String) -> Unit,
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package friends.mobile.feature.archive.presentation

import friends.mobile.core.analytics.AnalyticsEvent
import friends.mobile.core.domain.model.ResultWrapper
import friends.mobile.core.domain.model.getErrorMessage
import friends.mobile.core.domain.model.mapApiErrorToUserFriendly
import friends.mobile.core.analytics.AnalyticsEvent
import friends.mobile.core.viewmodel.BaseViewModel
import friends.mobile.feature.events.domain.usecase.GetArchivedEventsUseCase
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -58,4 +58,4 @@ class ArchiveEventsViewModel : BaseViewModel<ArchiveViewState, Unit, ArchiveView
val currentState = viewState as? ArchiveViewState.Content ?: return
viewState = transform(currentState)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package friends.mobile.feature.auth.data.remote

import friends.mobile.feature.auth.domain.storage.TokenStorage
import friends.mobile.feature.auth.domain.model.AuthToken
import friends.mobile.feature.auth.domain.storage.TokenStorage
import io.ktor.client.HttpClient
import io.ktor.client.plugins.HttpSend
import io.ktor.client.plugins.plugin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import friends.mobile.feature.auth.data.remote.dto.LoginRequestDto
import friends.mobile.feature.auth.data.remote.dto.LogoutRequestDto
import friends.mobile.feature.auth.data.remote.dto.RefreshRequestDto
import friends.mobile.feature.auth.data.remote.dto.RegisterRequestDto
import friends.mobile.feature.auth.domain.storage.TokenStorage
import friends.mobile.feature.auth.domain.model.AuthSession
import friends.mobile.feature.auth.domain.model.AuthToken
import friends.mobile.feature.auth.domain.repository.AuthRepository
import friends.mobile.feature.auth.domain.storage.TokenStorage

private const val HTTP_UNAUTHORIZED = 401

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import friends.mobile.feature.auth.data.remote.AuthApi
import friends.mobile.feature.auth.data.remote.AuthenticatedClient
import friends.mobile.feature.auth.data.repository.AuthRepositoryImpl
import friends.mobile.feature.auth.data.storage.TokenStorageImpl
import friends.mobile.feature.auth.domain.storage.TokenStorage
import friends.mobile.feature.auth.data.usecase.GetStoredSessionUseCaseImpl
import friends.mobile.feature.auth.data.usecase.LoginUseCaseImpl
import friends.mobile.feature.auth.data.usecase.LogoutUseCaseImpl
import friends.mobile.feature.auth.data.usecase.RegisterUseCaseImpl
import friends.mobile.feature.auth.domain.repository.AuthRepository
import friends.mobile.feature.auth.domain.storage.TokenStorage
import friends.mobile.feature.auth.domain.usecase.GetStoredSessionUseCase
import friends.mobile.feature.auth.domain.usecase.LoginUseCase
import friends.mobile.feature.auth.domain.usecase.LogoutUseCase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package friends.mobile.feature.auth.presentation.login

import friends.mobile.core.analytics.AnalyticsEvent
import friends.mobile.core.domain.model.ResultWrapper
import friends.mobile.core.domain.model.getErrorMessage
import friends.mobile.core.domain.model.mapApiErrorToUserFriendly
import friends.mobile.core.analytics.AnalyticsEvent
import friends.mobile.core.viewmodel.BaseViewModel
import friends.mobile.feature.auth.domain.usecase.LoginUseCase
import kotlinx.coroutines.launch
Expand All @@ -26,7 +26,7 @@ class LoginViewModel : BaseViewModel<LoginViewState, LoginAction, LoginEvent>(

private fun onLoginClick() {
val currentState = viewState as? LoginViewState.Content ?: return

if (currentState.username.isBlank()) {
viewAction = LoginAction.ShowMessage("Username cannot be empty")
return
Expand All @@ -39,7 +39,7 @@ class LoginViewModel : BaseViewModel<LoginViewState, LoginAction, LoginEvent>(
viewModelScope.launch {
val username = currentState.username
val password = currentState.password

viewState = LoginViewState.Loading

when (val result = loginUseCase(username, password)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package friends.mobile.feature.auth.presentation.register

import friends.mobile.core.analytics.AnalyticsEvent
import friends.mobile.core.domain.model.ResultWrapper
import friends.mobile.core.domain.model.getErrorMessage
import friends.mobile.core.domain.model.mapApiErrorToUserFriendly
import friends.mobile.core.analytics.AnalyticsEvent
import friends.mobile.core.viewmodel.BaseViewModel
import friends.mobile.feature.auth.domain.usecase.RegisterUseCase
import kotlinx.coroutines.launch
Expand All @@ -27,7 +27,7 @@ class RegisterViewModel : BaseViewModel<RegisterViewState, RegisterAction, Regis

private fun onRegisterClick() {
val currentState = viewState as? RegisterViewState.Content ?: return

if (currentState.username.isBlank()) {
viewState = RegisterViewState.Error("Username cannot be empty")
return
Expand All @@ -40,7 +40,7 @@ class RegisterViewModel : BaseViewModel<RegisterViewState, RegisterAction, Regis
viewModelScope.launch {
val username = currentState.username
val password = currentState.password

viewState = RegisterViewState.Loading

when (val result = registerUseCase(username, password)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ data class BusyDayDto(
val date: String,
@SerialName("event_id")
val eventId: String,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ internal class GetAcceptedEventsUseCaseImpl(
override suspend fun invoke(): ResultWrapper<List<Event>> {
return repository.getAcceptedEvents()
}
}
}
Loading
Loading