From 112a26571161720e99a14365772513c8f6d9b4ee Mon Sep 17 00:00:00 2001 From: Arnaud Rajon Date: Sun, 1 Dec 2024 17:48:43 +0100 Subject: [PATCH 1/4] chore: translate non-translated string Translated avery string that wasn't translated in the app, and fixed a bug (explained in detail in the PR) --- .../java/com/android/unio/MainActivity.kt | 17 ++++ .../unio/model/association/Association.kt | 30 +++--- .../unio/ui/association/EditAssociation.kt | 4 +- .../com/android/unio/ui/explore/Explore.kt | 10 +- .../ui/navigation/BottomNavigationMenu.kt | 5 +- .../unio/ui/navigation/NavigationAction.kt | 21 +++++ .../com/android/unio/ui/settings/Settings.kt | 20 +--- .../java/com/android/unio/ui/theme/Theme.kt | 2 + .../com/android/unio/ui/user/UserProfile.kt | 10 +- app/src/main/res/values-fr/strings.xml | 92 +++++++++++++------ app/src/main/res/values/strings.xml | 73 ++++++++++----- 11 files changed, 191 insertions(+), 93 deletions(-) diff --git a/app/src/main/java/com/android/unio/MainActivity.kt b/app/src/main/java/com/android/unio/MainActivity.kt index 54eabe33a..bf9e24f5b 100644 --- a/app/src/main/java/com/android/unio/MainActivity.kt +++ b/app/src/main/java/com/android/unio/MainActivity.kt @@ -18,6 +18,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -29,6 +30,7 @@ import com.android.unio.model.event.EventViewModel import com.android.unio.model.image.ImageRepositoryFirebaseStorage import com.android.unio.model.map.MapViewModel import com.android.unio.model.map.nominatim.NominatimLocationSearchViewModel +import com.android.unio.model.preferences.AppPreferences import com.android.unio.model.search.SearchViewModel import com.android.unio.model.user.UserViewModel import com.android.unio.ui.association.AssociationProfileScreen @@ -56,7 +58,9 @@ import com.android.unio.ui.user.UserProfileEditionScreen import com.android.unio.ui.user.UserProfileScreen import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.HiltAndroidApp +import java.util.Locale import javax.inject.Inject +import me.zhanghai.compose.preference.LocalPreferenceFlow import me.zhanghai.compose.preference.ProvidePreferenceLocals @AndroidEntryPoint @@ -82,6 +86,19 @@ class MainActivity : ComponentActivity() { @Composable fun UnioApp(imageRepository: ImageRepositoryFirebaseStorage) { + // sets language according to LocalPreferences + val preferences by LocalPreferenceFlow.current.collectAsState() + val context = LocalContext.current + val language = preferences.get(AppPreferences.LANGUAGE) ?: AppPreferences.Language.default + val locale = Locale(language) + Locale.setDefault(locale) + + val configuration = context.resources.configuration + configuration.setLocale(locale) + configuration.setLayoutDirection(locale) + context.createConfigurationContext(configuration) + context.resources.updateConfiguration(configuration, context.resources.displayMetrics) + val navController = rememberNavController() val navigationActions = NavigationAction(navController) diff --git a/app/src/main/java/com/android/unio/model/association/Association.kt b/app/src/main/java/com/android/unio/model/association/Association.kt index 941ff46af..4d36ff2ec 100644 --- a/app/src/main/java/com/android/unio/model/association/Association.kt +++ b/app/src/main/java/com/android/unio/model/association/Association.kt @@ -5,11 +5,11 @@ import androidx.appsearch.annotation.Document.Id import androidx.appsearch.annotation.Document.Namespace import androidx.appsearch.annotation.Document.StringProperty import androidx.appsearch.app.AppSearchSchema.StringPropertyConfig +import com.android.unio.R import com.android.unio.model.event.Event import com.android.unio.model.firestore.ReferenceElement import com.android.unio.model.firestore.ReferenceList import com.android.unio.model.firestore.UniquelyIdentifiable -import com.android.unio.model.strings.AssociationStrings import com.android.unio.model.user.User /** @@ -54,20 +54,20 @@ data class Association( * * @property displayName A human-readable name for the category. */ -enum class AssociationCategory(val displayName: String) { - EPFL_BODIES(AssociationStrings.EPFL_BODIES), - REPRESENTATION(AssociationStrings.REPRESENTATION), - PROJECTS(AssociationStrings.PROJECTS), - EPFL_STUDENTS(AssociationStrings.EPFL_STUDENTS), - COUNTRIES(AssociationStrings.COUNTRIES), - SUSTAINABILITY(AssociationStrings.SUSTAINABILITY), - SCIENCE_TECH(AssociationStrings.SCIENCE_TECH), - CULTURE_SOCIETY(AssociationStrings.CULTURE_SOCIETY), - ARTS(AssociationStrings.ARTS), - ENTERTAINMENT(AssociationStrings.ENTERTAINMENT), - SPORTS(AssociationStrings.SPORTS), - GUIDANCE(AssociationStrings.GUIDANCE), - UNKNOWN(AssociationStrings.UNKNOWN) +enum class AssociationCategory(val displayNameId: Int) { + EPFL_BODIES(R.string.association_category_epfl_bodies), + REPRESENTATION(R.string.association_category_representation), + PROJECTS(R.string.association_category_projects), + EPFL_STUDENTS(R.string.association_category_epfl_students), + COUNTRIES(R.string.association_category_countries), + SUSTAINABILITY(R.string.association_category_sustainability), + SCIENCE_TECH(R.string.association_category_science_tech), + CULTURE_SOCIETY(R.string.association_category_culture_society), + ARTS(R.string.association_category_arts), + ENTERTAINMENT(R.string.association_category_entertainment), + SPORTS(R.string.association_category_sports), + GUIDANCE(R.string.association_category_guidance), + UNKNOWN(R.string.association_category_unknown) } /** diff --git a/app/src/main/java/com/android/unio/ui/association/EditAssociation.kt b/app/src/main/java/com/android/unio/ui/association/EditAssociation.kt index 42488f0d6..463ca3fa4 100644 --- a/app/src/main/java/com/android/unio/ui/association/EditAssociation.kt +++ b/app/src/main/java/com/android/unio/ui/association/EditAssociation.kt @@ -171,13 +171,13 @@ fun EditAssociationScaffold( onClick = { expanded = true }, modifier = Modifier.fillMaxWidth().testTag(EditAssociationTestTags.CATEGORY_BUTTON)) { - Text(text = category.displayName) + Text(text = context.getString(category.displayNameId)) } DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) { AssociationCategory.entries.forEach { categoryOption -> DropdownMenuItem( - text = { Text(text = categoryOption.displayName) }, + text = { Text(text = context.getString(categoryOption.displayNameId)) }, onClick = { category = categoryOption expanded = false diff --git a/app/src/main/java/com/android/unio/ui/explore/Explore.kt b/app/src/main/java/com/android/unio/ui/explore/Explore.kt index be66b4a6d..02feeee32 100644 --- a/app/src/main/java/com/android/unio/ui/explore/Explore.kt +++ b/app/src/main/java/com/android/unio/ui/explore/Explore.kt @@ -1,5 +1,6 @@ package com.android.unio.ui.explore +import android.content.Context import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -12,7 +13,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -69,7 +69,6 @@ fun ExploreScreen( * @param padding The padding values to apply to the content. * @param navigationAction The navigation action to use when an association is clicked. */ -@OptIn(ExperimentalMaterial3Api::class) @Composable fun ExploreScreenContent( padding: PaddingValues, @@ -107,14 +106,14 @@ fun ExploreScreenContent( contentPadding = PaddingValues(vertical = 16.dp), verticalArrangement = Arrangement.spacedBy(16.dp), ) { - getSortedEntriesAssociationsByCategory(associationsByCategory).forEach { + getSortedEntriesAssociationsByCategory(context, associationsByCategory).forEach { (category, associations) -> val alphabeticalAssociations = getFilteredAssociationsByAlphabeticalOrder(associations) if (alphabeticalAssociations.isNotEmpty()) { item { Text( - text = category.displayName, + text = context.getString(category.displayNameId), style = AppTypography.headlineSmall, modifier = Modifier.padding(horizontal = 16.dp) @@ -197,7 +196,8 @@ fun getFilteredAssociationsByAlphabeticalOrder(associations: List): /** Returns the entries of the association map sorted by the key's display name. */ fun getSortedEntriesAssociationsByCategory( + context: Context, associationsByCategory: Map> ): List>> { - return associationsByCategory.entries.sortedBy { it.key.displayName } + return associationsByCategory.entries.sortedBy { context.getString(it.key.displayNameId) } } diff --git a/app/src/main/java/com/android/unio/ui/navigation/BottomNavigationMenu.kt b/app/src/main/java/com/android/unio/ui/navigation/BottomNavigationMenu.kt index 62eb1f3a2..a51edeff7 100644 --- a/app/src/main/java/com/android/unio/ui/navigation/BottomNavigationMenu.kt +++ b/app/src/main/java/com/android/unio/ui/navigation/BottomNavigationMenu.kt @@ -6,6 +6,7 @@ import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag import com.android.unio.model.strings.test_tags.NavigationActionTestTags @@ -19,7 +20,9 @@ fun BottomNavigationMenu( tabList.map { tld -> NavigationBarItem( modifier = Modifier.testTag(tld.textId), - label = { Text(tld.route) }, + label = { + Text(Route.toTranslatedString(context = LocalContext.current, route = tld.route)) + }, icon = { Icon(tld.icon, tld.textId) }, selected = selectedItem == tld.route, onClick = { onSelection(tld) }) diff --git a/app/src/main/java/com/android/unio/ui/navigation/NavigationAction.kt b/app/src/main/java/com/android/unio/ui/navigation/NavigationAction.kt index 9a9113cad..c300e268d 100644 --- a/app/src/main/java/com/android/unio/ui/navigation/NavigationAction.kt +++ b/app/src/main/java/com/android/unio/ui/navigation/NavigationAction.kt @@ -1,5 +1,7 @@ package com.android.unio.ui.navigation +import android.content.Context +import android.util.Log import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.FavoriteBorder import androidx.compose.material.icons.outlined.Home @@ -8,6 +10,7 @@ import androidx.compose.material.icons.outlined.Search import androidx.compose.ui.graphics.vector.ImageVector import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController +import com.android.unio.R import com.android.unio.model.strings.test_tags.BottomNavBarTestTags open class NavigationAction(val navController: NavHostController) { @@ -120,6 +123,24 @@ object Route { const val EXPLORE = "Explore" const val SAVED = "Saved" const val MY_PROFILE = "Profile" + + fun toTranslatedString(context: Context, route: String): String { + + val strId = + when (route) { + HOME -> R.string.bottom_nav_home + SAVED -> R.string.bottom_nav_saved + EXPLORE -> R.string.bottom_nav_explore + MY_PROFILE -> R.string.bottom_nav_profile + AUTH -> R.string.nav_auth + else -> { + Log.e("NavigationAction", "The provided route string does not exist.") + 0 + } + } + + return context.getString(strId) + } } object Screen { diff --git a/app/src/main/java/com/android/unio/ui/settings/Settings.kt b/app/src/main/java/com/android/unio/ui/settings/Settings.kt index dcf75b479..7dcb15265 100644 --- a/app/src/main/java/com/android/unio/ui/settings/Settings.kt +++ b/app/src/main/java/com/android/unio/ui/settings/Settings.kt @@ -38,7 +38,6 @@ import com.android.unio.model.user.UserViewModel import com.android.unio.ui.navigation.NavigationAction import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberMultiplePermissionsState -import java.util.Locale import me.zhanghai.compose.preference.LocalPreferenceFlow import me.zhanghai.compose.preference.ProvidePreferenceLocals import me.zhanghai.compose.preference.listPreference @@ -110,16 +109,6 @@ fun SettingsContainer(onPasswordChange: (() -> Unit) -> Unit) { } /** Language * */ - val language = preferences.get(AppPreferences.LANGUAGE) ?: AppPreferences.Language.default - val locale = Locale(language) - Locale.setDefault(locale) - - val configuration = context.resources.configuration - configuration.setLocale(locale) - configuration.setLayoutDirection(locale) - context.createConfigurationContext(configuration) - context.resources.updateConfiguration(configuration, context.resources.displayMetrics) - ProvidePreferenceLocals(flow = LocalPreferenceFlow.current) { LazyColumn( modifier = Modifier.testTag(SettingsTestTags.CONTAINER), @@ -201,16 +190,15 @@ fun SettingsContainer(onPasswordChange: (() -> Unit) -> Unit) { Icon( imageVector = Icons.Default.Lock, contentDescription = context.getString(R.string.settings_reset_password)) - }, - onClick = { - onPasswordChange({ + }) { + onPasswordChange { Toast.makeText( context, context.getString(R.string.settings_reset_password_sent), Toast.LENGTH_SHORT) .show() - }) - }) + } + } } } } diff --git a/app/src/main/java/com/android/unio/ui/theme/Theme.kt b/app/src/main/java/com/android/unio/ui/theme/Theme.kt index 7cf8037ad..1961f3afb 100644 --- a/app/src/main/java/com/android/unio/ui/theme/Theme.kt +++ b/app/src/main/java/com/android/unio/ui/theme/Theme.kt @@ -275,6 +275,8 @@ fun AppTheme( val preferences by LocalPreferenceFlow.current.collectAsState() val theme = (preferences.asMap().getOrDefault(AppPreferences.THEME, AppPreferences.Theme.SYSTEM)) + val language = + preferences.asMap().getOrDefault(AppPreferences.LANGUAGE, AppPreferences.Language.default) val colorScheme = when { diff --git a/app/src/main/java/com/android/unio/ui/user/UserProfile.kt b/app/src/main/java/com/android/unio/ui/user/UserProfile.kt index 869f667cd..b7157e708 100644 --- a/app/src/main/java/com/android/unio/ui/user/UserProfile.kt +++ b/app/src/main/java/com/android/unio/ui/user/UserProfile.kt @@ -260,7 +260,9 @@ fun UserProfileScreenContent( if (joinedAssociations.isNotEmpty()) { HorizontalDivider() - Text("Joined", style = AppTypography.headlineSmall) + Text( + context.getString(R.string.user_profile_association_joined), + style = AppTypography.headlineSmall) Column( modifier = Modifier.fillMaxWidth().testTag(UserProfileTestTags.JOINED_ASSOCIATIONS), verticalArrangement = Arrangement.spacedBy(4.dp), @@ -268,12 +270,14 @@ fun UserProfileScreenContent( joinedAssociations.map { AssociationSmall(it) { onAssociationClick(it.uid) } } } } else { - Text("You are not member of any association yet", style = AppTypography.bodySmall) + Text( + context.getString(R.string.user_profile_no_associations), + style = AppTypography.bodySmall) Button( onClick = onClaimAssociationClick, modifier = Modifier.testTag(UserProfileTestTags.CLAIMING_BUTTON)) { - Text("Claim Association") + Text(context.getString(R.string.user_profile_claim_association)) } } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 55cebc8a2..a927c91ee 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -14,7 +14,7 @@ Une erreur est survenue. - Evenement à venir + Évenements à venir Retour Voir plus Partager l\'association @@ -24,10 +24,10 @@ abonnés membres - S\'abonner + Suivre Se désabonner Rejoindre - Pas d\'événement plannifié pour l\'instant + Pas d\'événement planifié pour l\'instant Erreur : Association introuvable Icône de partage d\'association Icône ajouter @@ -47,7 +47,7 @@ Annuler Enregistrer Sélectionner la catégorie - Échec de la sauvegarde de l\'Association + Échec de la sauvegarde de l\'association /** * package: authentication @@ -61,9 +61,8 @@ Vos réseaux sociaux - - Ceux-ci vont être visibles sur votre page personnelle pour que d\'autres étudiants puissent vous contacter - Ajouter Réseau Social + Ceux-ci vont être visibles sur votre page personnelle pour que d\'autres étudiants puissent vous contacter + Ajouter un réseau Sauvegarder les changements L\'entrée est vide Le numéro de téléphone a un format incorrect @@ -80,8 +79,8 @@ Ajoutez des centres d\'intérêts Ajoutez des liens à d\'autres réseaux sociaux Continuer - Veuillez remplir votre Prénom - Veuillez remplir votre Nom + Veuillez remplir votre prénom + Veuillez remplir votre nom Compte créé avec succès ERREUR: Échec du chargement de l\'image Cercle de compte @@ -92,7 +91,7 @@ Supprimer la photo de profil - Remove User Social + Supprimer le réseau social de l\'utilisateur Modifier Prénom Modifier Nom Modifier Biographie @@ -100,13 +99,13 @@ Modifier vos réseaux sociaux Annuler vos modifications Sauvegarder vos modifications - Changements correctement modifié + Changements correctement modifiés - Echec de l\'actualisation - Echec de l\'envoi de l\'email + Échec de l\'actualisation + Échec de l\'envoi de l\'email Email vérifié! Continuer Veuillez vérifier votre email @@ -114,7 +113,7 @@ . Veuillez vérifier votre email pour continuer. Renvoyer l\'email Rafraîchir - Retourner + Retour Rafraîchir @@ -123,7 +122,7 @@ Entrez votre adresse email john.doe@epfl.ch Entrez votre mot de passe - Min. 6 charactères and 1 chiffre + Min. 6 caractères and 1 chiffre Email ou mot de passe mal formé. Continuer Identifiants invalides @@ -134,19 +133,19 @@ Compte créé avec succès Cacher le mot de passe Montrer le mot de passe - Oublié votre mot de passe ? + Oubli de mot de passe ? /** * package: event */ - Titre de lévènement + Titre de l\'évènement Description accrocheuse Image de l\'évènement Sauvegardé Non sauvegardé - Logo d\'association + Logo de l\'association Création d\'un évènement @@ -187,7 +186,7 @@ Co-organisateurs Choisir quels associations organisent l\'évènement avec vous Tag associations - Choisir quels associations seront présentes a l\'évènement + Choisir quelles associations seront présentes a l\'évènement Aucun résultat trouvé Supprimer @@ -196,7 +195,7 @@ */ - Explorez nos Associations + Explorez les Associations Recherche Une erreur s\'est produite lors de la recherche Aucun résultat trouvé @@ -249,7 +248,7 @@ Toutes les permissions de localisation ont été accordées Il manque des permissions de localisation Réglages de localisation - Language + Langue Réglages de Langue Réinitialiser le mot de passe L\'email de modification de mot de passe a bien été envoyé @@ -261,13 +260,16 @@ Une erreur est survenue. - Votre profile + Votre profil Voir plus Photo de Profil Suivis Modifier le profil Paramètres Se déconnecter + Revendiquer l\'association + Vous n\'êtes membre d\'aucune association pour le moment. + Rejointe Retour @@ -280,7 +282,7 @@ Réclamer les droits présidentiels - Entrez l\'adresse email présidentielle : + Entrez l\'adresse email de présidence : Adresse e-mail Adresse e-mail incorrecte. Veuillez réessayer. Entrez le code envoyé : @@ -317,7 +319,7 @@ Festival - Aperitif + Apéritif Soirée Jam Réseautage @@ -344,7 +346,7 @@ Science Littérature Voyage - Nourritue + Nourriture Gaming Festivals Retour @@ -354,11 +356,11 @@ Un email a été envoyé à l\'adresse indiquée - Echec de l\'envoi de l\'email de réinitialisation + Echec de l\'envoi de l\'email Veuillez entrer un mail de récupération Le lien va être envoyé à cette addresse Confirmer - Veuillez entrer un addresse email valide + Veuillez entrer une addresse email valide @@ -366,5 +368,41 @@ L\'évènement va bientôt commencer :) Un évènement va bientôt avoir lieu + + Sélectionner une date + Sélectionner une heure + Je viens ! + ERREUR: évènement introuvable + Sauvegardé + Non sauvegardé + Gratuite ! + Entrée + places restantes + Icône pour voir la localisation de l\'évènement + Icône pour s\'inscrire à l\'évènement. + Image de l\'association + Retour à la page d\'accueil + + + Accueil + Sauvegardés + Découverte + Profil + Authentification + + Corps EPFL + Représentation + Projets Interdisciplinaires + Étudiants EPFL + Étudiants par pays + Durabilité + Science et Technologie + Culture et société + Arts + Divertissement + Sports + Orientation professionnelle + Inconnue + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 10fbd7c0d..b2c7d36b1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,11 +66,11 @@ Save - Your social media + Your socials These will be displayed on your profile to allow other students to contact you Add social Save changes - The input is empty or blank + The input is empty The phone number has wrong format The website is not encoded with https Close @@ -83,7 +83,7 @@ Bio Maybe add a profile picture? Add centers of interest - Add links to other social media + Add links to other socials Continue Please fill in your first name Please fill in your last name @@ -97,7 +97,7 @@ Remove Profile Picture - Remove User Social + Remove User Social Edit First name Edit Last name Edit Biography @@ -145,7 +145,7 @@ */ - Event Title + Event title Catchy Description Image of the event Saved @@ -188,8 +188,8 @@ Save - Select date - Select time + Select date + Select time Coauthors @@ -201,20 +201,20 @@ - I\'m going. - ERROR : event not found. - Saved - Not saved - Free ! - Entry: - places remaining + I\'m going ! + ERROR : event not found. + Saved + Not saved + Free ! + Entry: + places remaining /** * package: explore */ - Explore our Associations + Explore the Associations Search An error occurred while searching No results found @@ -299,6 +299,9 @@ Edit Profile Settings Sign Out + Claim Association + You are not member of any association yet + Joined Someone else user profile screen @@ -328,7 +331,6 @@ Verification request not found Service unavailable. Please try later - /** * Other */ @@ -350,9 +352,9 @@ Icon for saving event Icon for sharing event Icon of the event\'s organiser - Icon for seeing event\'s location - Icon to sign up to the event - Association Image + Icon for seeing event\'s location + Icon to sign up to the event + Association Image Festival @@ -365,10 +367,10 @@ Other - Error while converting db document to Event object - No event ID was provided - Failed to add event - Failed to delete event + Error while converting db document to Event object + No event ID was provided + Failed to add event + Failed to delete event associations @@ -404,7 +406,7 @@ An email has been sent to the given address Failed to send the email - Go back to home page + Go back to home page Please provide an email address The link will be sent to this address Confirm @@ -416,6 +418,29 @@ "An event will occur soon" Unio + + Home + Saved + Explore + Profile + Authentication + + + EPFL bodies + Representation + Interdisciplinary projects + EPFL students + Students by country + Sustainability + Science and technology + Culture and society + Arts + Entertainment + Sports + Vocational guidance + Unknown + + Lorem ipsum dolor sit amet, consectetur From 9536f566d26f8d155535a02a577078c452bdc20b Mon Sep 17 00:00:00 2001 From: Arnaud Rajon Date: Sun, 1 Dec 2024 18:08:37 +0100 Subject: [PATCH 2/4] chore: remove unused object --- .../com/android/unio/model/strings/Strings.kt | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/app/src/main/java/com/android/unio/model/strings/Strings.kt b/app/src/main/java/com/android/unio/model/strings/Strings.kt index b1396f991..8917a43e5 100644 --- a/app/src/main/java/com/android/unio/model/strings/Strings.kt +++ b/app/src/main/java/com/android/unio/model/strings/Strings.kt @@ -1,21 +1,5 @@ package com.android.unio.model.strings -object AssociationStrings { - const val EPFL_BODIES = "EPFL bodies" - const val REPRESENTATION = "Representation" - const val PROJECTS = "Interdisciplinary projects" - const val EPFL_STUDENTS = "EPFL Students" - const val COUNTRIES = "Students by country" - const val SUSTAINABILITY = "Sustainability" - const val SCIENCE_TECH = "Science and technology" - const val CULTURE_SOCIETY = "Culture and society" - const val ARTS = "Arts" - const val ENTERTAINMENT = "Entertainment" - const val SPORTS = "Sports" - const val GUIDANCE = "Vocational guidance" - const val UNKNOWN = "Unknown" -} - object FirestorePathsStrings { const val ASSOCIATION_PATH = "associations" const val USER_PATH = "users" From dde7530fa2fb28e73877018c5879b57581280264 Mon Sep 17 00:00:00 2001 From: Arnaud Rajon Date: Sun, 1 Dec 2024 18:38:40 +0100 Subject: [PATCH 3/4] chore: fix test --- .../unio/components/explore/ExploreScreenTest.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/com/android/unio/components/explore/ExploreScreenTest.kt b/app/src/androidTest/java/com/android/unio/components/explore/ExploreScreenTest.kt index e29ddc975..735bb4b30 100644 --- a/app/src/androidTest/java/com/android/unio/components/explore/ExploreScreenTest.kt +++ b/app/src/androidTest/java/com/android/unio/components/explore/ExploreScreenTest.kt @@ -1,5 +1,6 @@ package com.android.unio.components.explore +import android.content.Context import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertTextEquals import androidx.compose.ui.test.junit4.createComposeRule @@ -47,6 +48,7 @@ class ExploreScreenTest : TearDown() { ConcurrentAssociationUserRepositoryFirestore @MockK private lateinit var eventRepository: EventRepositoryFirestore @MockK private lateinit var imageRepository: ImageRepositoryFirebaseStorage + @MockK private lateinit var context: Context private lateinit var associationViewModel: AssociationViewModel @get:Rule val composeTestRule = createComposeRule() @@ -63,6 +65,9 @@ class ExploreScreenTest : TearDown() { // Mock the navigation action to do nothing every { navigationAction.navigateTo(any()) } returns Unit + every { context.getString(AssociationCategory.ARTS.displayNameId) } returns "Arts" + every { context.getString(AssociationCategory.SCIENCE_TECH.displayNameId) } returns + "Science and technology" associations = listOf( @@ -80,7 +85,7 @@ class ExploreScreenTest : TearDown() { } sortedByCategoryAssociations = - getSortedEntriesAssociationsByCategory(associations.groupBy { it.category }) + getSortedEntriesAssociationsByCategory(context, associations.groupBy { it.category }) associationViewModel = AssociationViewModel( @@ -127,7 +132,8 @@ class ExploreScreenTest : TearDown() { fun testGetFilteredAssociationsByCategory() { val associationsByCategory = associations.groupBy { it.category } val sortedByCategoryAssociations = - getSortedEntriesAssociationsByCategory(associationsByCategory) + getSortedEntriesAssociationsByCategory(context, associationsByCategory) + println(sortedByCategoryAssociations) assertEquals(AssociationCategory.ARTS, sortedByCategoryAssociations[0].key) assertEquals(AssociationCategory.SCIENCE_TECH, sortedByCategoryAssociations[1].key) From f2f8f68223432f17c2dc933058f30aabb527760a Mon Sep 17 00:00:00 2001 From: Arnaud Rajon Date: Thu, 5 Dec 2024 20:13:48 +0100 Subject: [PATCH 4/4] chore: fix merge --- app/src/main/res/values-fr/strings.xml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3e58ece90..8c525ca09 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -91,7 +91,6 @@ Supprimer la photo de profil - Remove User Social Supprimer le compte Toutes vos données seront supprimées, êtes-vous sûr de poursuivre ? Confirmer @@ -99,15 +98,15 @@ Echec de suppression de compte, veuillez essayer plus tard Suppression du compte hors ligne Veuillez être connecté à l\'Internet pour supprimer votre compte - Supprimer le réseau social de l\'utilisateur - Modifier Prénom - Modifier Nom - Modifier Biographie - Modifier vos centres d\'intérêts - Modifier vos réseaux sociaux - Annuler vos modifications - Sauvegarder vos modifications - Changements correctement modifiés + Supprimer le réseau social de l\'utilisateur + Modifier Prénom + Modifier Nom + Modifier Biographie + Modifier vos centres d\'intérêts + Modifier vos réseaux sociaux + Annuler vos modifications + Sauvegarder vos modifications + Changements correctement modifiés