Skip to content

Commit 02af632

Browse files
authored
Merge pull request #23 from dhavalveera/thread
Thread
2 parents a985330 + 58c905c commit 02af632

File tree

11 files changed

+72
-10
lines changed

11 files changed

+72
-10
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Social media share buttons for your next React.js, Next.js apps.
2929
- Refind
3030
- Skype
3131
- Telegram
32+
- Threads
3233
- Trello
3334
- Tumblr
3435
- Twitter
@@ -512,6 +513,28 @@ import { TrelloShareBtn } from 'dv-social-share'
512513
513514
---
514515
516+
## ThreadsShare
517+
518+
#### 👨‍💻 Code
519+
520+
521+
```js copy
522+
import { ThreadsShareBtn } from 'dv-social-share'
523+
524+
<ThreadsShareBtn url="https://dv-social-share.vercel.app" title="dv-social-share is a social share buttons for your next React.js & Next.js apps." />
525+
```
526+
527+
#### 📖 ThreadsShareBtn Props
528+
529+
| Props | Type | Default | Description | Required |
530+
| :----------- | :------ | :------ | :---------------------------------------------------------------------------------------------------------------------------- | :------- |
531+
| url | string | | The URL of the to be page. | ✅ |
532+
| title | string | | Description of the shared page. | ❌ |
533+
| openInNewTab | boolean | false | Open share window in a new tab if set to `true`. | ❌ |
534+
| imgConfig | object | | A imgConfig contains width (number; e.g. 32/64), height (number; e.g. 32/64) & bgColor (string; e.g. '#FF0000') for the Image | ❌ |
535+
536+
---
537+
515538
## TumblrShare
516539
517540
#### 👨‍💻 Code

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dv-social-share",
3-
"version": "0.0.6-1",
3+
"version": "0.0.7",
44
"description": "Social media share buttons for your next apps like React, Next.js in TypeScript.",
55
"author": "Dhaval Vira <dhavalveera@gmail.com> (https://github.com/dhavalveera)",
66
"license": "MIT",

rollup.config.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default {
1919
},
2020
],
2121
// external: builtins,
22-
external: ['react'],
22+
external: ['react', 'react-dom'],
2323
plugins: [
2424
resolve(),
2525
babel({
@@ -35,7 +35,7 @@ export default {
3535
// }),
3636
// nodeResolve(),
3737
commonjs({
38-
extensions: ['.js', '.ts', '.tsx'],
38+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
3939
}),
4040
terser(),
4141
],

src/Buttons/ThreadsShare/index.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// UTILS
2+
import { generateQueryParams } from '../../utils'
3+
4+
// Make Share Button => Contains Main Logic
5+
import MakeShareButton from '../../ShareButton'
6+
7+
// Icon
8+
import { ThreadsShareIcon } from '../../Icons'
9+
10+
// CONSTANTS
11+
import { defaultImgConfig, dontOpenShareDialogOnClick, THREADS_NAME } from '../../constants'
12+
13+
type GenerateThreadsLinkType = { title?: string; separator?: string }
14+
15+
type ThreadsShareBtnTypes = {
16+
url: string
17+
title?: string
18+
separator?: string
19+
openInNewTab?: boolean
20+
imgConfig?: {
21+
width?: number
22+
height?: number
23+
bgColor?: string
24+
}
25+
}
26+
27+
const generateThreadsLink = (url: string, { title, separator = ' :: ' }: GenerateThreadsLinkType) => {
28+
return `https://www.threads.net/intent/post${generateQueryParams({ text: title ? title + separator + url : url })}`
29+
}
30+
31+
const ThreadsShareBtn = ({ url, title, separator, openInNewTab, imgConfig }: ThreadsShareBtnTypes) => {
32+
return MakeShareButton(THREADS_NAME, generateThreadsLink(url, { title, separator }), ThreadsShareIcon, openInNewTab || dontOpenShareDialogOnClick, imgConfig || defaultImgConfig)
33+
}
34+
35+
export default ThreadsShareBtn

src/Buttons/WhatsAppShare/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Utils
2-
import { generateQueryParams, isMobileOrTablet } from '../../utils'
2+
import { generateQueryParams } from '../../utils'
33

44
// Make Share Button => Contains Main logic
55
import MakeShareButton from '../../ShareButton'
@@ -25,7 +25,7 @@ type WhatsAppShareBtnTypes = {
2525
}
2626

2727
const generateWhatsAppLink = (url: string, { title, separator = ' :: ' }: GenerateWhatsAppLinkTypes) => {
28-
return `https://${isMobileOrTablet() ? 'api' : 'web'}.whatsapp.com/send${generateQueryParams({ text: title ? title + separator + url : url })}`
28+
return `https://api.whatsapp.com/send${generateQueryParams({ text: title ? title + separator + url : url })}`
2929
}
3030

3131
const WhatsAppShareBtn = ({ url, title, separator, openInNewTab, imgConfig }: WhatsAppShareBtnTypes) => {

src/Icons/ThreadsShareIcon/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const ThreadsShareIcon: string = 'data:image/webp;base64,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'
2+
3+
export default ThreadsShareIcon

src/Icons/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export { default as RedditShareIcon } from './RedditShareIcon'
1717
export { default as RefindShareIcon } from './RefindShareIcon'
1818
export { default as SkypeShareIcon } from './SkypeShare'
1919
export { default as TelegramShareIcon } from './TelegramShareIcon'
20+
export { default as ThreadsShareIcon } from './ThreadsShareIcon'
2021
export { default as TrelloShareIcon } from './TrelloShareIcon'
2122
export { default as TumblrShareIcon } from './TumblrShareIcon'
2223
export { default as TwitterShareIcon } from './TwitterShareIcon'

src/ShareButton/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ const MakeShareButton = (name: string, url: string, Icon: string, openShareDialo
2121
CustomWindow(url, windowConfig, openShareDialogOnClick)
2222
}
2323

24-
console.log({ name, url, Icon, imgConfig })
25-
2624
return createElement(
2725
'button',
2826
{ type: 'button', 'aria-label': `${name}-Share`, title: name, onClick: handleOnClick, className: ShareBtnCss },

src/constants/ButtonNames/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const REDDIT_NAME: string = 'Reddit'
1717
export const REFIND_NAME: string = 'Refind'
1818
export const SKYPE_NAME: string = 'Skype'
1919
export const TELEGRAM_NAME: string = 'Telegram'
20+
export const THREADS_NAME:string = 'Threads'
2021
export const TRELLO_NAME: string = 'Trello'
2122
export const TUMBLR_NAME: string = 'Tumblr'
2223
export const TWITTER_NAME: string = 'Twitter'

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export { default as RedditShareBtn } from './Buttons/RedditShare'
1717
export { default as RefindShareBtn } from './Buttons/RefindShare'
1818
export { default as SkypeShareBtn } from './Buttons/SkypeShare'
1919
export { default as TelegramShareBtn } from './Buttons/TelegramShare'
20+
export { default as ThreadsShareBtn } from './Buttons/ThreadsShare'
2021
export { default as TrelloShareBtn } from './Buttons/TrelloShare'
2122
export { default as TumblrShareBtn } from './Buttons/TumblrShare'
2223
export { default as TwitterShareBtn } from './Buttons/TwitterShare'

0 commit comments

Comments
 (0)