mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
* Replace AppEvents with notifyApp in Explore * Replace AppEvents with notifyApp in Explore-related components
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import memoizeOne from 'memoize-one';
|
|
import { getBackendSrv, config } from '@grafana/runtime';
|
|
import { copyStringToClipboard } from './explore';
|
|
import { dispatch } from 'app/store/store';
|
|
import { notifyApp } from 'app/core/actions';
|
|
import { createErrorNotification, createSuccessNotification } from 'app/core/copy/appNotification';
|
|
|
|
function buildHostUrl() {
|
|
return `${window.location.protocol}//${window.location.host}${config.appSubUrl}`;
|
|
}
|
|
|
|
function getRelativeURLPath(url: string) {
|
|
let path = url.replace(buildHostUrl(), '');
|
|
return path.startsWith('/') ? path.substring(1, path.length) : path;
|
|
}
|
|
|
|
export const createShortLink = memoizeOne(async function (path: string) {
|
|
try {
|
|
const shortLink = await getBackendSrv().post(`/api/short-urls`, {
|
|
path: getRelativeURLPath(path),
|
|
});
|
|
return shortLink.url;
|
|
} catch (err) {
|
|
console.error('Error when creating shortened link: ', err);
|
|
dispatch(notifyApp(createErrorNotification('Error generating shortened link')));
|
|
}
|
|
});
|
|
|
|
export const createAndCopyShortLink = async (path: string) => {
|
|
const shortLink = await createShortLink(path);
|
|
if (shortLink) {
|
|
copyStringToClipboard(shortLink);
|
|
dispatch(notifyApp(createSuccessNotification('Shortened link copied to clipboard')));
|
|
} else {
|
|
dispatch(notifyApp(createErrorNotification('Error generating shortened link')));
|
|
}
|
|
};
|