use async clipboard API (#499)
This commit is contained in:
parent
270df188cb
commit
d49af06fbd
17
routes/_actions/copyText.js
Normal file
17
routes/_actions/copyText.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import { importShowCopyDialog } from '../_components/dialog/asyncDialogs'
|
||||||
|
import { toast } from '../_utils/toast'
|
||||||
|
|
||||||
|
export async function copyText (text) {
|
||||||
|
if (navigator.clipboard) { // not supported in all browsers
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(text)
|
||||||
|
toast.say('Copied to clipboard')
|
||||||
|
return
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let showCopyDialog = await importShowCopyDialog()
|
||||||
|
showCopyDialog(text)
|
||||||
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
import ModalDialog from './ModalDialog.html'
|
import ModalDialog from './ModalDialog.html'
|
||||||
import { store } from '../../../_store/store'
|
import { store } from '../../../_store/store'
|
||||||
import GenericDialogList from './GenericDialogList.html'
|
import GenericDialogList from './GenericDialogList.html'
|
||||||
import { importShowComposeDialog, importShowCopyDialog } from '../asyncDialogs'
|
import { importShowComposeDialog } from '../asyncDialogs'
|
||||||
import { createDialogId } from '../helpers/createDialogId'
|
import { createDialogId } from '../helpers/createDialogId'
|
||||||
import { show } from '../helpers/showDialog'
|
import { show } from '../helpers/showDialog'
|
||||||
import { close } from '../helpers/closeDialog'
|
import { close } from '../helpers/closeDialog'
|
||||||
|
@ -20,6 +20,7 @@ import { setAccountMuted } from '../../../_actions/mute'
|
||||||
import { setAccountFollowed } from '../../../_actions/follow'
|
import { setAccountFollowed } from '../../../_actions/follow'
|
||||||
import { setShowReblogs } from '../../../_actions/setShowReblogs'
|
import { setShowReblogs } from '../../../_actions/setShowReblogs'
|
||||||
import { setDomainBlocked } from '../../../_actions/setDomainBlocked'
|
import { setDomainBlocked } from '../../../_actions/setDomainBlocked'
|
||||||
|
import { copyText } from '../../../_actions/copyText'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
oncreate,
|
oncreate,
|
||||||
|
@ -175,8 +176,8 @@ export default {
|
||||||
async onCopyClicked () {
|
async onCopyClicked () {
|
||||||
let { account } = this.get()
|
let { account } = this.get()
|
||||||
let { url } = account
|
let { url } = account
|
||||||
let showCopyDialog = await importShowCopyDialog()
|
this.close()
|
||||||
showCopyDialog(url)
|
await copyText(url)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
|
|
@ -18,8 +18,8 @@ import { oncreate } from '../helpers/onCreateDialog'
|
||||||
import { setAccountBlocked } from '../../../_actions/block'
|
import { setAccountBlocked } from '../../../_actions/block'
|
||||||
import { setAccountMuted } from '../../../_actions/mute'
|
import { setAccountMuted } from '../../../_actions/mute'
|
||||||
import { setStatusPinnedOrUnpinned } from '../../../_actions/pin'
|
import { setStatusPinnedOrUnpinned } from '../../../_actions/pin'
|
||||||
import { importShowCopyDialog } from '../asyncDialogs'
|
|
||||||
import { setConversationMuted } from '../../../_actions/muteConversation'
|
import { setConversationMuted } from '../../../_actions/muteConversation'
|
||||||
|
import { copyText } from '../../../_actions/copyText'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
oncreate,
|
oncreate,
|
||||||
|
@ -162,17 +162,16 @@ export default {
|
||||||
this.close()
|
this.close()
|
||||||
await setAccountMuted(accountId, !muting, true)
|
await setAccountMuted(accountId, !muting, true)
|
||||||
},
|
},
|
||||||
async onCopyClicked () {
|
|
||||||
let { status } = this.get()
|
|
||||||
let { url } = status
|
|
||||||
let showCopyDialog = await importShowCopyDialog()
|
|
||||||
this.close()
|
|
||||||
showCopyDialog(url)
|
|
||||||
},
|
|
||||||
async onMuteConversationClicked () {
|
async onMuteConversationClicked () {
|
||||||
let { statusId, mutingConversation } = this.get()
|
let { statusId, mutingConversation } = this.get()
|
||||||
this.close()
|
this.close()
|
||||||
await setConversationMuted(statusId, !mutingConversation, true)
|
await setConversationMuted(statusId, !mutingConversation, true)
|
||||||
|
},
|
||||||
|
async onCopyClicked () {
|
||||||
|
let { status } = this.get()
|
||||||
|
let { url } = status
|
||||||
|
await copyText(url)
|
||||||
|
this.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue