Skip to content

Commit 9becc8a

Browse files
author
Kain Bryan-Jones
committed
Merge branch '13-event-casting-fix' into 'master'
[#13] - fix TripLocationHistory and OperationList not casting correctly when... Closes #13 See merge request research-development/hydra/software/sdk/evam-sdk!15
2 parents b13c76d + 9141b72 commit 9becc8a

24 files changed

+335
-78
lines changed

src/api/EvamApi.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import {
77
Battery,
88
DeviceRole,
99
DisplayMode,
10-
EvamEvent, GRPC,
10+
EvamEvent,
11+
GRPC,
1112
InternetState,
1213
Location,
1314
Notification,
@@ -143,6 +144,7 @@ export class EvamApi {
143144
private static newOrUpdatedInternetStateCallbacks: CallbackFunctionArray = [];
144145
private static newOrUpdatedVehicleStateCallbacks: CallbackFunctionArray = [];
145146
private static newOrUpdatedTripLocationHistoryCallbacks: CallbackFunctionArray = [];
147+
private static newOrUpdatedOperationListCallbacks: CallbackFunctionArray = [];
146148
private static newOrUpdatedBatteryCallbacks: CallbackFunctionArray = [];
147149
private static newOrUpdatedDisplayModeCallbacks: CallbackFunctionArray = [];
148150

@@ -550,7 +552,7 @@ export class EvamApi {
550552
onNewOrUpdatedActiveOperation(callback: CallbackFunction<Operation | undefined>) {
551553
if (callback) {
552554
const c = (e: Event) => {
553-
callback((e as CustomEvent).detail as Operation);
555+
callback(Operation.fromJSON((e as CustomEvent).detail));
554556
};
555557
EvamApi.newOrUpdatedOperationCallbacks.push(c);
556558
subscribe(EvamEvent.NewOrUpdatedOperation, c);
@@ -594,7 +596,7 @@ export class EvamApi {
594596
onNewOrUpdatedLocation(callback: CallbackFunction<Location | undefined>) {
595597
if (callback) {
596598
const c = (e: Event) => {
597-
callback((e as CustomEvent).detail as Location);
599+
callback(Location.fromJSON((e as CustomEvent).detail));
598600
};
599601
EvamApi.newOrUpdatedLocationCallbacks.push(c);
600602
subscribe(EvamEvent.NewOrUpdatedLocation, c);
@@ -624,7 +626,7 @@ export class EvamApi {
624626
onNewOrUpdatedVehicleState(callback: CallbackFunction<VehicleState | undefined>) {
625627
if (callback) {
626628
const c = (e: Event) => {
627-
callback((e as CustomEvent).detail as VehicleState);
629+
callback(VehicleState.fromJSON((e as CustomEvent).detail));
628630
};
629631
EvamApi.newOrUpdatedVehicleStateCallbacks.push(c);
630632
subscribe(EvamEvent.NewOrUpdatedVehicleState, c);
@@ -640,7 +642,8 @@ export class EvamApi {
640642
onNewOrUpdatedTripLocationHistory(callback: CallbackFunction<TripLocationHistory | undefined>) {
641643
if (callback) {
642644
const c = (e: Event) => {
643-
callback((e as CustomEvent).detail as TripLocationHistory);
645+
const {detail} = (e as CustomEvent);
646+
callback(TripLocationHistory.fromJSON(detail));
644647
};
645648
EvamApi.newOrUpdatedTripLocationHistoryCallbacks.push(c);
646649
subscribe(EvamEvent.NewOrUpdatedTripLocationHistory, c);
@@ -656,9 +659,12 @@ export class EvamApi {
656659
onNewOrUpdatedOperationList(callback: CallbackFunction<Operation[] | undefined>) {
657660
if (callback) {
658661
const c = (e: Event) => {
659-
callback((e as CustomEvent).detail as Operation[]);
662+
const detail = (e as CustomEvent).detail;
663+
if (Array.isArray(detail)) {
664+
callback(detail.map<Operation>(Operation.fromJSON));
665+
}
660666
};
661-
EvamApi.newOrUpdatedTripLocationHistoryCallbacks.push(c);
667+
EvamApi.newOrUpdatedOperationListCallbacks.push(c);
662668
subscribe(EvamEvent.NewOrUpdatedOperationList, c);
663669
}
664670
}

src/component/appbar/EvamAppBarLayout.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import * as React from 'react';
2-
import {Button, Grid} from "@mui/material";
3-
import Box from '@mui/material/Box';
1+
import * as React from "react";
42
import {Fragment, ReactNode, useRef} from "react";
5-
import {EvamTabContext, EvamAppBarContextModel} from "./EvamTabContext";
3+
import {Button, Grid} from "@mui/material";
4+
import Box from "@mui/material/Box";
5+
import {EvamAppBarContextModel, EvamTabContext} from "./EvamTabContext";
66
import {Route, Routes, useNavigate} from "react-router-dom";
77
import {EvamAppBarHeaderTabs} from "./header/EvamAppBarHeaderTabs";
88
import {EvamAppBarHeaderMenu} from "./header/EvamAppBarHeaderMenu";

src/component/appbar/EvamHamburgerMenu.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import React, {ReactNode, useState} from "react";
22
import {Button, Grid, SxProps} from "@mui/material";
33
import MenuIcon from "@mui/icons-material/Menu";
4-
import {alpha, styled} from '@mui/material/styles';
5-
import Menu, {MenuProps} from '@mui/material/Menu';
4+
import {alpha, styled} from "@mui/material/styles";
5+
import Menu, {MenuProps} from "@mui/material/Menu";
66
import {EvamTabContext} from "./EvamTabContext";
7-
import {EvamApi} from "../../api/EvamApi";
87

98
interface EvamHamburgerMenuProps {
109
children: ReactNode;

src/component/appbar/EvamTab.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Tab from '@mui/material/Tab';
1+
import Tab from "@mui/material/Tab";
22
import * as React from "react";
33

44
/**

src/component/appbar/EvamTabPanel.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import * as React from 'react';
1+
import * as React from "react";
22
import {EvamTabContext} from "./EvamTabContext";
3-
import Typography from '@mui/material/Typography';
4-
import Box from '@mui/material/Box';
3+
import Typography from "@mui/material/Typography";
4+
import Box from "@mui/material/Box";
55
import {Slide} from "@mui/material";
66

77
export interface TabPanelProps {

src/component/appbar/header/EvamSearchInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {Input} from "@mui/material";
22
import * as React from "react";
3-
import {useNavigate, useSearchParams} from "react-router-dom";
43
import {Fragment, useRef} from "react";
4+
import {useNavigate, useSearchParams} from "react-router-dom";
55

66
interface EvamSearchInputProps {
77
searchTextHint: string

src/dev-test-environment/components/NotificationComponent/NotificationComponent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, {useRef, useState} from "react";
2-
import {Button, Card, Icon, CardBody, CardFooter, CardHeader, Heading, HStack, Text} from "@chakra-ui/react";
2+
import {Button, Card, CardBody, CardFooter, CardHeader, Heading, HStack, Icon, Text} from "@chakra-ui/react";
33
import {VehicleServicesNoRender} from "../util";
44
import {_InternalVehicleServicesNotification} from "../../../domain/_InternalVehicleServicesNotification";
55
import {motion} from "framer-motion";
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import {NotificationComponent} from "./NotificationComponent";
2-
import {VehicleServicesNoRender} from "./util"
2+
import {VehicleServicesNoRender} from "./util";
33

44
export {NotificationComponent, VehicleServicesNoRender}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
import {VehicleServicesNoRender} from './VehicleServicesNoRender'
1+
import {VehicleServicesNoRender} from "./VehicleServicesNoRender";
22

33
export {VehicleServicesNoRender}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
import {subscribe, publish, unsubscribe} from "./EventHelpers";
1+
import {publish, subscribe, unsubscribe} from "./EventHelpers";
22

33
export {subscribe, publish, unsubscribe};

0 commit comments

Comments
 (0)