import React from 'react'; import { compose, graphql } from 'react-apollo'; import { Margin } from 'styled-components-spacing'; import find from 'lodash.find'; import get from 'lodash.get'; import { ViewContainer, Message, MessageTitle, MessageDescription, StatusLoader } from 'joyent-ui-toolkit'; import Editor from 'joyent-ui-toolkit/dist/es/editor'; import Description from '@components/description'; import Empty from '@components/empty'; import GetMetadata from '@graphql/list-metadata.gql'; export const UserScript = ({ metadata, loading = false, error = null }) => ( User script can be used to inject a custom boot script. {loading ? : null} {!loading && error ? ( Ooops! An error occurred while loading the instance user-script ) : null} {!loading && metadata ? ( ) : null} {!loading && !error && !metadata ? ( No User Script defined ) : null} ); export default compose( graphql(GetMetadata, { options: ({ match }) => ({ variables: { fetchPolicy: 'network-only', name: get(match, 'params.instance') } }), props: ({ data }) => { const { loading, error, variables, refetch, ...rest } = data; const { name } = variables; const instance = find(get(rest, 'machines', []), ['name', name]); const metadata = get(instance, 'metadata', []) .filter(({ name = '' }) => name === 'user-script') .shift(); return { metadata, instance, loading, error }; } }) )(UserScript);