shlink-web-client/src/utils/helpers/qrCodes.ts

20 lines
625 B
TypeScript
Raw Normal View History

export interface QrCodeCapabilities {
useSizeInPath: boolean;
svgIsSupported: boolean;
}
export type QrCodeFormat = 'svg' | 'png';
export const buildQrCodeUrl = (
shortUrl: string,
size: number,
format: QrCodeFormat,
{ useSizeInPath, svgIsSupported }: QrCodeCapabilities,
): string => {
const sizeFragment = useSizeInPath ? `/${size}` : `?size=${size}`;
const formatFragment = !svgIsSupported ? '' : `format=${format}`;
const joinSymbol = useSizeInPath && svgIsSupported ? '?' : !useSizeInPath && svgIsSupported ? '&' : '';
return `${shortUrl}/qr-code${sizeFragment}${joinSymbol}${formatFragment}`;
};