optimize imports and format code for all files :)

This commit is contained in:
brreynie 2023-05-16 11:59:40 +02:00
parent cefa85ae22
commit 62bca72d0f
56 changed files with 310 additions and 239 deletions

View file

@ -29,7 +29,8 @@ fun DrawerScreenTemplate(
Scaffold( Scaffold(
scaffoldState = scaffoldState, scaffoldState = scaffoldState,
topBar = { TopAppBar( topBar = {
TopAppBar(
title = { Text(text = title) }, title = { Text(text = title) },
navigationIcon = { navigationIcon = {
IconButton(onClick = { IconButton(onClick = {
@ -42,7 +43,8 @@ fun DrawerScreenTemplate(
} }
}, },
actions = barAction actions = barAction
)}, )
},
drawerContent = { drawerContent = {
Drawer(drawerActions) Drawer(drawerActions)
@ -55,10 +57,12 @@ fun DrawerScreenTemplate(
@Preview @Preview
@Composable @Composable
fun DrawerScreenPreview() { fun DrawerScreenPreview() {
StudeezTheme { DrawerScreenTemplate( StudeezTheme {
DrawerScreenTemplate(
title = "Drawer screen preview", title = "Drawer screen preview",
drawerActions = DrawerActions({}, {}, {}, {}, {}) drawerActions = DrawerActions({}, {}, {}, {}, {})
) { ) {
Text(text = "Preview content") Text(text = "Preview content")
} } }
}
} }

View file

@ -131,15 +131,19 @@ fun ExpandedEntry(
@Preview @Preview
@Composable @Composable
fun AddButtonPreview() { fun AddButtonPreview() {
StudeezTheme { AddButton( StudeezTheme {
AddButton(
addButtonActions = AddButtonActions({}, {}, {}) addButtonActions = AddButtonActions({}, {}, {})
)} )
}
} }
@Preview @Preview
@Composable @Composable
fun ExpandedAddButtonPreview() { fun ExpandedAddButtonPreview() {
StudeezTheme { ExpandedAddButton ( StudeezTheme {
ExpandedAddButton(
addButtonActions = AddButtonActions({}, {}, {}) addButtonActions = AddButtonActions({}, {}, {})
) } )
}
} }

View file

@ -57,11 +57,15 @@ fun PrimaryScreenTemplate(
bottomBar = { NavigationBar(navigationBarActions) }, bottomBar = { NavigationBar(navigationBarActions) },
floatingActionButtonPosition = FabPosition.Center, floatingActionButtonPosition = FabPosition.Center,
isFloatingActionButtonDocked = true, isFloatingActionButtonDocked = true,
floatingActionButton = { AddButton(AddButtonActions( floatingActionButton = {
AddButton(
AddButtonActions(
onTaskClick = navigationBarActions.onAddTaskClick, onTaskClick = navigationBarActions.onAddTaskClick,
onFriendClick = navigationBarActions.onAddFriendClick, onFriendClick = navigationBarActions.onAddFriendClick,
onSessionClick = navigationBarActions.onAddSessionClick onSessionClick = navigationBarActions.onAddSessionClick
)) } )
)
}
) { ) {
content(it) content(it)
} }

View file

@ -21,7 +21,8 @@ fun SecondaryScreenTemplate(
) { ) {
Scaffold( Scaffold(
// Everything at the top of the screen // Everything at the top of the screen
topBar = { TopAppBar( topBar = {
TopAppBar(
title = { Text(text = title) }, title = { Text(text = title) },
navigationIcon = { navigationIcon = {
IconButton(onClick = { popUp() }) { IconButton(onClick = { popUp() }) {
@ -32,7 +33,8 @@ fun SecondaryScreenTemplate(
} }
}, },
actions = barAction actions = barAction
) }, )
},
) { paddingValues -> ) { paddingValues ->
content(paddingValues) content(paddingValues)
} }
@ -41,8 +43,10 @@ fun SecondaryScreenTemplate(
@Preview @Preview
@Composable @Composable
fun SecondaryScreenToolbarPreview() { fun SecondaryScreenToolbarPreview() {
StudeezTheme { SecondaryScreenTemplate( StudeezTheme {
SecondaryScreenTemplate(
"Preview screen", "Preview screen",
{} {}
) {} } ) {}
}
} }

View file

@ -161,7 +161,6 @@ fun LabeledErrorTextField(
} }
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
fun IntInputPreview() { fun IntInputPreview() {

View file

@ -82,7 +82,11 @@ fun TimePickerButton(
} }
} }
private fun pickDuration(context: Context, onTimeChosen: (Int) -> Unit, timeState: MutableState<Int>) { private fun pickDuration(
context: Context,
onTimeChosen: (Int) -> Unit,
timeState: MutableState<Int>
) {
val listener = OnTimeSetListener { _, hour, minute -> val listener = OnTimeSetListener { _, hour, minute ->
timeState.value = HoursMinutesSeconds(hour, minute, 0).getTotalSeconds() timeState.value = HoursMinutesSeconds(hour, minute, 0).getTotalSeconds()
onTimeChosen(timeState.value) onTimeChosen(timeState.value)

View file

@ -2,12 +2,7 @@ package be.ugent.sel.studeez.common.composable.drawer
import android.content.Context import android.content.Context
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Icon import androidx.compose.material.Icon
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View file

@ -3,8 +3,6 @@ package be.ugent.sel.studeez.common.composable.drawer
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import be.ugent.sel.studeez.domain.AccountDAO import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.domain.LogService import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.navigation.StudeezDestinations import be.ugent.sel.studeez.navigation.StudeezDestinations

View file

@ -8,8 +8,6 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.List import androidx.compose.material.icons.filled.List
import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.Person
import androidx.compose.material.icons.outlined.Check
import androidx.compose.material.icons.outlined.DateRange
import androidx.compose.material.icons.outlined.Face import androidx.compose.material.icons.outlined.Face
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview

View file

@ -6,11 +6,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
fun Modifier.textButton(): Modifier { fun Modifier.textButton(): Modifier {
return this.fillMaxWidth().padding(16.dp, 8.dp, 16.dp, 0.dp) return this
.fillMaxWidth()
.padding(16.dp, 8.dp, 16.dp, 0.dp)
} }
fun Modifier.basicButton(): Modifier { fun Modifier.basicButton(): Modifier {
return this.fillMaxWidth().padding(16.dp, 8.dp) return this
.fillMaxWidth()
.padding(16.dp, 8.dp)
} }
fun Modifier.card(): Modifier { fun Modifier.card(): Modifier {
@ -26,7 +30,9 @@ fun Modifier.dropdownSelector(): Modifier {
} }
fun Modifier.fieldModifier(): Modifier { fun Modifier.fieldModifier(): Modifier {
return this.fillMaxWidth().padding(16.dp, 4.dp) return this
.fillMaxWidth()
.padding(16.dp, 4.dp)
} }
fun Modifier.toolbarActions(): Modifier { fun Modifier.toolbarActions(): Modifier {
@ -34,9 +40,13 @@ fun Modifier.toolbarActions(): Modifier {
} }
fun Modifier.spacer(): Modifier { fun Modifier.spacer(): Modifier {
return this.fillMaxWidth().padding(12.dp) return this
.fillMaxWidth()
.padding(12.dp)
} }
fun Modifier.smallSpacer(): Modifier { fun Modifier.smallSpacer(): Modifier {
return this.fillMaxWidth().height(8.dp) return this
.fillMaxWidth()
.height(8.dp)
} }

View file

@ -2,7 +2,6 @@ package be.ugent.sel.studeez.data.local.models.timer_info
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimerVisitor
class PomodoroTimerInfo( class PomodoroTimerInfo(
name: String, name: String,

View file

@ -1,9 +1,6 @@
package be.ugent.sel.studeez.domain package be.ugent.sel.studeez.domain
import be.ugent.sel.studeez.data.local.models.FeedEntry
import be.ugent.sel.studeez.data.local.models.SessionReport import be.ugent.sel.studeez.data.local.models.SessionReport
import be.ugent.sel.studeez.data.local.models.User
import be.ugent.sel.studeez.data.local.models.task.Task
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow

View file

@ -1,7 +1,6 @@
package be.ugent.sel.studeez.domain package be.ugent.sel.studeez.domain
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.data.local.models.timer_info.TimerJson
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
interface TimerDAO { interface TimerDAO {

View file

@ -1,12 +1,12 @@
package be.ugent.sel.studeez.domain.implementation package be.ugent.sel.studeez.domain.implementation
import be.ugent.sel.studeez.data.local.models.timer_info.* import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.data.local.models.timer_info.TimerJson
import be.ugent.sel.studeez.domain.ConfigurationService import be.ugent.sel.studeez.domain.ConfigurationService
import com.google.firebase.ktx.Firebase import com.google.firebase.ktx.Firebase
import com.google.firebase.remoteconfig.ktx.get import com.google.firebase.remoteconfig.ktx.get
import com.google.firebase.remoteconfig.ktx.remoteConfig import com.google.firebase.remoteconfig.ktx.remoteConfig
import com.google.firebase.remoteconfig.ktx.remoteConfigSettings import com.google.firebase.remoteconfig.ktx.remoteConfigSettings
import com.google.gson.Gson
import kotlinx.coroutines.tasks.await import kotlinx.coroutines.tasks.await
import javax.inject.Inject import javax.inject.Inject

View file

@ -109,7 +109,11 @@ class FirebaseFeedDAO @Inject constructor(
return makeFeedEntry(sessionReport, subject, task) return makeFeedEntry(sessionReport, subject, task)
} }
private fun makeFeedEntry(sessionReport: SessionReport, subject: Subject, task: Task): FeedEntry { private fun makeFeedEntry(
sessionReport: SessionReport,
subject: Subject,
task: Task
): FeedEntry {
return FeedEntry( return FeedEntry(
argb_color = subject.argb_color, argb_color = subject.argb_color,
subJectName = subject.name, subJectName = subject.name,
@ -125,7 +129,10 @@ class FirebaseFeedDAO @Inject constructor(
/** /**
* Convert a sessionReport to a feedEntry. Fetch Task and Subject to get names * Convert a sessionReport to a feedEntry. Fetch Task and Subject to get names
*/ */
private suspend fun sessionToFeedEntryFromUser(sessionReport: SessionReport, id: String): FeedEntry { private suspend fun sessionToFeedEntryFromUser(
sessionReport: SessionReport,
id: String
): FeedEntry {
val subjectId: String = sessionReport.subjectId val subjectId: String = sessionReport.subjectId
val taskId: String = sessionReport.taskId val taskId: String = sessionReport.taskId

View file

@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.tasks.await
import javax.inject.Inject import javax.inject.Inject
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException import kotlin.coroutines.resumeWithException
@ -89,21 +88,25 @@ class FirebaseFriendshipDAO @Inject constructor(
// Add entry to current user // Add entry to current user
currentUserDocument() currentUserDocument()
.collection(FRIENDS_COLLECTION) .collection(FRIENDS_COLLECTION)
.add(mapOf( .add(
mapOf(
FRIENDID to otherUserId, FRIENDID to otherUserId,
ACCEPTED to true, // TODO Make it not automatically accepted. ACCEPTED to true, // TODO Make it not automatically accepted.
FRIENDSSINCE to Timestamp.now() FRIENDSSINCE to Timestamp.now()
)) )
)
// Add entry to other user // Add entry to other user
firestore.collection(USER_COLLECTION) firestore.collection(USER_COLLECTION)
.document(otherUserId) .document(otherUserId)
.collection(FRIENDS_COLLECTION) .collection(FRIENDS_COLLECTION)
.add(mapOf( .add(
mapOf(
FRIENDID to currentUserId, FRIENDID to currentUserId,
ACCEPTED to true, // TODO Make it not automatically accepted. ACCEPTED to true, // TODO Make it not automatically accepted.
FRIENDSSINCE to Timestamp.now() FRIENDSSINCE to Timestamp.now()
)) )
)
} }
}.addOnSuccessListener { }.addOnSuccessListener {
val message = if (allowed) AppText.success else AppText.already_friend val message = if (allowed) AppText.success else AppText.already_friend

View file

@ -1,24 +1,15 @@
package be.ugent.sel.studeez.domain.implementation package be.ugent.sel.studeez.domain.implementation
import be.ugent.sel.studeez.data.local.models.FeedEntry
import be.ugent.sel.studeez.data.local.models.SessionReport import be.ugent.sel.studeez.data.local.models.SessionReport
import be.ugent.sel.studeez.data.local.models.User
import be.ugent.sel.studeez.data.local.models.task.Task
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.data.remote.FirebaseSessionReport import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.data.remote.FirebaseSessionReport.ENDTIME import be.ugent.sel.studeez.domain.SessionDAO
import be.ugent.sel.studeez.data.remote.FirebaseSessionReport.STUDYTIME
import be.ugent.sel.studeez.domain.*
import be.ugent.sel.studeez.domain.implementation.FirebaseCollections.SESSION_COLLECTION import be.ugent.sel.studeez.domain.implementation.FirebaseCollections.SESSION_COLLECTION
import be.ugent.sel.studeez.domain.implementation.FirebaseCollections.USER_COLLECTION import be.ugent.sel.studeez.domain.implementation.FirebaseCollections.USER_COLLECTION
import com.google.firebase.Timestamp
import com.google.firebase.firestore.CollectionReference import com.google.firebase.firestore.CollectionReference
import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.FirebaseFirestore
import com.google.firebase.firestore.ktx.getField
import com.google.firebase.firestore.ktx.snapshots import com.google.firebase.firestore.ktx.snapshots
import com.google.firebase.firestore.ktx.toObject
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.tasks.await import kotlinx.coroutines.tasks.await
import javax.inject.Inject import javax.inject.Inject

View file

@ -82,7 +82,10 @@ class FirebaseSubjectDAO @Inject constructor(
.document(id) .document(id)
.collection(FirebaseCollections.SUBJECT_COLLECTION) .collection(FirebaseCollections.SUBJECT_COLLECTION)
private fun subjectTasksCollection(subject: Subject, id: String = auth.currentUserId): CollectionReference = private fun subjectTasksCollection(
subject: Subject,
id: String = auth.currentUserId
): CollectionReference =
firestore.collection(FirebaseCollections.USER_COLLECTION) firestore.collection(FirebaseCollections.USER_COLLECTION)
.document(id) .document(id)
.collection(FirebaseCollections.SUBJECT_COLLECTION) .collection(FirebaseCollections.SUBJECT_COLLECTION)

View file

@ -51,7 +51,10 @@ class FirebaseTaskDAO @Inject constructor(
selectedSubjectTasksCollection(oldTask.subjectId).document(oldTask.id).delete() selectedSubjectTasksCollection(oldTask.subjectId).document(oldTask.id).delete()
} }
private fun selectedSubjectTasksCollection(subjectId: String, id: String = auth.currentUserId): CollectionReference = private fun selectedSubjectTasksCollection(
subjectId: String,
id: String = auth.currentUserId
): CollectionReference =
firestore.collection(FirebaseCollections.USER_COLLECTION) firestore.collection(FirebaseCollections.USER_COLLECTION)
.document(id) .document(id)
.collection(FirebaseCollections.SUBJECT_COLLECTION) .collection(FirebaseCollections.SUBJECT_COLLECTION)

View file

@ -1,6 +1,7 @@
package be.ugent.sel.studeez.domain.implementation package be.ugent.sel.studeez.domain.implementation
import be.ugent.sel.studeez.data.local.models.timer_info.* import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.data.local.models.timer_info.TimerJson
import be.ugent.sel.studeez.domain.AccountDAO import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.domain.TimerDAO import be.ugent.sel.studeez.domain.TimerDAO
import com.google.firebase.firestore.CollectionReference import com.google.firebase.firestore.CollectionReference

View file

@ -80,10 +80,12 @@ class FirebaseUserDAO @Inject constructor(
newUsername: String, newUsername: String,
newBiography: String newBiography: String
) { ) {
currentUserDocument().set(mapOf( currentUserDocument().set(
mapOf(
USERNAME to newUsername, USERNAME to newUsername,
BIOGRAPHY to newBiography BIOGRAPHY to newBiography
)) )
)
} }
override suspend fun deleteLoggedInUserReferences() { override suspend fun deleteLoggedInUserReferences() {

View file

@ -1,6 +1,7 @@
package be.ugent.sel.studeez.domain.implementation package be.ugent.sel.studeez.domain.implementation
import be.ugent.sel.studeez.data.local.models.timer_info.* import be.ugent.sel.studeez.data.local.models.timer_info.*
import be.ugent.sel.studeez.domain.implementation.ToTimerConverter.TimerFactory
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
@ -19,25 +20,31 @@ class ToTimerConverter {
} }
private val timerInfoMap: Map<TimerType, TimerFactory> = mapOf( private val timerInfoMap: Map<TimerType, TimerFactory> = mapOf(
TimerType.ENDLESS to TimerFactory { EndlessTimerInfo( TimerType.ENDLESS to TimerFactory {
EndlessTimerInfo(
it.name, it.name,
it.description, it.description,
it.id it.id
) }, )
TimerType.CUSTOM to TimerFactory { CustomTimerInfo( },
TimerType.CUSTOM to TimerFactory {
CustomTimerInfo(
it.name, it.name,
it.description, it.description,
it.studyTime, it.studyTime,
it.id it.id
) }, )
TimerType.BREAK to TimerFactory { PomodoroTimerInfo( },
TimerType.BREAK to TimerFactory {
PomodoroTimerInfo(
it.name, it.name,
it.description, it.description,
it.studyTime, it.studyTime,
it.breakTime, it.breakTime,
it.repeats, it.repeats,
it.id it.id
) } )
}
) )
private fun getTimer(timerJson: TimerJson): TimerInfo { private fun getTimer(timerJson: TimerJson): TimerInfo {

View file

@ -112,7 +112,12 @@ fun StudeezNavGraph(
composable(StudeezDestinations.TASKS_SCREEN) { composable(StudeezDestinations.TASKS_SCREEN) {
TaskRoute( TaskRoute(
goBack = { openAndPopUp(StudeezDestinations.SUBJECT_SCREEN, StudeezDestinations.TASKS_SCREEN) }, goBack = {
openAndPopUp(
StudeezDestinations.SUBJECT_SCREEN,
StudeezDestinations.TASKS_SCREEN
)
},
open = open, open = open,
viewModel = hiltViewModel(), viewModel = hiltViewModel(),
) )

View file

@ -208,7 +208,11 @@ fun FriendsEntry(
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
Text( Text(
text = "${resources().getString(AppText.app_name)} ${resources().getString(AppText.friend)}", text = "${resources().getString(AppText.app_name)} ${
resources().getString(
AppText.friend
)
}",
fontSize = 14.sp, fontSize = 14.sp,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis

View file

@ -23,9 +23,11 @@ class FriendsOverviewViewModel @Inject constructor(
logService: LogService logService: LogService
) : StudeezViewModel(logService) { ) : StudeezViewModel(logService) {
var uiState = mutableStateOf(FriendsOverviewUiState( var uiState = mutableStateOf(
FriendsOverviewUiState(
userId = selectedUserIdState.value userId = selectedUserIdState.value
)) )
)
private set private set
fun getAllFriends(): Flow<List<Pair<User, Friendship>>> { fun getAllFriends(): Flow<List<Pair<User, Friendship>>> {

View file

@ -123,21 +123,29 @@ fun SearchFriendsPreview() {
popUp = {}, popUp = {},
uiState = SearchFriendUiState( uiState = SearchFriendUiState(
queryString = "dit is een test", queryString = "dit is een test",
searchResults = flowOf(listOf(User( searchResults = flowOf(
listOf(
User(
id = "someid", id = "someid",
username = "Eerste user", username = "Eerste user",
biography = "blah blah blah" biography = "blah blah blah"
))) )
)
)
), ),
searchFriendsActions = SearchFriendsActions( searchFriendsActions = SearchFriendsActions(
onQueryStringChange = {}, onQueryStringChange = {},
getUsersWithUsername = {}, getUsersWithUsername = {},
getAllUsers = { getAllUsers = {
flowOf(listOf(User( flowOf(
listOf(
User(
id = "someid", id = "someid",
username = "Eerste user", username = "Eerste user",
biography = "blah blah blah" biography = "blah blah blah"
))) )
)
)
}, },
goToProfile = { } goToProfile = { }
) )
@ -178,7 +186,11 @@ fun UserEntry(
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
Text( Text(
text = "${resources().getString(AppText.app_name)} ${resources().getString(AppText.friend)}", text = "${resources().getString(AppText.app_name)} ${
resources().getString(
AppText.friend
)
}",
fontSize = 14.sp, fontSize = 14.sp,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis

View file

@ -1,4 +1,5 @@
package be.ugent.sel.studeez.screens.home package be.ugent.sel.studeez.screens.home
import be.ugent.sel.studeez.domain.LogService import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.navigation.StudeezDestinations import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.screens.StudeezViewModel import be.ugent.sel.studeez.screens.StudeezViewModel

View file

@ -92,7 +92,8 @@ fun ProfileScreen(
item { item {
Row( Row(
horizontalArrangement = Arrangement.spacedBy(5.dp), horizontalArrangement = Arrangement.spacedBy(5.dp),
modifier = Modifier.fillMaxWidth() modifier = Modifier
.fillMaxWidth()
.wrapContentWidth(align = Alignment.CenterHorizontally) .wrapContentWidth(align = Alignment.CenterHorizontally)
) { ) {
AmountOfFriendsButton( AmountOfFriendsButton(

View file

@ -39,9 +39,11 @@ fun getPublicProfileActions(
): PublicProfileActions { ): PublicProfileActions {
return PublicProfileActions( return PublicProfileActions(
getUserDetails = { viewModel.getUserDetails(viewModel.uiState.value.userId) }, getUserDetails = { viewModel.getUserDetails(viewModel.uiState.value.userId) },
getAmountOfFriends = { viewModel.getAmountOfFriends( getAmountOfFriends = {
viewModel.getAmountOfFriends(
userId = viewModel.uiState.value.userId userId = viewModel.uiState.value.userId
) }, )
},
onViewFriendsClick = { viewModel.onViewFriendsClick(open) }, onViewFriendsClick = { viewModel.onViewFriendsClick(open) },
sendFriendRequest = { sendFriendRequest = {
viewModel.sendFriendRequest( viewModel.sendFriendRequest(
@ -123,11 +125,13 @@ fun PublicProfilePreview() {
PublicProfileScreen( PublicProfileScreen(
publicProfileActions = PublicProfileActions( publicProfileActions = PublicProfileActions(
getUserDetails = { getUserDetails = {
flowOf(User( flowOf(
User(
id = "someid", id = "someid",
username = "Maxime De Poorter", username = "Maxime De Poorter",
biography = "I am a different student and this is my public profile" biography = "I am a different student and this is my public profile"
)) )
)
}, },
getAmountOfFriends = { flowOf(113) }, getAmountOfFriends = { flowOf(113) },
onViewFriendsClick = {}, onViewFriendsClick = {},

View file

@ -39,7 +39,8 @@ fun SessionRoute(
val soundPlayer = SoundPlayer(LocalContext.current) val soundPlayer = SoundPlayer(LocalContext.current)
val sessionActions = getSessionActions(viewModel, openAndPopUp) val sessionActions = getSessionActions(viewModel, openAndPopUp)
val sessionScreen = viewModel.getTimer().accept(GetSessionScreenComposable(soundPlayer, open, sessionActions)) val sessionScreen =
viewModel.getTimer().accept(GetSessionScreenComposable(soundPlayer, open, sessionActions))
sessionScreen() sessionScreen()
} }

View file

@ -57,11 +57,13 @@ private fun Dots(pomodoroTimer: FunctionalPomodoroTimer): Int {
@Composable @Composable
private fun Dot(color: Color) { private fun Dot(color: Color) {
Box(modifier = Modifier Box(
modifier = Modifier
.padding(5.dp) .padding(5.dp)
.size(10.dp) .size(10.dp)
.clip(CircleShape) .clip(CircleShape)
.background(color)) .background(color)
)
} }

View file

@ -16,7 +16,8 @@ class GetSessionScreenComposable(
FunctionalTimerVisitor<@Composable () -> Unit> { FunctionalTimerVisitor<@Composable () -> Unit> {
override fun visitFunctionalCustomTimer(functionalCustomTimer: FunctionalCustomTimer): @Composable () -> Unit { override fun visitFunctionalCustomTimer(functionalCustomTimer: FunctionalCustomTimer): @Composable () -> Unit {
return { CustomTimerSessionScreenComposable( return {
CustomTimerSessionScreenComposable(
open = open, open = open,
sessionActions = sessionActions, sessionActions = sessionActions,
soundPlayer = soundPlayer, soundPlayer = soundPlayer,

View file

@ -135,9 +135,11 @@ fun SessionRecapScreenPreview() {
SessionRecapScreen( SessionRecapScreen(
modifier = Modifier, modifier = Modifier,
sessionRecapActions = SessionRecapActions( sessionRecapActions = SessionRecapActions(
{ SessionReport( {
SessionReport(
studyTime = 100, studyTime = 100,
) }, )
},
{}, {},
{}, {},
) )

View file

@ -35,6 +35,7 @@ class SignUpViewModel @Inject constructor(
fun onUsernameChange(newValue: String) { fun onUsernameChange(newValue: String) {
uiState.value = uiState.value.copy(username = newValue) uiState.value = uiState.value.copy(username = newValue)
} }
fun onEmailChange(newValue: String) { fun onEmailChange(newValue: String) {
uiState.value = uiState.value.copy(email = newValue) uiState.value = uiState.value.copy(email = newValue)
} }

View file

@ -18,7 +18,6 @@ class BreakTimerFormScreen(
) : AbstractTimerFormScreen(breakTimerInfo) { ) : AbstractTimerFormScreen(breakTimerInfo) {
@Composable @Composable
override fun ExtraFields() { override fun ExtraFields() {
// If the user presses the OK button on the timepicker, the time in the button should change // If the user presses the OK button on the timepicker, the time in the button should change

View file

@ -40,7 +40,9 @@ fun TimerTypeSelectScreen(
val default: TimerInfo = defaultTimerInfo.getValue(timerType) val default: TimerInfo = defaultTimerInfo.getValue(timerType)
Button( Button(
onClick = { viewModel.onTimerTypeChosen(default, open) }, onClick = { viewModel.onTimerTypeChosen(default, open) },
modifier = Modifier.fillMaxWidth().padding(5.dp) modifier = Modifier
.fillMaxWidth()
.padding(5.dp)
) { ) {
Text(text = timerType.name) Text(text = timerType.name)
} }

View file

@ -68,11 +68,13 @@ fun TimerOverviewScreen(
LazyColumn { LazyColumn {
// Custom timer, select new duration each time // Custom timer, select new duration each time
item { item {
TimerEntry(timerInfo = CustomTimerInfo( TimerEntry(
timerInfo = CustomTimerInfo(
name = resources().getString(R.string.custom_name), name = resources().getString(R.string.custom_name),
description = resources().getString(R.string.custom_name), description = resources().getString(R.string.custom_name),
studyTime = 0 studyTime = 0
)) )
)
} }
// Default Timers, cannot be edited // Default Timers, cannot be edited
items(timerOverviewActions.getDefaultTimers()) { items(timerOverviewActions.getDefaultTimers()) {