-
-
Notifications
You must be signed in to change notification settings - Fork 366
/
Copy pathuseSocialShare.ts
62 lines (53 loc) · 1.69 KB
/
useSocialShare.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import type { Prefix } from '@kodadot1/static'
import { URLS } from '@/utils/constants'
export default function () {
const route = useRoute()
const fullPathShare = ref(`${window.location.origin}${route.fullPath}`)
const open = (url: string) => {
window.open(url, '_blank')
}
const shareOnX = (
text: string,
url: string = fullPathShare.value,
via: string | null = 'KodaDot',
) => {
const shareUrl = new URL('https://twitter.com/intent/tweet')
shareUrl.searchParams.set('text', text)
via && shareUrl.searchParams.set('via', via)
shareUrl.searchParams.set('url', url)
open(shareUrl.toString())
}
const shareOnTelegram = (text: string, url: string = fullPathShare.value) => {
const shareUrl = new URL('https://t.me/share/url')
shareUrl.searchParams.set('url', url)
shareUrl.searchParams.set('text', text)
open(shareUrl.toString())
}
const shareOnFarcaster = (
text: string,
embeds: string[] = [fullPathShare.value],
channel: string = 'koda',
) => {
const url = new URL('https://warpcast.com/~/compose')
url.searchParams.set('text', text)
url.searchParams.set('channelKey', channel)
embeds.forEach(embed => url.searchParams.append('embeds[]', embed))
open(url.toString())
}
const getCollectionFrameUrl = (chain: Prefix, collectionId: string) =>
`${URLS.koda.frame}/${chain}/${collectionId}`
const shareCollectionOnFarcaster = (
chain: Prefix,
collectionId: string,
text: string,
) => {
shareOnFarcaster(text, [getCollectionFrameUrl(chain, collectionId)])
}
return {
shareOnX,
shareOnTelegram,
shareOnFarcaster,
shareCollectionOnFarcaster,
getCollectionFrameUrl,
}
}