/*
Copyright (C) 2017 Cloudbase Solutions SRL
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
import React from "react";
import { observer } from "mobx-react";
import styled, { css } from "styled-components";
import configLoader from "@src/utils/Config";
import Generic from "./resources/Generic";
const Wrapper = styled.div``;
const Logo = styled.div`
display: flex;
align-items: center;
justify-content: center;
width: ${props => props.width}px;
height: ${props => props.height}px;
${(props: any) =>
props.url
? css`
background: url("${props.url}") no-repeat center;
`
: ""}
background-size: contain;
`;
const widthHeights = [
{ w: 80, h: 32 },
{ w: 105, h: 42 },
{ w: 185, h: 128 },
{ w: 185, h: 64 },
];
type Props = {
endpoint?: string | null;
height: number;
disabled?: boolean;
white?: boolean;
baseUrl?: string;
onClick?: () => void;
style?: React.CSSProperties;
};
@observer
class EndpointLogos extends React.Component {
static defaultProps: Props = {
height: 64,
};
renderGenericLogo(size: { w: number; h: number }) {
return (
);
}
render() {
const size = widthHeights.find(wh => wh.h === this.props.height);
if (!size) {
return null;
}
let imageUrl: string | null = null;
const provider = this.props.endpoint;
if (
provider &&
Object.keys(configLoader.config.providerNames).indexOf(provider) > -1
) {
imageUrl = `${this.props.baseUrl || ""}/api/logos/${provider}/${size.h}`;
const style = this.props.white
? "white"
: this.props.disabled
? "disabled"
: null;
imageUrl = style ? `${imageUrl}/${style}` : imageUrl;
}
return (
{imageUrl ? null : this.renderGenericLogo(size)}
);
}
}
export default EndpointLogos;