21720: implemented CustomStyleRulesCallback and replaced everywhere
[arvados.git] / services / workbench2 / src / views-components / api-client-authorizations-dialog / help-dialog.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import React from "react";
6 import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@material-ui/core";
7 import { WithDialogProps } from "store/dialog/with-dialog";
8 import { withDialog } from 'store/dialog/with-dialog';
9 import { DefaultCodeSnippet } from 'components/default-code-snippet/default-code-snippet';
10 import { CustomStyleRulesCallback } from 'common/custom-theme';
11 import { WithStyles, withStyles } from '@material-ui/core/styles';
12 import { ArvadosTheme } from 'common/custom-theme';
13 import { compose } from "redux";
14 import { API_CLIENT_AUTHORIZATION_HELP_DIALOG } from 'store/api-client-authorizations/api-client-authorizations-actions';
15
16 type CssRules = 'codeSnippet';
17
18 const styles: CustomStyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
19     codeSnippet: {
20         borderRadius: theme.spacing.unit * 0.5,
21         border: `1px solid ${theme.palette.grey["400"]}`,
22         '& pre': {
23             fontSize: '0.815rem'
24         }
25     }
26 });
27
28 interface HelpApiClientAuthorizationDataProps {
29     apiHost: string;
30     apiToken: string;
31     email: string;
32 }
33
34 export const HelpApiClientAuthorizationDialog = compose(
35     withDialog(API_CLIENT_AUTHORIZATION_HELP_DIALOG),
36     withStyles(styles))(
37         (props: WithDialogProps<HelpApiClientAuthorizationDataProps> & WithStyles<CssRules>) =>
38             <Dialog open={props.open}
39                 onClose={props.closeDialog}
40                 fullWidth
41                 maxWidth='md'>
42                 <DialogTitle>HELP:</DialogTitle>
43                 <DialogContent>
44                     <DefaultCodeSnippet
45                         className={props.classes.codeSnippet}
46                         lines={[snippetText(props.data)]} />
47                         {/* // lines={snippetText2(props.data)} /> */}
48                 </DialogContent>
49                 <DialogActions>
50                     <Button
51                         variant='text'
52                         color='primary'
53                         onClick={props.closeDialog}>
54                         Close
55                 </Button>
56                 </DialogActions>
57             </Dialog>
58     );
59
60 const snippetText = (data: HelpApiClientAuthorizationDataProps) => `### Pasting the following lines at a shell prompt will allow Arvados SDKs
61 ### to authenticate to your account, ${data.email}
62
63 read ARVADOS_API_TOKEN <<EOF
64 ${data.apiToken}
65 EOF
66 export ARVADOS_API_TOKEN ARVADOS_API_HOST=${data.apiHost}
67 unset ARVADOS_API_HOST_INSECURE`;