diff --git a/androidApp/src/main/java/com/mbta/tid/mbta_app/android/MainApplication.kt b/androidApp/src/main/java/com/mbta/tid/mbta_app/android/MainApplication.kt index 8f8b3c4053..5731fd4667 100644 --- a/androidApp/src/main/java/com/mbta/tid/mbta_app/android/MainApplication.kt +++ b/androidApp/src/main/java/com/mbta/tid/mbta_app/android/MainApplication.kt @@ -27,9 +27,14 @@ import org.phoenixframework.Socket // expect val appVariant: AppVariant class MainApplication : Application() { - private val socket = Socket(appVariant.socketUrl, decode = ::decodeMessage) - override fun onCreate() { + val locale = super.applicationContext.resources.getString(R.string.current_locale) + val socket = + Socket( + appVariant.socketUrl, + params = mapOf("locale" to locale), + decode = ::decodeMessage, + ) super.onCreate() initKoin( appVariant, diff --git a/iosApp/iosApp/ProductionAppView.swift b/iosApp/iosApp/ProductionAppView.swift index d92933dc9f..636a36f9ca 100644 --- a/iosApp/iosApp/ProductionAppView.swift +++ b/iosApp/iosApp/ProductionAppView.swift @@ -94,7 +94,8 @@ struct ProductionAppView: View { } private static func initSocket() -> PhoenixSocket { - let socket = Socket(appVariant.socketUrl) + let locale = NSLocalizedString("key/current_locale", comment: "") + let socket = Socket(appVariant.socketUrl, paramsClosure: { ["locale": locale] }) // decreasing default from 5s socket.reconnectAfter = { tries in diff --git a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/Alert.kt b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/Alert.kt index cdb4a9d035..52bf1d052c 100644 --- a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/Alert.kt +++ b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/Alert.kt @@ -27,6 +27,7 @@ internal constructor( @SerialName("informed_entity") val informedEntity: List, val lifecycle: Lifecycle, val severity: Int, + val summaries: List? = null, @SerialName("updated_at") val updatedAt: EasternTimeInstant, // This field is not parsed from the Alert object from the backend, it is injected from // global data in the AlertsUsecase if any informed entities apply to a facility. diff --git a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/AlertSummaryEntity.kt b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/AlertSummaryEntity.kt new file mode 100644 index 0000000000..7dea885f73 --- /dev/null +++ b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/AlertSummaryEntity.kt @@ -0,0 +1,14 @@ +package com.mbta.tid.mbta_app.model + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +public data class AlertSummaryEntity( + @SerialName("alert_id") val alertId: String, + @SerialName("route_id") val routeId: String?, + @SerialName("stop_id") val stopId: String?, + @SerialName("trip_id") val tripId: String?, + @SerialName("direction_id") val directionId: Int?, + val summary: String?, +) diff --git a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/ObjectCollectionBuilder.kt b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/ObjectCollectionBuilder.kt index a49af033bd..bc8219ee42 100644 --- a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/ObjectCollectionBuilder.kt +++ b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/model/ObjectCollectionBuilder.kt @@ -104,6 +104,8 @@ private constructor( public var header: String? = null public var lifecycle: Alert.Lifecycle = Alert.Lifecycle.New public var severity: Int = 0 + + public var summaries: List? = null public var updatedAt: EasternTimeInstant = EasternTimeInstant(Instant.fromEpochMilliseconds(0)) public var facilities: Map? = null @@ -153,6 +155,7 @@ private constructor( informedEntity, lifecycle, severity, + summaries, updatedAt, facilities, ) diff --git a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/phoenix/AlertsChannel.kt b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/phoenix/AlertsChannel.kt index 88f061ff35..5d7c78bd41 100644 --- a/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/phoenix/AlertsChannel.kt +++ b/shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/phoenix/AlertsChannel.kt @@ -4,7 +4,7 @@ import com.mbta.tid.mbta_app.json import com.mbta.tid.mbta_app.model.response.AlertsStreamDataResponse internal object AlertsChannel : ChannelSpec { - override val topic = "alerts:v2" + override val topic = "alerts:v3" override val updateEvent = "stream_data"