From c838e77349398e1a4a8a2d61b8cf4999ac4c238a Mon Sep 17 00:00:00 2001 From: "Stephanos A." Date: Thu, 28 May 2026 10:13:11 +0300 Subject: [PATCH] fix: add missing properties to IStation interface - Add 'country' property to match shared types package - Add 'createdAt' property to match shared types package - Add 'updatedAt' property to match shared types package This fixes the TypeScript type mismatch error in StationsPage.tsx where the local IStation type was missing properties required by the shared @edr/types/passenger package during the Docker build. Fixes: https://github.com/Tria-plc/edr-platform/actions/runs/26325256104/job/77502650459 --- .../portal/src/types/index.ts | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/apps/edr-passenger-web/portal/src/types/index.ts b/apps/edr-passenger-web/portal/src/types/index.ts index 09b7c9fc2..b206daa6a 100644 --- a/apps/edr-passenger-web/portal/src/types/index.ts +++ b/apps/edr-passenger-web/portal/src/types/index.ts @@ -1,22 +1,25 @@ -// ── Enums ────────────────────────────────────────────────────────────────────── +// ── Enums ──────────────────────────────────────────────────────────────── export type TripStatus = 'SCHEDULED' | 'BOARDING' | 'EN_ROUTE' | 'ARRIVED' | 'CANCELLED' | 'DELAYED'; export type SeatStatus = 'AVAILABLE' | 'HELD' | 'BOOKED' | 'BLOCKED'; export type ServiceClass = 'ECONOMY' | 'BUSINESS' | 'FIRST'; export type BookingStatus = 'DRAFT' | 'PENDING_PAYMENT' | 'CONFIRMED' | 'CANCELLED' | 'COMPLETED' | 'NO_SHOW'; export type PaymentMethod = 'TELEBIRR' | 'CBE_BIRR' | 'EBIRR' | 'CARD' | 'WALLET'; -// ── Station ──────────────────────────────────────────────────────────────────── +// ── Station ──────────────────────────────────────────────────────────────── export interface IStation { id: string; code: string; name: string; city: string; + country: string; timezone: string; lat: number; lng: number; + createdAt: string | Date; + updatedAt: string | Date; } -// ── Trip / Schedule ──────────────────────────────────────────────────────────── +// ── Trip / Schedule ──────────────────────────────────────────────────────── export interface ITripStation { id: string; code: string; @@ -62,7 +65,7 @@ export interface IStopTime { station: IStation; } -// ── Seat ─────────────────────────────────────────────────────────────────────── +// ── Seat ──────────────────────────────────────────────────────────────────── export interface ISeat { id: string; number: string; // label from API @@ -81,7 +84,7 @@ export interface ISeatMap { coaches: ICoach[]; } -// ── Segment-based seats ──────────────────────────────────────────────────────── +// ── Segment-based seats ──────────────────────────────────────────────────── export interface ISegment { fromStationId: string; toStationId: string; @@ -119,7 +122,7 @@ export interface ISegmentConfirmResult { segments: Array<{ fromStationId: string; toStationId: string; fromSequence: number; toSequence: number }>; } -// ── Booking ──────────────────────────────────────────────────────────────────── +// ── Booking ──────────────────────────────────────────────────────────────── export interface IBooking { id: string; bookingRef: string; @@ -140,7 +143,7 @@ export interface IBooking { payment?: { method: PaymentMethod; status: string }; } -// ── Ticket ───────────────────────────────────────────────────────────────────── +// ── Ticket ───────────────────────────────────────────────────────────────── export interface ITicket { id: string; bookingId: string; @@ -158,7 +161,7 @@ export interface ITicket { qrPayload: string; } -// ── Fare quote ───────────────────────────────────────────────────────────────── +// ── Fare quote ───────────────────────────────────────────────────────────── export interface IFareQuote { tripId: string; serviceClass: ServiceClass; @@ -171,7 +174,7 @@ export interface IFareQuote { currency: string; } -// ── Passenger ───────────────────────────────────────────────────────────────── +// ── Passenger ────────────────────────────────────────────────────────────── export interface IPassengerProfile { id: string; fullName: string; @@ -181,7 +184,7 @@ export interface IPassengerProfile { bookings: IBooking[]; } -// ── Loyalty ──────────────────────────────────────────────────────────────────── +// ── Loyalty ──────────────────────────────────────────────────────────────── export interface ILoyaltyAccount { id: string; passengerId: string; @@ -192,7 +195,7 @@ export interface ILoyaltyAccount { tierProgressPercent: number; } -// ── Wallet ───────────────────────────────────────────────────────────────────── +// ── Wallet ───────────────────────────────────────────────────────────────── export interface IWallet { id: string; passengerId: string; @@ -200,7 +203,7 @@ export interface IWallet { currency: string; } -// ── Notification ─────────────────────────────────────────────────────────────── +// ── Notification ─────────────────────────────────────────────────────────── export interface INotification { id: string; passengerId: string; @@ -212,7 +215,7 @@ export interface INotification { createdAt: string; } -// ── Promotion ────────────────────────────────────────────────────────────────── +// ── Promotion ────────────────────────────────────────────────────────────── export interface IPromotion { id: string; title: string; @@ -225,7 +228,7 @@ export interface IPromotion { active: boolean; } -// ── Live tracking ────────────────────────────────────────────────────────────── +// ── Live tracking ────────────────────────────────────────────────────────── export interface ILiveStatus { tripId: string; trainName: string; @@ -241,7 +244,7 @@ export interface ILiveStatus { updatedAt: string; } -// ── Dashboard ────────────────────────────────────────────────────────────────── +// ── Dashboard ────────────────────────────────────────────────────────────── export interface IDashboard { user: { firstName: string; greetingKey: 'MORNING' | 'AFTERNOON' | 'EVENING' }; upcomingTicket: {