You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

preloadImage.web.js 665B

123456789101112131415161718192021222324252627282930
  1. // @flow
  2. import { isIconUrl } from './functions';
  3. declare var config: Object;
  4. /**
  5. * Tries to preload an image.
  6. *
  7. * @param {string | Object} src - Source of the avatar.
  8. * @returns {Promise}
  9. */
  10. export function preloadImage(src: string | Object): Promise<string> {
  11. if (isIconUrl(src)) {
  12. return Promise.resolve(src);
  13. }
  14. if (typeof config === 'object' && config.disableThirdPartyRequests) {
  15. return Promise.reject();
  16. }
  17. return new Promise((resolve, reject) => {
  18. const image = document.createElement('img');
  19. image.onload = () => resolve(src);
  20. image.onerror = reject;
  21. image.src = src;
  22. });
  23. }