Skip to content

Commit

Permalink
Standardised frontend signalR event labels
Browse files Browse the repository at this point in the history
  • Loading branch information
andchiind committed Nov 7, 2023
1 parent 1e82885 commit 27600e1
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 13 deletions.
8 changes: 4 additions & 4 deletions frontend/src/components/Contexts/MissionListsContext.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createContext, FC, useContext, useEffect, useState } from 'react'
import { Mission, MissionStatus } from 'models/Mission'
import { BackendAPICaller } from 'api/ApiCaller'
import { useSignalRContext } from './SignalRContext'
import { SignalREventLabels, useSignalRContext } from './SignalRContext'

const upsertList = (list: Mission[], mission: Mission) => {
let newList = [...list]
Expand Down Expand Up @@ -46,7 +46,7 @@ export const useMissions = (): MissionsResult => {

useEffect(() => {
if (connectionReady) {
registerEvent('Mission run created', (username: string, message: string) => {
registerEvent(SignalREventLabels.missionRunCreated, (username: string, message: string) => {
const newMission: Mission = JSON.parse(message)
if (missionQueue.find((m) => m.id === newMission.id))
setMissionQueue((oldQueue) => [...oldQueue, newMission])
Expand All @@ -57,7 +57,7 @@ export const useMissions = (): MissionsResult => {
return [...missionQueueCopy]
})
})
registerEvent('Mission run updated', (username: string, message: string) => {
registerEvent(SignalREventLabels.missionRunUpdated, (username: string, message: string) => {
let updatedMission: Mission = JSON.parse(message)
// This conversion translates from the enum as a number to an enum as a string
updatedMission.status = Object.values(MissionStatus)[updatedMission.status as unknown as number]
Expand Down Expand Up @@ -95,7 +95,7 @@ export const useMissions = (): MissionsResult => {
return oldQueueCopy
})
})
registerEvent('Mission run deleted', (username: string, message: string) => {
registerEvent(SignalREventLabels.missionRunDeleted, (username: string, message: string) => {
let deletedMission: Mission = JSON.parse(message)
setOngoingMissions((missions) => {
const ongoingIndex = missions.findIndex((m) => m.id === deletedMission.id)
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/components/Contexts/RobotContext.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createContext, useContext, useState, FC, useEffect } from 'react'
import { BackendAPICaller } from 'api/ApiCaller'
import { Robot, RobotStatus } from 'models/Robot'
import { useSignalRContext } from './SignalRContext'
import { SignalREventLabels, useSignalRContext } from './SignalRContext'
import { BatteryStatus } from 'models/Battery'
import { RobotType } from 'models/RobotModel'

Expand All @@ -25,7 +25,7 @@ export const RobotProvider: FC<Props> = ({ children }) => {

useEffect(() => {
if (connectionReady) {
registerEvent('Robot list updated', (username: string, message: string) => {
registerEvent(SignalREventLabels.robotListUpdated, (username: string, message: string) => {
let newRobotList: Robot[] = JSON.parse(message)
newRobotList = newRobotList.map((r) => {
r.status = Object.values(RobotStatus)[r.status as unknown as number]
Expand Down
9 changes: 9 additions & 0 deletions frontend/src/components/Contexts/SignalRContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,12 @@ export const SignalRProvider: FC<Props> = ({ children }) => {
}

export const useSignalRContext = () => useContext(SignalRContext)

export enum SignalREventLabels {
missionRunUpdated = 'Mission run updated',
missionDefinitionUpdated = 'Mission definition updated',
missionRunCreated = 'Mission run created',
missionRunDeleted = 'Mission run deleted',
missionRunFailed = 'Mission run failed',
robotListUpdated = 'Robot list updated'
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { useNavigate } from 'react-router-dom'
import { addMinutes, max } from 'date-fns'
import { useLanguageContext } from 'components/Contexts/LanguageContext'
import { Icons } from 'utils/icons'
import { useSignalRContext } from 'components/Contexts/SignalRContext'
import { SignalREventLabels, useSignalRContext } from 'components/Contexts/SignalRContext'
import { useInstallationContext } from 'components/Contexts/InstallationContext'

const StyledCard = styled(Card)`
Expand Down Expand Up @@ -131,7 +131,7 @@ export function FailedMissionAlertView() {
// Register a signalR event handler that listens for new failed missions
useEffect(() => {
if (connectionReady)
registerEvent('Mission run failed', (username: string, message: string) => {
registerEvent(SignalREventLabels.missionRunFailed, (username: string, message: string) => {
setNewFailedMission(JSON.parse(message))
console.log(JSON.parse(message))
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ import { getInspectionDeadline } from 'utils/StringFormatting'
import { InspectionTable } from './InspectionTable'
import { StyledDict, compareInspections } from './InspectionUtilities'
import { DeckCards } from './DeckCards'
import { useSignalRContext } from 'components/Contexts/SignalRContext'

import { SignalREventLabels, useSignalRContext } from 'components/Contexts/SignalRContext'

export interface Inspection {
missionDefinition: CondensedMissionDefinition
Expand Down Expand Up @@ -114,7 +113,7 @@ export function InspectionSection({

useEffect(() => {
if (connectionReady) {
registerEvent('Mission definition updated', (username: string, message: string) => {
registerEvent(SignalREventLabels.missionDefinitionUpdated, (username: string, message: string) => {
const mDef: CondensedMissionDefinition = JSON.parse(message)
if (!mDef.area) return
const relevantDeck = mDef.area.deckName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { Button, Typography, Card, Dialog, TextField } from '@equinor/eds-core-r
import { useLanguageContext } from 'components/Contexts/LanguageContext'
import { MissionDefinitionUpdateForm } from 'models/MissionDefinitionUpdateForm'
import { config } from 'config'
import { useSignalRContext } from 'components/Contexts/SignalRContext'
import { SignalREventLabels, useSignalRContext } from 'components/Contexts/SignalRContext'

const StyledFormDialog = styled.div`
display: flex;
Expand Down Expand Up @@ -270,7 +270,7 @@ export function MissionDefinitionPage() {

useEffect(() => {
if (connectionReady) {
registerEvent('Mission definition updated', (username: string, message: string) => {
registerEvent(SignalREventLabels.missionDefinitionUpdated, (username: string, message: string) => {
const missionDefinition: CondensedMissionDefinition = JSON.parse(message)
missionDefinition.sourceType =
Object.values(SourceType)[missionDefinition.sourceType as unknown as number]
Expand Down

0 comments on commit 27600e1

Please sign in to comment.