diff --git a/src/shareon.ts b/src/shareon.ts index 79e27a0..6f517c4 100644 --- a/src/shareon.ts +++ b/src/shareon.ts @@ -1,11 +1,9 @@ interface PublishPreset { url: string, title: string, - extra: { - media: string, - text: string, - via: string, - } + media: string, + text: string, + via: string, } type UrlBuilder = (data: PublishPreset) => string; @@ -14,57 +12,80 @@ const NETWORKS: { [name: string]: UrlBuilder } = { facebook: (d) => `https://www.facebook.com/sharer/sharer.php?u=${d.url}`, linkedin: (d) => `https://www.linkedin.com/shareArticle?mini=true&url=${d.url}&title=${d.title}`, messenger: (d) => `https://www.facebook.com/dialog/send?app_id=3619024578167617&link=${d.url}&redirect_uri=${d.url}`, - odnoklassniki: (d) => `https://connect.ok.ru/offer?url=${d.url}&title=${d.title}${d.extra.media ? `&imageUrl=${d.extra.media}` : ''}`, - pinterest: (d) => `https://pinterest.com/pin/create/button/?url=${d.url}&description=${d.title}${d.extra.media ? `&media=${d.extra.media}` : ''}`, + odnoklassniki: (d) => `https://connect.ok.ru/offer?url=${d.url}&title=${d.title}${d.media ? `&imageUrl=${d.media}` : ''}`, + pinterest: (d) => `https://pinterest.com/pin/create/button/?url=${d.url}&description=${d.title}${d.media ? `&media=${d.media}` : ''}`, pocket: (d) => `https://getpocket.com/edit.php?url=${d.url}`, reddit: (d) => `https://www.reddit.com/submit?title=${d.title}&url=${d.url}`, - telegram: (d) => `https://telegram.me/share/url?url=${d.url}${d.extra.text ? `&text=${d.extra.text}` : ''}`, - twitter: (d) => `https://twitter.com/intent/tweet?url=${d.url}&text=${d.title}${d.extra.via ? `&via=${d.extra.via}` : ''}`, - viber: (d) => `viber://forward?text=${d.title}%0D%0A${d.url}${d.extra.text ? `%0D%0A%0D%0A${d.extra.text}` : ''}`, - vkontakte: (d) => `https://vk.com/share.php?url=${d.url}&title=${d.title}${d.extra.media ? `&image=${d.extra.media}` : ''}`, - whatsapp: (d) => `whatsapp://send?text=${d.title}%0D%0A${d.url}${d.extra.text ? `%0D%0A%0D%0A${d.extra.text}` : ''}`, + telegram: (d) => `https://telegram.me/share/url?url=${d.url}${d.text ? `&text=${d.text}` : ''}`, + twitter: (d) => `https://twitter.com/intent/tweet?url=${d.url}&text=${d.title}${d.via ? `&via=${d.via}` : ''}`, + viber: (d) => `viber://forward?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`, + vkontakte: (d) => `https://vk.com/share.php?url=${d.url}&title=${d.title}${d.media ? `&image=${d.media}` : ''}`, + whatsapp: (d) => `whatsapp://send?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`, }; -function initShareonChild(child: HTMLElement, preset: PublishPreset) { - if (child) { - child.classList.forEach((cls) => { - if (Object.prototype.hasOwnProperty.call(NETWORKS, cls)) { - const url = NETWORKS[cls](preset); - if (child.tagName.toLowerCase() === 'a') { - child.setAttribute('href', url); - child.setAttribute('rel', 'noopener noreferrer'); - child.setAttribute('target', '_blank'); - } else { - child.addEventListener('click', () => { window.open(url, '_blank', 'noopener,noreferrer').opener = null; }); - } - } - }); - } -} - const initializeShareon = () : void => { const shareonContainers = document.getElementsByClassName('shareon'); + // iterate over