Skip to content

Commit d7d8dbf

Browse files
committed
improve grpc permission denied error message
1 parent 77dc2ef commit d7d8dbf

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Error, StatusCode } from "grpc-web"
2+
3+
4+
export function getGrpcErrorMessage( error : Error, prepend?: string) : string {
5+
if( prepend ) {
6+
prepend = prepend + ": "
7+
}
8+
9+
switch (error.code) {
10+
case StatusCode.PERMISSION_DENIED:
11+
return prepend + "Permission Denied"
12+
13+
default:
14+
return prepend + error.message
15+
}
16+
}

react/opentp-client/src/components/Container/Container.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Alignment, Button, Icon, Menu, MenuItem, Navbar, Popover, Position } from "@blueprintjs/core";
22
import FlexLayout, { Layout, Model, TabNode } from "flexlayout-react";
33
import "flexlayout-react/style/dark.css";
4-
import { Error } from "grpc-web";
4+
import { Error, StatusCode } from "grpc-web";
55
import React, { ReactNode } from 'react';
66
import log from 'loglevel';
77
import { ClientConfigServiceClient } from "../../serverapi/ClientconfigserviceServiceClientPb";
@@ -25,6 +25,7 @@ import ColumnChooser from "../TableView/ColumnChooser";
2525
import ViewNameDialog from "./ViewNameDialog";
2626
import { TicketController, ChildOrderBlotterController, OrderHistoryBlotterController, ExecutionsController, QuestionDialogController, ViewNameDialogController, ColumnChooserController } from "./Controllers";
2727
import { ListingContext, OrderContext } from "./Contexts";
28+
import { getGrpcErrorMessage } from "../../common/grpcUtilities";
2829

2930

3031

@@ -41,6 +42,7 @@ enum Views {
4142

4243

4344

45+
4446
export default class Container extends React.Component<any, ContainerState> {
4547

4648

@@ -170,9 +172,11 @@ export default class Container extends React.Component<any, ContainerState> {
170172
response: Empty) => {
171173

172174
if (err) {
173-
let msg = "error whilst cancelling all orders:" + err.message
175+
176+
let msg = getGrpcErrorMessage(err, "Failed to cancel all orders")
174177
log.error(msg)
175178
alert(msg)
179+
176180
} else {
177181
log.debug("cancelled all orders")
178182
}

react/opentp-client/src/components/Login/Login.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { LoginServiceClient } from "../../serverapi/LoginserviceServiceClientPb"
88
import { LoginParams, Token } from "../../serverapi/loginservice_pb";
99
import Container from "../Container/Container";
1010
import GrpcContextProvider from "../GrpcContextProvider";
11+
import { getGrpcErrorMessage } from "../../common/grpcUtilities";
1112

1213

1314
export interface Props {
@@ -113,7 +114,10 @@ export default class Login extends React.Component<Props, State> {
113114
response: Token) => {
114115

115116
if (err) {
116-
window.alert("Failed to login: " + err.message)
117+
let msg = getGrpcErrorMessage(err, "Failed to login")
118+
119+
log.error(msg)
120+
alert(msg)
117121
} else {
118122
var deadline = new Date();
119123
deadline.setSeconds(deadline.getSeconds() + 86400);

react/opentp-client/src/components/OrderTicket/OrderTicket.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AnchorButton, Classes, Colors, Dialog, FormGroup, Intent, Label, NumericInput, MenuItem, Button } from '@blueprintjs/core';
2-
import { Error, StatusCode } from 'grpc-web';
2+
import { Error } from 'grpc-web';
33
import React, { CSSProperties } from 'react';
44
import { getListingLongName, getListingShortName, getTickSize } from '../../common/modelutilities';
55
import log from 'loglevel';
@@ -17,6 +17,7 @@ import { Select, ItemRenderer } from '@blueprintjs/select';
1717
import VwapParamsPanel from './Strategies/VwapParams/VwapParamsPanel';
1818
import { Destinations } from '../../common/destinations';
1919
import { getStrategyDisplayName } from '../../common/strategydescriptions';
20+
import { getGrpcErrorMessage } from '../../common/grpcUtilities';
2021

2122
interface OrderTicketState {
2223
listing?: Listing,
@@ -508,9 +509,12 @@ export default class OrderTicket extends React.Component<OrderTicketProps, Order
508509

509510
this.executionVenueService.modifyOrder(modifyParams, Login.grpcContext.grpcMetaData, (err: Error) => {
510511
if (err) {
511-
let msg = "error whilst modifying order:" + err.message
512+
513+
let msg = getGrpcErrorMessage(err, "Failed to modify order")
514+
512515
log.error(msg)
513516
alert(msg)
517+
514518
}
515519
})
516520
} else {
@@ -551,14 +555,10 @@ export default class OrderTicket extends React.Component<OrderTicketProps, Order
551555
this.executionVenueService.createAndRouteOrder(croParams, Login.grpcContext.grpcMetaData, (err: Error,
552556
response: OrderId) => {
553557
if (err) {
554-
let msg = "error whilst sending order:" + err.message
555-
log.error(msg)
556-
if (err.code === StatusCode.PERMISSION_DENIED) {
557-
alert("permission denied")
558-
} else {
559-
alert(msg)
560-
}
558+
let msg = getGrpcErrorMessage(err, "Failed to send order")
561559

560+
log.error(msg)
561+
alert(msg)
562562

563563
} else {
564564
log.debug("create and route order created order with id:" + response.getOrderid())

0 commit comments

Comments
 (0)