-
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a 'default' network option that changes modal into split dropdown (…
…#39) * Add a 'default' network option that changes modal into split dropdown * Use 'getNetworkButtons' in ShareModal * Remove unused imports
- Loading branch information
1 parent
66c5f89
commit 418af9f
Showing
8 changed files
with
231 additions
and
93 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
import app from 'flarum/forum/app'; | ||
import ItemList from 'flarum/common/utils/ItemList'; | ||
import Button from 'flarum/common/components/Button'; | ||
import classList from 'flarum/common/utils/classList'; | ||
import { data, networkIcons, networks } from './share'; | ||
import pupa from 'pupa'; | ||
|
||
export const getNetworkButton = ({ network, discussion, isRounded = false }) => { | ||
return ( | ||
<Button | ||
className={classList(`Button Button--block Share--${network}`, isRounded && 'Button--rounded')} | ||
icon={`${networkIcons[network] || `fab fa-${network}`} fa-lg fa-fw`} | ||
onclick={onNetworkButtonClick.bind(this, network, discussion)} | ||
> | ||
{app.translator.trans(`fof-share-social.lib.networks.${network}`)} | ||
</Button> | ||
); | ||
}; | ||
|
||
export const onNetworkButtonClick = (network, discussion) => { | ||
const payload = data(discussion); | ||
const action = networks[network]; | ||
|
||
if (typeof action === 'function') { | ||
return action(payload); | ||
} | ||
|
||
const width = 1000; | ||
const height = 500; | ||
const top = $(window).height() / 2 - height / 2; | ||
const left = $(window).width() / 2 - width / 2; | ||
const windowParams = `width=${width}, height= ${height}, top=${top}, left=${left}, status=no, scrollbars=no, resizable=no`; | ||
|
||
for (const dataKey in payload) { | ||
payload[dataKey] = encodeURIComponent(payload[dataKey]); | ||
} | ||
|
||
window.open(pupa(action, payload), app.title, windowParams); | ||
}; | ||
|
||
export const getNetworkButtons = (discussion, isRounded) => { | ||
const list = new ItemList(); | ||
const networks = app.forum.attribute('fof-share-social.networks'); | ||
const def = app.forum.attribute('fof-share-social.default'); | ||
|
||
for (const network of networks) { | ||
// Do not add native share option if not supported | ||
if (network === 'native' && !navigator.canShare?.(data(discussion))) continue; | ||
|
||
list.add(network, getNetworkButton({ network, discussion, isRounded })); | ||
} | ||
|
||
if (list.has(def)) { | ||
list.setPriority(def, 1000); | ||
} | ||
|
||
return list; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
import app from 'flarum/forum/app'; | ||
import { getPlainContent, truncate } from 'flarum/common/utils/string'; | ||
import pupa from 'pupa'; | ||
|
||
export const networks = { | ||
facebook: '//facebook.com/sharer/sharer.php?u={url}', | ||
twitter: '//twitter.com/share?url={url}&text={title}', | ||
linkedin: '//linkedin.com/shareArticle?mini=true&url={url}&title={title}&summary={description}', | ||
reddit: '//www.reddit.com/submit?url={url}&title={title}', | ||
whatsapp: '//api.whatsapp.com/send/?phone&text={title}%20{url}', | ||
telegram: '//telegram.me/share/url?url={url}&text={title}', | ||
|
||
vkontakte: '//vk.com/share.php?url={url}&title={title}&description={description}', | ||
odnoklassniki: '//connect.ok.ru/offer?url={url}', | ||
my_mail: '//connect.mail.ru/share?url={url}&title={title}&description={description}', | ||
qq: '//connect.qq.com/widget/shareqq/iframe_index.html?url={url}&title={title}', | ||
qzone: '//sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={url}&summary={description}&title={title}', | ||
|
||
native: (data) => navigator.share(getNativeData(data)), | ||
}; | ||
export const networkIcons = { | ||
vkontakte: 'fab fa-vk', | ||
my_mail: 'fas fa-at', | ||
qq: 'fab fa-qq', | ||
qzone: 'fas fa-star', | ||
native: 'fas fa-share-square', | ||
}; | ||
|
||
export const data = (discussion) => { | ||
const url = discussion.shareUrl(); | ||
const title = app.title; | ||
const description = (discussion.firstPost() && truncate(getPlainContent(discussion.firstPost()?.contentHtml()), 150, 0)) || ''; | ||
|
||
return { url, title, description }; | ||
}; | ||
|
||
export const getNativeData = ({ title, description, url }) => ({ title, text: description, url }); | ||
|
||
export const canNativeShare = (discussion) => { | ||
return navigator.canShare?.(getNativeData(discussion)); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.