Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve feedback when saving locations, add toast notifications #992

Merged
merged 17 commits into from
Sep 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
3e9e8a2
improvement(actions/user): Replace window.alert with toast on saving …
binh-dam-ibigroup Sep 1, 2023
f6b2a82
improvement(actions/user): Replace window.alert with toast notif afte…
binh-dam-ibigroup Sep 1, 2023
6938b8f
refactor(actions/user): Extract code for showing a generic alert.
binh-dam-ibigroup Sep 1, 2023
7830b5d
improvement(connected-endpoints-overlay): Add intl support for rememb…
binh-dam-ibigroup Sep 7, 2023
1cd733e
refactor(connected-endpoints-overlay): Convert to TypeScript.
binh-dam-ibigroup Sep 7, 2023
9ed7040
refactor(actions/user): Move "preferences saved" feedback to the user…
binh-dam-ibigroup Sep 7, 2023
d385ec2
improvement(actions/user): Alert if trying to save location while log…
binh-dam-ibigroup Sep 7, 2023
22ca13c
improvement(actions/user): Apply toast to localStorage strategy.
binh-dam-ibigroup Sep 7, 2023
bcba766
chore(i18n): Tweak FR text.
binh-dam-ibigroup Sep 7, 2023
79cb198
refactor: Address type errors, remove unneeded async.
binh-dam-ibigroup Sep 7, 2023
f48f055
Merge branch 'dev' into add-toast-notifications
binh-dam-ibigroup Sep 7, 2023
6301edc
Merge branch 'dev' into add-toast-notifications
binh-dam-ibigroup Sep 15, 2023
c7cc07a
Merge branch 'dev' into add-toast-notifications
binh-dam-ibigroup Sep 19, 2023
ed184f3
Merge branch 'dev' into add-toast-notifications
binh-dam-ibigroup Sep 19, 2023
1bc97f5
Merge branch 'dev' into add-toast-notifications
binh-dam-ibigroup Sep 21, 2023
e1c6453
refactor(toasts): Show correct place name in saved place toast confir…
binh-dam-ibigroup Sep 21, 2023
ffaedd5
Merge branch 'dev' into add-toast-notifications
binh-dam-ibigroup Sep 21, 2023
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
2 changes: 2 additions & 0 deletions i18n/en-US.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ actions:
emailVerificationResent: The email verification message has been resent.
genericError: "An error was encountered: {err}"
itineraryExistenceCheckFailed: Error checking whether your selected trip is possible.
mustBeLoggedInToSavePlace: Please log in to save locations.
placeRemembered: The settings for this place have been saved.
preferencesSaved: Your preferences have been saved.
smsInvalidCode: The code you entered is invalid. Please try again.
smsResendThrottled: >-
Expand Down
113 changes: 57 additions & 56 deletions i18n/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,32 +30,31 @@ actions:
No se puede guardar el plan: este plan no se pudo guardar debido a la
falta de capacidad en uno o más vehículos. Por favor, vuelva a planificar
su viaje.
maxTripRequestsExceeded: Número de solicitudes de viaje superadas sin resultados
válidos
maxTripRequestsExceeded: Número de solicitudes de viaje superadas sin resultados válidos
saveItinerariesError: "No se pudieron guardar los itinerarios: {err}"
setDateError: "Error al establecer la fecha:"
setGroupSizeError: "No se pudo establecer el tamaño del grupo:"
setPaymentError: "Error al configurar la información de pago:"
setRequestStatusError: "Error al establecer el estado de la solicitud:"
location:
deniedAccessAlert: >
El acceso a tu ubicación está bloqueado.

Para utilizar tu ubicación actual, activa los permisos de ubicación desde
tu navegador y vuelve a cargar la página.
geolocationNotSupportedError: Su navegador no admite la geolocalización
unknownPositionError: Error desconocido al obtener la posición
userDeniedPermission: Usuario sin permiso
deniedAccessAlert: "El acceso a tu ubicación está bloqueado.\nPara utilizar tu
ubicación actual, activa los permisos de ubicación desde tu navegador y vuelve
a cargar la página. \n"
map:
currentLocation: (Ubicación actual)
user:
accountDeleted: El ({email}) de su cuenta de usuario ha sido eliminado.
authTokenError: Error al obtener un token de autorización.
confirmDeleteMonitoredTrip: ¿Desea eliminar este viaje?
confirmDeletePlace: ¿Quiere eliminar este lugar?
emailVerificationResent: El mensaje de verificación de correo electrónico ha sido
reenviado.
emailVerificationResent: El mensaje de verificación de correo electrónico ha sido reenviado.
genericError: "Se ha encontrado un error: {err}"
itineraryExistenceCheckFailed: Comprobación de errores para ver si el viaje seleccionado
es posible.
itineraryExistenceCheckFailed: Comprobación de errores para ver si el viaje seleccionado es posible.
preferencesSaved: Sus preferencias se han guardado.
smsInvalidCode: El código introducido no es válido. Por favor, inténtelo de nuevo.
smsResendThrottled: >-
Expand Down Expand Up @@ -112,12 +111,12 @@ common:
"yes": Sí
itineraryDescriptions:
calories: "{calories, number} kcal"
fareUnknown: No hay información de las tarifas
noItineraryToDisplay: No hay itinerario que mostrar.
relativeCo2: >
{co2} de CO₂ en {isMore, select, true {más} other {menos} } que conducir
solo
transfers: "{transfers, plural, =0 {} one {# transferencia} other {# transferencias}}"
fareUnknown: No hay información de las tarifas
linkOpensNewWindow: (Abre una nueva ventana)
modes:
bicycle_rent: Compartir bicicleta
Expand Down Expand Up @@ -178,8 +177,8 @@ components:
tooManyPlaces: Se alcanzó el máximo de lugares intermedios
AdvancedOptions:
bannedRoutes: Seleccionar rutas prohibidas…
preferredRoutes: Seleccionar rutas preferidas…
bikeTolerance: Tolerancia de las bicicletas
preferredRoutes: Seleccionar rutas preferidas…
walkTolerance: Tolerancia al andar
AfterSignInScreen:
mainTitle: Redirigiendo…
Expand Down Expand Up @@ -241,8 +240,7 @@ components:
destination: destino
origin: origen
planTripTooltip: Planificar viaje
validationMessage: "Por favor, defina los siguientes campos para planificar un
viaje: {issues}"
validationMessage: "Por favor, defina los siguientes campos para planificar un viaje: {issues}"
BeforeSignInScreen:
mainTitle: Iniciando sesión
message: >
Expand Down Expand Up @@ -373,6 +371,48 @@ components:
NotificationPrefsPane:
noDeviceForPush: Regístrese con la aplicación móvil para acceder a esta configuración.
notificationChannelPrompt: "Recibir notificaciones para sus viajes guardados por:"
OTP2ErrorRenderer:
LOCATION_NOT_FOUND:
body: >-
{inputFieldsCount, plural, =0 {} one {localización es} other
{localizaciones son}} no están cerca de ninguna calle.
header: No se puede acceder a la ubicación
NO_STOPS_IN_RANGE:
body: >-
{inputFieldsCount, plural, =0 {} one {ubicación es} other {ubicaciones
son}} no están cerca de ninguna parada del transporte.
header: Sin paradas cerca
NO_TRANSIT_CONNECTION:
body: >-
No se encontró ninguna conexión entre tu origen y destino en el día
seleccionado, utilizando los tipos de vehículos que seleccionaste.
header: Sin conexiones
NO_TRANSIT_CONNECTION_IN_SEARCH_WINDOW:
body: >-
Se encontró una conexión, pero estaba fuera de las opciones de la
búsqueda, intenta ajustar las opciones de la búsqueda, usando los tipos
de vehículos que seleccionaste.
header: Sin conexiones por el criterio de la búsqueda
OUTSIDE_BOUNDS:
body: >-
{inputFieldsCount, plural, =0 {} one {localización es} other
{localizaciones son}} no están en los límites del planificador de
viajes.
header: Ubicación fuera de los límites
OUTSIDE_SERVICE_PERIOD:
body: >-
La fecha específicada está fuera del rango de los datos disponibles para
la búsqueda de los viajes.
header: Fuera de plazo
SYSTEM_ERROR:
body: Se ha producido un error desconocido en la búsqueda.
header: Error en el planificador de los viajes
WALKING_BETTER_THAN_TRANSIT:
body: Puede completar esta ruta más rápido caminando.
header: El transporte público no es la forma más rápida de hacer este viaje
inputFields:
FROM: Procedencia
TO: Destino
PhoneNumberEditor:
changeNumber: Cambiar número de teléfono
invalidCode: Introduzca 6 dígitos para el código de validación.
Expand Down Expand Up @@ -502,8 +542,7 @@ components:
header: ¡La sesión está a punto de terminar!
keepSession: Continuar sesión
SimpleRealtimeAnnotation:
usingRealtimeInfo: Este viaje utiliza información de tráfico y retrasos en tiempo
real
usingRealtimeInfo: Este viaje utiliza información de tráfico y retrasos en tiempo real
StackedPaneDisplay:
savePreferences: Guardar preferencias
StopScheduleTable:
Expand Down Expand Up @@ -566,19 +605,16 @@ components:
travelingAt: Viajando a {milesPerHour}
vehicleName: Vehículo {vehicleNumber}
TripBasicsPane:
checkingItineraryExistence: Comprobación de la existencia de itinerarios para
cada día de la semana…
checkingItineraryExistence: Comprobación de la existencia de itinerarios para cada día de la semana…
selectAtLeastOneDay: Por favor, seleccione al menos un día para el seguimiento.
tripDaysPrompt: ¿Qué días hace este viaje?
tripIsAvailableOnDaysIndicated: Su viaje está disponible en los días de la semana
indicados anteriormente.
tripIsAvailableOnDaysIndicated: Su viaje está disponible en los días de la semana indicados anteriormente.
tripNamePrompt: "Por favor, indique un nombre para este viaje:"
tripNotAvailableOnDay: El viaje no está disponible el {repeatedDay}
unsavedChangesExistingTrip: >-
Todavía no ha guardado su viaje. Si abandona la página, los cambios se
perderán.
unsavedChangesNewTrip: Todavía no ha guardado su nuevo viaje. Si abandona la página,
se perderá.
unsavedChangesNewTrip: Todavía no ha guardado su nuevo viaje. Si abandona la página, se perderá.
TripNotificationsPane:
advancedSettings: Configuración avanzada
altRouteRecommended: Se recomienda una ruta alternativa o un punto de transferencia
Expand Down Expand Up @@ -738,41 +774,6 @@ components:
switcher: Botón de cambio
WelcomeScreen:
prompt: ¿A donde quiere ir?
OTP2ErrorRenderer:
SYSTEM_ERROR:
header: Error en el planificador de los viajes
body: Se ha producido un error desconocido en la búsqueda.
LOCATION_NOT_FOUND:
body: '{inputFieldsCount, plural, =0 {} one {localización es} other {localizaciones
son}} no están cerca de ninguna calle.'
header: No se puede acceder a la ubicación
NO_STOPS_IN_RANGE:
header: Sin paradas cerca
body: '{inputFieldsCount, plural, =0 {} one {ubicación es} other {ubicaciones
son}} no están cerca de ninguna parada del transporte.'
NO_TRANSIT_CONNECTION:
body: No se encontró ninguna conexión entre tu origen y destino en el día seleccionado,
utilizando los tipos de vehículos que seleccionaste.
header: Sin conexiones
inputFields:
FROM: Procedencia
TO: Destino
WALKING_BETTER_THAN_TRANSIT:
body: Puede completar esta ruta más rápido caminando.
header: El transporte público no es la forma más rápida de hacer este viaje
OUTSIDE_SERVICE_PERIOD:
header: Fuera de plazo
body: La fecha específicada está fuera del rango de los datos disponibles para
la búsqueda de los viajes.
OUTSIDE_BOUNDS:
header: Ubicación fuera de los límites
body: '{inputFieldsCount, plural, =0 {} one {localización es} other {localizaciones
son}} no están en los límites del planificador de viajes.'
NO_TRANSIT_CONNECTION_IN_SEARCH_WINDOW:
body: Se encontró una conexión, pero estaba fuera de las opciones de la búsqueda,
intenta ajustar las opciones de la búsqueda, usando los tipos de vehículos
que seleccionaste.
header: Sin conexiones por el criterio de la búsqueda
config:
accessModes:
bicycle: Tránsito + Bicicleta Personal
Expand Down
32 changes: 13 additions & 19 deletions i18n/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ _id: fr
_name: Exemple de traduction pour OTP-react-redux en français
actions:
callTaker:
callQuerySaveError: "Erreur lors de l'enregistrement des requêtes pour l'appel
: {err}"
callQuerySaveError: "Erreur lors de l'enregistrement des requêtes pour l'appel : {err}"
callSaveError: "Impossible d'enregistrer l'appel : {err}"
checkSessionError: "Erreur durant la session d'authentification : {err}"
couldNotFindCallError: >-
Expand All @@ -18,11 +17,9 @@ actions:
true {aller}
other {retour}
} planifié préalablement pour cette demande. Voulez-vous continuer ?
deleteItinerariesError: "Erreur lors de la suppression du trajet pour le groupe
:"
deleteItinerariesError: "Erreur lors de la suppression du trajet pour le groupe :"
deleteNoteError: "Erreur lors de la suppression d'une note sur le groupe :"
editSubmitterNotesError: "Erreur lors de la modification des notes du demandeur
:"
editSubmitterNotesError: "Erreur lors de la modification des notes du demandeur :"
fetchFieldTripError: "Erreur de chargement du groupe scolaire : {err}"
fetchFieldTripsError: "Erreur lors du chargement des groupes scolaires : {err}"
fetchTripsForDateError: >-
Expand All @@ -46,8 +43,7 @@ actions:

Pour utiliser votre emplacement actuel, permettez-en l'accès depuis votre
navigateur, et ouvrez de nouveau cette page.
geolocationNotSupportedError: La géolocalisation n'est pas prise en charge par
votre navigateur.
geolocationNotSupportedError: La géolocalisation n'est pas prise en charge par votre navigateur.
unknownPositionError: Erreur inconnue lors de la détection de votre emplacement.
userDeniedPermission: Refusé par l'utilisateur
map:
Expand All @@ -61,8 +57,9 @@ actions:
Le message de vérification de votre adresse e-mail a été envoyé de
nouveau.
genericError: "Une erreur s'est produite : {err}"
itineraryExistenceCheckFailed: Erreur lors de la vérification de la validité du
trajet choisi.
itineraryExistenceCheckFailed: Erreur lors de la vérification de la validité du trajet choisi.
mustBeLoggedInToSavePlace: Veuillez vous connecter pour enregistrer des lieux.
placeRemembered: Les informations pour ce lieu ont été enregistrées.
preferencesSaved: Vos préférences ont été enregistrées.
smsInvalidCode: Le code saisi est incorrect. Veuillez réessayer.
smsResendThrottled: >-
Expand Down Expand Up @@ -351,10 +348,8 @@ components:
header: Options de recherche
NarrativeItinerariesHeader:
changeSortDir: Changer l'ordre de tri
howToFindResults: Pour afficher les résultats, utilisez l'en-tête Trajets trouvés
plus bas.
itinerariesFound: "{itineraryNum, plural, one {# trajet trouvé} other {# trajets
trouvés} }"
howToFindResults: Pour afficher les résultats, utilisez l'en-tête Trajets trouvés plus bas.
itinerariesFound: "{itineraryNum, plural, one {# trajet trouvé} other {# trajets trouvés} }"
numIssues: "{issueNum, plural, one {# problème} other {# problèmes} }"
resultsSortedBy: >-
Résultats triés par {sortSelected}. Pour modifier l'ordre, utilisez le
Expand Down Expand Up @@ -421,7 +416,8 @@ components:
header: Echec de la recherche
WALKING_BETTER_THAN_TRANSIT:
body: >-
Vous pouvez effectuer ce trajet plus rapidement sans prendre les transports.
Vous pouvez effectuer ce trajet plus rapidement sans prendre les
transports.
header: Moins rapide en transports
inputFields:
FROM: point de départ
Expand Down Expand Up @@ -666,8 +662,7 @@ components:
unknownState: État du trajet inconnu
untogglePause: Reprendre
inactive:
description: Reprenez le suivi pour obtenir des dernières conditions de votre
trajet.
description: Reprenez le suivi pour obtenir des dernières conditions de votre trajet.
heading: Suivi suspendu
nextTripNotPossible:
description: >
Expand All @@ -686,8 +681,7 @@ components:
déterminées.
heading: Conditions du trajet indéterminées
snoozed:
description: Reprenez le suivi pour obtenir des dernières conditions de votre
trajet.
description: Reprenez le suivi pour obtenir des dernières conditions de votre trajet.
heading: Suivi suspendu jusqu'à demain
upcoming:
nextTripBegins: >-
Expand Down
2 changes: 1 addition & 1 deletion lib/actions/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ export function setLocale(locale) {

if (loggedInUser) {
loggedInUser.preferredLocale = matchedLocale
dispatch(createOrUpdateUser(loggedInUser, false))
dispatch(createOrUpdateUser(loggedInUser))
}
}
}
Expand Down
Loading
Loading